source
RequestsTooQuick
RequestsTooQuick (retry_after=None)
Base class for I/O related errors.
source
AsyncRequestSession
AsyncRequestSession (loop=None, adapter={'pool_connections': 100,
'pool_maxsize': 100}, **kwargs)
Initialize self. See help(type(self)) for accurate signature.
source
AsyncIPFSFileSystem
AsyncIPFSFileSystem (*args, **kwargs)
Async file operations, default implementations
Passes bulk operations to asyncio.gather for concurrent operation.
Implementations that have concurrent batch operations and/or async methods should inherit from this class instead of AbstractFileSystem. Docstrings are copied from the un-underscored method in AbstractFileSystem, if not given.
Changing Gateways
To learn more about the fsspec api, please see the dock here
Register ipfsspec to fsspec,
import fsspec, os, io, glob, asyncio
from ipfspy.ipfsspec.asyn import AsyncIPFSFileSystem
from fsspec import register_implementation
# register_implementation(IPFSFileSystem.protocol, IPFSFileSystem)
register_implementation(AsyncIPFSFileSystem.protocol, AsyncIPFSFileSystem)
# with fsspec.open("ipfs://QmZ4tDuvesekSs4qM5ZBKpXiZGun7S2CYtEZRB3DYXkjGx", "r") as f:
# print(f.read())
class fs:
ipfs = fsspec.filesystem("ipfs" )
file = fsspec.filesystem("file" )
fs.ipfs.change_gateway_type = 'public'
fs.ipfs.change_gateway_type = 'local'
Using Local
node
Put File
fs.ipfs.put(path= 'output/test.txt' , rpath= '/test_put_file' )
'QmbwFKzLj9m2qwBFYTVrBotf4QujvzTb1GBV9wFcNPMctm'
Put Folder
fs.ipfs.put(path= 'output/fol1/fol2' , rpath= '/test_put_folder' , recursive= True , return_cid= False )
[{'Name': 'fol2/test2.txt',
'Hash': 'QmZCFrtagSLhiHKAywF8oWxapXtR6JiJ8GeENASyhLvvyu',
'Size': '28'},
{'Name': 'fol2/test.txt',
'Hash': 'QmbwFKzLj9m2qwBFYTVrBotf4QujvzTb1GBV9wFcNPMctm',
'Size': '28'},
{'Name': 'fol2/test3.txt',
'Hash': 'QmWT5UmZ4zoXX9GsXpPtEMVP5m1VZ7N6rdxnXHGNkFKqFJ',
'Size': '36'},
{'Name': 'fol2/.ipynb_checkpoints',
'Hash': 'QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn',
'Size': '4'},
{'Name': 'fol2',
'Hash': 'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54',
'Size': '312'}]
Cat File
fs.ipfs.cat('QmbwFKzLj9m2qwBFYTVrBotf4QujvzTb1GBV9wFcNPMctm' )
b"\n'''\nFirst file\n'''\n"
Cat Folder
fs.ipfs.cat('QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54' )
{'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/test.txt': b"\n'''\nFirst file\n'''\n",
'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/test2.txt': b'```\nsecond file\n```\n',
'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/test3.txt': b"\n'''\nthis is third file\n'''\n"}
List a folder
fs.ipfs.ls('QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54' )
[{'name': 'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/.ipynb_checkpoints',
'CID': 'QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn',
'type': 'directory',
'size': 0},
{'name': 'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/test.txt',
'CID': 'QmbwFKzLj9m2qwBFYTVrBotf4QujvzTb1GBV9wFcNPMctm',
'type': 'file',
'size': 20},
{'name': 'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/test2.txt',
'CID': 'QmZCFrtagSLhiHKAywF8oWxapXtR6JiJ8GeENASyhLvvyu',
'type': 'file',
'size': 20},
{'name': 'QmWHpqeDLAMMuLSKDqcMNZRaZGwEKbY5FoU7DMA3pftj54/test3.txt',
'CID': 'QmWT5UmZ4zoXX9GsXpPtEMVP5m1VZ7N6rdxnXHGNkFKqFJ',
'type': 'file',
'size': 28}]
Get a file
def test_get_public_cid(cid= 'QmWT5UmZ4zoXX9GsXpPtEMVP5m1VZ7N6rdxnXHGNkFKqFJ' ,
rpath= '/test_get_file' ,
out_lpath = 'output/get_file/' ,
gateway_type= None ):
if gateway_type:
fs.ipfs.change_gateway_type = 'local'
if fs.file .exists(out_lpath):
fs.file .rm(out_lpath, recursive= True )
fs.ipfs.rm(rpath, recursive= True )
print ('Before: ' , [p.lstrip(os.getcwd()) for p in fs.file .glob(f' { out_lpath} /*' )])
fs.ipfs.get(rpath= cid, lpath= out_lpath, recursive= True , return_cid= False )
print ('After: ' , [p.lstrip(os.getcwd()) for p in fs.file .glob(f' { out_lpath} /*' )])
fs.ipfs.rm(rpath, recursive= True )
test_get_public_cid()
Before: []
After: ['output/get_file/QmWT5UmZ4zoXX9GsXpPtEMVP5m1VZ7N6rdxnXHGNkFKqFJ']