Code Monkey home page Code Monkey logo

py-ipfs-api's Introduction

py-ipfs-api

standard-readme compliant Build Status

Python IPFS HTTP Client Library

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.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 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.4.10',
 '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', 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:

>>> 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 and JSON to IPFS:

>>> lst = [1, 77, 'lol']
>>> client.add_json(lst)
'QmQ4R5cCUYBWiJpNL7mFe4LDrwD6qBr5Re17BoRAY9VNpd'
>>> 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-api. 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.

py-ipfs-api's People

Contributors

amstocker avatar ntninja avatar whereswaldon avatar alexander255 avatar larsks avatar moreati avatar nmarley avatar fredthomsen avatar heaven00 avatar jlstack avatar resoley avatar aliabbasmerchant avatar dmzimmerman avatar daviddias avatar emmnx avatar ikreymer avatar ingokeck avatar ivanlulyf avatar marpett avatar machawk1 avatar micxjo avatar pjz avatar richardlitt avatar thekysek avatar zmg avatar sunnya97 avatar

Watchers

James Cloos avatar Rishabh Thaney avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.