python ipfs http客户端库

ipfshttpclient的Python项目详细描述


py ipfs http客户端

standard-readme compliantBuild Status

Python IPFS HTTP Client Library

查看the HTTP Client reference以获取完整的命令引用。

重要:已将ipfsapipip包和python模块重命名为ipfshttpclient! 有关详细信息,请参见relevant section of the README

注意:此库必须不断更改才能与ipfs http api保持兼容。 目前,这个库是根据go-ipfs v0.4.19进行测试的。 在尝试将其与其他版本的go-ipfs一起使用时,可能会遇到兼容性问题。

以下版本已明确列出已知兼容性问题:

  • 0.4.20

目录

安装

使用pip安装:

pip install ipfshttpclient

用法

基本用例(需要ipfs守护进程的运行实例):

>>>importipfshttpclient>>>client=ipfshttpclient.connect('127.0.0.1',5001)>>>res=client.add('test.txt')>>>res{'Hash':'QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb22','Name':'test.txt'}>>>client.cat(res['Hash'])'fdsafkljdskafjaksdjf\n'

对于真实的脚本,可以使用上下文管理器重用TCP连接,或者在使用后手动关闭会话:

importipfshttpclient# Share TCP connections using a context managerwithipfshttpclient.connect()asclient:hash=client.add('test.txt')['Hash']print(client.stat(hash))# Share TCP connections until the client session is closedclassSomeObject:def__init__(self):self._client=ipfshttpclient.connect(session=True)defdo_something(self):hash=self._client.add('test.txt')['Hash']print(self._client.stat(hash))defclose(self):# Call this when your doneself._client.close()

管理功能:

>>>client.id(){'Addresses':['/ip4/127.0.0.1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS','/ip6/::1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS'],'AgentVersion':'go-ipfs/0.4.10','ID':'QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS','ProtocolVersion':'ipfs/0.1.0','PublicKey':'CAASpgIwgg ... 3FcjAgMBAAE='}

传入API选项:

>>>client.pin_ls(type='all'){'Keys':{'QmNMELyizsfFdNZW3yKTi1SE2pErifwDTXx6vvQBfwcJbU':{'Count':1,'Type':'indirect'},'QmNQ1h6o1xJARvYzwmySPsuv9L5XfzS4WTvJSTAWwYRSd8':{'Count':1,'Type':'indirect'},

添加目录并与文件名模式匹配:

>>>client.add('photos',pattern='*.jpg')[{'Hash':'QmcqBstfu5AWpXUqbucwimmWdJbu89qqYmE3WXVktvaXhX','Name':'photos/photo1.jpg'},{'Hash':'QmSbmgg7kYwkSNzGLvWELnw1KthvTAMszN5TNg3XQ799Fu','Name':'photos/photo2.jpg'},{'Hash':'Qma6K85PJ8dN3qWjxgsDNaMjWjTNy8ygUWXH2kfoq9bVxH','Name':'photos/photo3.jpg'}]

或者递归地添加目录:

>>>client.add('fake_dir',recursive=True)[{'Hash':'QmQcCtMgLVwvMQGu6mvsRYLjwqrZJcYtH4mboM9urWW9vX','Name':'fake_dir/fsdfgh'},{'Hash':'QmNuvmuFeeWWpxjCQwLkHshr8iqhGLWXFzSGzafBeawTTZ','Name':'fake_dir/test2/llllg'},{'Hash':'QmX1dd5DtkgoiYRKaPQPTCtXArUu4jEZ62rJBUcd5WhxAZ','Name':'fake_dir/test2'},{'Hash':'Qmenzb5J4fR9c69BbpbBhPTSp2Snjthu2hKPWGPPJUHb9M','Name':'fake_dir'}]

该模块还包含一些帮助函数,用于向ipfs添加字符串和json:

>>>lst=[1,77,'lol']>>>client.add_json(lst)'QmQ4R5cCUYBWiJpNL7mFe4LDrwD6qBr5Re17BoRAY9VNpd'>>>client.get_json(_)[1,77,'lol']

文档

文档(目前主要是api文档,不幸的是)可在ipfs上获得:

https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/

在某些情况下,ipfscommand-line Client documentation也可能有用。

来自ipfsapi 0.4.x

的重要变化
  • 已重命名了大量方法,请确保在尝试升级之前,代码运行时没有使用ipfsapi的最新版本发出警告!
  • python包已从ipfsapi重命名为ipfshttpclient
  • pip模块已从ipfsapi重命名为ipfshttpclient(请更新您的需求文件)
  • 由于安全问题,client.*_pyobj系列函数已被删除
  • client.bitswap.unwant方法已被删除–其端点已被go ipfs
  • client.files.file_ls方法已被删除-已弃用很长一段时间,请使用client.ls代替
  • client.add传递参数列表现在将失败,只需传递几个单独的参数就可以了
  • 有些函数也可能返回多个项目,现在只返回一个项目时也将返回一个列表(不要担心,除非它真的为您中断)
  • 现在使用multiaddr来描述api deamon位置,因此不必执行ipfshttpclient.connect(host, port)来传递网络地址参数,使用:
    • ipfshttpclient.connect("/dns/<host>/tcp/<port>/http")(对于主机名,例如localhost
    • ipfshttpclient.connect("/ip4/<IP-address>/tcp/<port>/http")(对于IPv4地址)
    • ipfshttpclient.connect("/ip6/<IP-address>/tcp/<port>/http")(对于ipv6地址)
    • 使用…/https而不是…/http使用https连接到api deamon
  • 客户端现在支持keeping session contexts around between API calls,您可能应该在代码中使用此工具

感谢你的“阿里巴巴商人”、“领主”和“拉德菲什”(按主观贡献排序)帮助我们实现了这一目标!

特色项目

当前使用py ipfs http客户端的项目。如果你的项目不在这里,请随时提交一个公关添加它!

  • git-remote-ipfs允许用户从ipfs网络推送和拉取git存储库。
  • ^{a23 }接口使用IPFS进行分布式索引和重放的Web存档(WARC)文件。

贡献

IRC

如果您有任何建议或问题,请在#ipfschat.freenode.net加入我们的IRC, 或者你只是想讨论ipfs和python。

错误报告

您可以使用GitHub issue tracker提交错误报告。

拉取请求

欢迎拉取请求。在提交新的请求之前,请 确保你的代码通过了code formatting检查:

$ tox -e codestyle

单元测试:

$ tox

您可以安排在每次提交之前自动运行代码样式测试 安装一个pre-commit挂钩:

$ ./tools/pre-commit --install

请确保在 行为。我们的目标是在某个时候把覆盖率提高到100%。

许可证

这段代码是根据MIT license的条款发布的。详细信息可在文件中找到 LICENSE在这个存储库中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?