Skip to main content

Python IPFS HTTP CLIENT library

Project description

py-ipfs-http-client

standard-readme compliant Build Status

Python IPFS HTTP Client Library

Check out the HTTP Client reference for the full command reference.

Important: The ipfsapi PIP package and Python module have both been renamed to ipfshttpclient
The legacy ipfs-api/ipfsApi package/module will only work for IPFS 0.3.x and Python 2 and is deprecated. Please upgrade!

Note: This library constantly has to change to stay compatible with the IPFS HTTP API. Currently, this library is tested against go-ipfs v0.4.10. You may experience compatibility issues when attempting to use it with other versions of go-ipfs.

Table of Contents

Install

Install with pip:

pip install ipfshttpclient

Usage

Basic use-case (requires a running instance of IPFS daemon):

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

Administrative functions:

>>> http_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='}

Pass in API options:

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

Add a directory and match against a filename pattern:

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

Or add a directory recursively:

>>> http_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'}]

This module also contains some helper functions for adding strings and JSON to IPFS:

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

Documentation

Documentation (currently mostly API documentation unfortunately) is available on IPFS:

https://ipfs.io/ipns/QmZ86ow1byeyhNRJEatWxGPJKcnQKG7s51MtbHdxxUddTH/Software/Python/ipfsapi/

The ipfs command-line Client documentation may also be useful in some cases.

Important changes from 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 (reference)
    • 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 (reference)
  • 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

Featured Projects

Projects that currently use py-ipfs-http-client. If your project isn't here, feel free to submit a PR to add it!

Contribute

IRC

Join us on IRC at #ipfs on chat.freenode.net if you have any suggestions or questions, or if you just want to discuss IPFS and python.

Bug reports

You can submit bug reports using the GitHub issue tracker.

Pull requests

Pull requests are welcome. Before submitting a new pull request, please make sure that your code passes both the code formatting check:

$ tox -e codestyle

And the unit tests:

$ tox

You can arrange to run the code style tests automatically before each commit by installing a pre-commit hook:

$ ./tools/pre-commit --install

Please make sure to include new unit tests for new features or changes in behavior.

License

This code is distributed under the terms of the MIT license. Details can be found in the file LICENSE in this repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipfshttpclient-0.4.10.tar.gz (78.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ipfshttpclient-0.4.10-py2.py3-none-any.whl (153.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file ipfshttpclient-0.4.10.tar.gz.

File metadata

  • Download URL: ipfshttpclient-0.4.10.tar.gz
  • Upload date:
  • Size: 78.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.21.0

File hashes

Hashes for ipfshttpclient-0.4.10.tar.gz
Algorithm Hash digest
SHA256 db5f7a1e8fb9800de85d197305461f6082cfb9d941d6c7ecb96071b2c6cba570
MD5 92d9619ade9b1f722646d94f4048d620
BLAKE2b-256 2b6725a7b3d96a03272850ed449c414138a79c3002cb49b2dc2a2afa684a20ef

See more details on using hashes here.

File details

Details for the file ipfshttpclient-0.4.10-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for ipfshttpclient-0.4.10-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 db728ed0902319e4dab089d3d289287b2dc0c986d422e68793c4a06f2224754b
MD5 fecf3eb4624ae4b7c9486a5702d677db
BLAKE2b-256 dcb0bdb55b829d763d5f2347a7add850042001692aaf1445634ec8c993219a72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page