Skip to main content

IPFS Library for Python

Project description

ipfslib - Python IPFS Library

Simple wrapper for IPFS Kubo RPC API in Python

Installation

py -m pip install ipfslib

Connect to API

First you need to create an object of the Connect class. For most usecases you don't need to specify any parameter as it's taking IPFS standard values:

import ipfslib
api = ipfslib.Connect()

If your API doesn't run on 127.0.0.1:5001, you can specify your own API endpoint:

import ipfslib
api = ipfslib.Connect("127.0.0.1", 5001)

Interacting with IPFS

There are some tools to interact with the IPFS network. But as this library is still in development some of the functions could change in behaviour any time.


IPFS.add()

Adding files to IPFS is simple.

import ipfslib
api = ipfslib.Connect()

cid = ipfslib.IPFS.add(api, "helloworld.txt")
print(cid)

This function can take the parameter mode. If 't' is passed, the file is opened in read mode (r). If 'b' is passed, then the file is opened in read byte mode (rb).


IPFS.cat()

Getting files from IPFS by the IPFS-Path. IPFS-Paths start with /ipfs/ or /ipns/.

import ipfslib
api = ipfslib.Connect()

path = "/ipfs/QmQrXZ4iXdEKQMiQT6GRg2Wy3vxb9exR25sYdaqoHwWWuR"
text = ipfslib.IPFS.cat(api, path)

print(text)

This function can also take a mode Parameter. It can either be set to 't' for "Text Mode", which returns a string in plain text. The other mode is 'b', which returns a string with byte data. This can be useful to retreive imagages from IPFS.

import ipfslib
api = ipfslib.Connect()

path = "/ipfs/bafkreibih73gfbpgkmskacqtlsr4vtp47lmx24skh7jv27bnhsmhtivbeq"
data = ipfslib.IPFS.cat(api, path, mode='b')

with open('cat.png', 'wb') as img:
    img.write(data)

IPFS.get()

With this function you can retreive data from an IPFS content identifier (CID).

import ipfslib
api = ipfslib.Connect()

cid = "QmQrXZ4iXdEKQMiQT6GRg2Wy3vxb9exR25sYdaqoHwWWuR"
text = ipfslib.IPFS.get(api, cid)

print(text)

This function can also take the mode parameter, which can be either set to 't' or 'b'. Read IPFS.cat() above to learn more.


IPFS.rem()

Remove files from being provided to IPFS by their CID.

import ipfslib
api = ipfslib.Connect()

cid = "QmQrXZ4iXdEKQMiQT6GRg2Wy3vxb9exR25sYdaqoHwWWuR"
ipfslib.IPFS.rem(cid)

IPFS.resolve()

Resolve IPNS names to get the CID they're pointing to.

import ipfslib
api = ipfslib.Connect()

ipns_name = "k51qzi5uqu5dk37cdlr3ztr4457txgqmukmiex8ohkzyeeqpwfph2e21sks16s"
cid = ipfslib.IPFS.resolve(api, ipns_name)

print(cid)

Interacting with IPNS Keys

Most of these tools can be used while offline, except of course ipfslib.Key.publish().


Key.generate()

This let's you generate a new IPNS Key.

import ipfslib
api = ipfslib.Connect()

ipns_name = ipfslib.Key.generate(api, "test_key")

print(ipns_name)

Key.list()

Returns a list with dictionaries for every key. Each entry in the list has two keys (Name and Id). Name is the local name under which the key is stored. Id is the public IPNS Name of the key.

import ipfslib
api = ipfslib.Connect()

keys = ipfslib.Key.list(api)

# Get the IPNS name of the Key with the name "test_key"
for key in keys:
    if key['Name'] == 'test_key':
        ipns_name = key['Id']
        break

print(ipns_name)

Key.publish()

This let's you link a CID to your IPNS Name.

import ipfslib
api = ipfslib.Connect()

cid = "QmQrXZ4iXdEKQMiQT6GRg2Wy3vxb9exR25sYdaqoHwWWuR"

ipfslib.Key.publish(api, cid, key_name='test_key')

If no key name is given to publish to, it will automatically publish to the 'self' key, which is your node's main key.


Key.remove()

With this function you can remove previously generated keys.

import ipfslib
api = ipfslib.Connect()

ipfslib.Key.remove(api, key_name='test_key')

If you try to remove a non exsistent key the function will throw an exception.


Key.rename()

This let's you rename your IPNS keys locally.

import ipfslib
api = ipfslib.Connect()

old_name = "test_key"
new_name = "project_key"

ipfslib.Key.rename(api, old_name, new_name)

Note

That's actually it for Version 0.1, thank you for considering to use my library. You can check out my blog to find out how I made this.

Blog: https://blog.remboldt.eu/ipfslib/
GitHub: https://github.com/remboldt/ipfslib/

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

ipfslib-0.1.10.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

ipfslib-0.1.10-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file ipfslib-0.1.10.tar.gz.

File metadata

  • Download URL: ipfslib-0.1.10.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.25.1 requests-toolbelt/1.0.0 urllib3/1.26.5 tqdm/4.65.0 importlib-metadata/4.6.4 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.6 CPython/3.10.12

File hashes

Hashes for ipfslib-0.1.10.tar.gz
Algorithm Hash digest
SHA256 b629868d177f371e4fbe5cdac0ba69b707e6e02c688122c2484c84a75e9b8057
MD5 4a7b12dd82293df207e836a8678e1a56
BLAKE2b-256 c56335e2cb337320dd7fa7624548141dc1b3ca4cf389e9863d83efe924c02fe2

See more details on using hashes here.

File details

Details for the file ipfslib-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: ipfslib-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.25.1 requests-toolbelt/1.0.0 urllib3/1.26.5 tqdm/4.65.0 importlib-metadata/4.6.4 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.6 CPython/3.10.12

File hashes

Hashes for ipfslib-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 b367844d62a4c3b2e8bd8f22f11e4b9ca773002a606d66101e7e309bc69d9f57
MD5 11ad3939db57911e59a6f137bc50334c
BLAKE2b-256 50c6f71eb5657d8e340a71ef82cdede6e899d4ef9f49da439151e193aaa46e1b

See more details on using hashes here.

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