博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IPFS 服务的Python访问
阅读量:6709 次
发布时间:2019-06-25

本文共 3772 字,大约阅读时间需要 12 分钟。

hot3.png

IPFS 服务的Python访问

py-ipfs-api提供python api对IPFS服务通过http gateway进行访问,需要运行一个本地的IPFS daemon。是IPFS的纯Python语言实现,本身就具有IPFS Daemon功能。

  • 项目源码:
  • IPFS Daemon部署参考:

查看 ,获取完整的命令参考。

重要: The py-ipfs-api PIP package 和 Python module 已经都更名为 ipfsapi (没有横线, 小写的 a)。

原来的 ipfs-api/ipfsApi package/module 只用于 IPFS 0.3.x 和 Python 2,已经过时。!

Note: 该库尽可能保持 IPFS HTTP API的兼容性。目前,经过测试 。如果与 go-ipfs的其它版本遇到兼容性问题,可以到 提交issue报告。

安装

通过 pip 进行安装:

pip install ipfsapi

用法

基本用法 (需要已经有一个运行的 IPFS 服务实例):

import ipfsapiapi = ipfsapi.connect('127.0.0.1', 5001)res = api.add('test.txt')res{'Hash': 'QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb22', 'Name': 'test.txt'}api.cat(res['Hash'])'fdsafkljdskafjaksdjf\n'

管理功能:

api.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参数:

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

添加目录,指定文件名类型匹配:

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

递归添加目录:

api.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'}]

辅助函数,添加字符串和JSON等资源:

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

综合

import ipfsapi# 连接IPFS,需要先启动节点服务器daemonapi = ipfsapi.connect('127.0.0.1', 5001)# 查看节点IDapi.id()# 上传文件res = api.add('test.txt')# 上传目录res = api.add('pub_dir', recursive=True)# 查看文件内容res = api.cat('QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb23')# 下载文件res = api.get('QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb23')

文档

可用的IPFS文档 (目前的大部分 API 文档) :

这个客户端命令行文档(ipfs )也许有用。

重要变化,从ipfsApi 0.2.x开始

  • The Python package has been renamed from ipfsApi to ipfsapi
  • The PIP module has been renamed from ipfs-api to ipfsapi (please update your requirement files)
  • A lot of changes in the internal code
    • Commands have been completely removed
    • Usage of requests or other libraries is considered an implementation detail from now on
  • Most parts of the library (except for Client()) are now considered internal and may therefore break at any time ()
    • We will try to keep breakage for these modules at a minimum
    • If you require stabilisation of some feature please open an issue with the feature in question and your preceived use-case
  • Raised exceptions have been completely changed and are now documented with guaranteed backwards compatibility ()
  • The new ipfsapi.connect() function allows creating a Client instance, while also checking whether a compatible IPFS daemon instance is actually available
  • Methods in Client() now have parameters for options

其它项目

使用 py-ipfs-api的项目。如果你的项目希望添加,可以提交 PR 给开发者!

  • 允许push 和 pull git repositories,使用 IPFS network。
  • interfaces web archive () 文件,用于distributed indexing 和 replay,使用 IPFS。

转载于:https://my.oschina.net/u/2306127/blog/1934093

你可能感兴趣的文章
HMTL5的 video 在IOS7中碰到的坑
查看>>
递推DP UVA 590 Always on the run
查看>>
设备读写方式
查看>>
实验箱FPGA部分测试报告及A8与FPGA链接测试报告
查看>>
CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第一件事就是移植串口驱动,重定向 printf...
查看>>
使用docker 安装 GITLIB
查看>>
既完美又可爱的拖拽(原生js)
查看>>
linux mysql 找不到 <mysql/mysql.h>
查看>>
JS-过滤敏感词【RegExp】
查看>>
HTC G11短信为什么对单独一个人发不出去??!!!!跪求解啊!!!!
查看>>
ObservableCollection 与list
查看>>
在工作空间中构建和使用catkin包
查看>>
Oracle RAC 归档 与 非归档 切换
查看>>
main函数的参数
查看>>
C++ AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用
查看>>
mongodb sort
查看>>
crossplatform---Node.js Applications with VS Code
查看>>
winform线程间操作UI的五种方法
查看>>
【第38题】2019年OCP认证12C题库062考试最新考试原题
查看>>
tree
查看>>