python ipfs http客户端库
ipfshttpclient的Python项目详细描述
py ipfs http客户端
查看the HTTP Client reference以获取完整的命令引用。
重要:已将ipfsapi
pip包和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/
在某些情况下,ipfs
command-line Client documentation也可能有用。
来自ipfsapi 0.4.x
的重要变化
- 已重命名了大量方法,请确保在尝试升级之前,代码运行时没有使用
ipfsapi
的最新版本发出警告! - python包已从
ipfsapi
重命名为ipfshttpclient
- pip模块已从
ipfsapi
重命名为ipfshttpclient
(请更新您的需求文件) - 由于安全问题,
client.*_pyobj
系列函数已被删除 client.bitswap.unwant
方法已被删除–其端点已被go ipfsclient.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存储库。
贡献
IRC
如果您有任何建议或问题,请在#ipfs
的chat.freenode.net加入我们的IRC,
或者你只是想讨论ipfs和python。
错误报告
您可以使用GitHub issue tracker提交错误报告。
拉取请求
欢迎拉取请求。在提交新的请求之前,请 确保你的代码通过了code formatting检查:
$ tox -e codestyle
单元测试:
$ tox
您可以安排在每次提交之前自动运行代码样式测试
安装一个pre-commit
挂钩:
$ ./tools/pre-commit --install
请确保在 行为。我们的目标是在某个时候把覆盖率提高到100%。
许可证
这段代码是根据MIT license的条款发布的。详细信息可在文件中找到 LICENSE在这个存储库中。