😽
PythonでIPFSにJsonファイルをアップロードする
自分はpython初心者だがipfshttpclientを使用することで簡単にアップロードすることができたのでそれを記録する。
事前想定
- ipfs daemonを起動できる
簡単に説明するとipfsのノードを起動することができるというもの。
なので起動中はファイルのアップロードや参照は自由にできるが、自分でアップロードしたファイルは pin
止めしないと、ipfsノードを落としてしまうと参照できなくなるので注意が必要。
ipfs daemonでノードを起動するにはipfsをインストールする必要がある。また今回ipfshttpclientを使用するにはv0.4.0 ~ v0.8.0のバージョンである必要がある。
余談だが私はipfs v0.20.0を使用しておりダウングレードする必要があったがここがうまくいかなかった。 ipfs-updateを使用することでversionのダウングレードもできるということだったが、自分の環境ではうまくいかなかったので結局手動でダウングレードすることとなった。手順は一応記しておく。(v0.7.0をインストールした。)
wget https://ipfs.io/ipns/dist.ipfs.tech/go-ipfs/v0.7.0/go-ipfs_v0.7.0_darwin-amd64.tar.gz
tar xvfz go-ipfs_v0.7.0_darwin-amd64.tar.gz
sudo mv go-ipfs/ipfs /usr/local/bin/
sudo rm -r ~/.ipfs
ipfs init
mameta %ipfs --version
ipfs version 0.7.0
ipfshttpclientを使用してファイルをアップロードする
手順は至ってシンプル
- pip install ipfshttpclient
- ipfshttpclientをimport
- ipfs daemonでipfsノードを起動しておく
- client = ipfshttpclient.connect() でpythonからipfsノードに接続
- 関数実行
下記サンプルコードです。
import ipfshttpclient
def main():
data = {
"example_data": "example_value",
"example_key": "another_value"
}
with ipfshttpclient.connect() as client: # コンテキストマネージャを使用して自動的に切断
print("connected")
data_cid = client.add_json(data)
print("data_cid: ", data_cid)
uploaded_data = client.get_json(data_cid)
print("uploaded_data: ", uploaded_data)
if __name__ == '__main__':
main()
Discussion