Skip to main content

IPFS API Bindings for Python

Project description

image0 image1 image2 standard-readme compliant image4 Build Status

A python client library for the IPFS API

Check out the client API reference for the full command reference.

Important: The py-ipfs-api PIP package and Python module have both been renamed to ipfsapi (no dash, lower-case a).
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.9. 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 ipfsapi

Usage

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

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

Administrative functions:

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

Pass in API options:

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

Add a directory and match against a filename pattern:

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

Or add a directory recursively:

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

This module also contains some helper functions for adding strings, json, and even python objects to IPFS:

>>> lst = [1, 77, 'lol']
>>> api.add_pyobj(lst)
'QmRFqz1ABQtbMBDfjpMubTaginvpVnf58Y87gheRzGfe4i'
>>> api.get_pyobj(_)
[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

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 pep8 formatting check:

$ tox -e pep8

And the unit tests:

$ tox

You can arrange to run the pep8 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

ipfsapi-0.4.1.tar.gz (37.1 kB view details)

Uploaded Source

Built Distribution

ipfsapi-0.4.1-py2.py3-none-any.whl (41.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file ipfsapi-0.4.1.tar.gz.

File metadata

  • Download URL: ipfsapi-0.4.1.tar.gz
  • Upload date:
  • Size: 37.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ipfsapi-0.4.1.tar.gz
Algorithm Hash digest
SHA256 5221a5b8e6b1d8502b59d137e0e9ffb18051a460775ac1d34b9575056c344f61
MD5 fbafde085af02fbc76ee8e5471a16377
BLAKE2b-256 72c3009c59bb4222682354638b9f1fbb541479dcd7060a07064817aeca462db5

See more details on using hashes here.

Provenance

File details

Details for the file ipfsapi-0.4.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for ipfsapi-0.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 09fb3e404a20a8b68b83b787077ad08702fb2e7afc6cd3e1cf596a98f34710bf
MD5 e91512a320afebc40f0eca421ac25a38
BLAKE2b-256 a859f375ed406062f4de1cf38e0519573849c8a0dc2510990ad75e29b467bddd

See more details on using hashes here.

Provenance

Supported by

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