Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/k0yote/migrate-metadata
Migrate from a centralized nft metadata distribution to an ipfs with thirdweb library
https://github.com/k0yote/migrate-metadata
golang ipfs metadata nft thirdweb
Last synced: about 2 months ago
JSON representation
Migrate from a centralized nft metadata distribution to an ipfs with thirdweb library
- Host: GitHub
- URL: https://github.com/k0yote/migrate-metadata
- Owner: k0yote
- Created: 2023-07-25T00:55:01.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-25T10:03:34.000Z (over 1 year ago)
- Last Synced: 2024-08-22T10:08:30.263Z (4 months ago)
- Topics: golang, ipfs, metadata, nft, thirdweb
- Homepage:
- Size: 6.26 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Migrate Metadata
クラウドストレージにあるNFTメタデータを分散ストレージへ移行## Prerequisites
- [Nodejs](https://nodejs.org/ja)
- [thirdweb API Key](https://portal.thirdweb.com/api-keys)## マイグレーションを行う。
1. メタ情報とイメージをローカルにダウンロードする
(メタデータ中に定義されているimageのURLからダウンロード)
```json
{
"description": "Friendly OpenSea Creature that enjoys long swims in the ocean.",
"external_url": "https://openseacreatures.io/3",
"image": "https://storage.googleapis.com/opensea-prod.appspot.com/puffs/3.png",
"name": "Dave Starbelly",
"attributes": [ ... ]
}
```
2. ダウンロードしたイメージをIPFSストレージにアップロードする
※今回はthirdwebが提供している以下の2つライブラリーを用いて行いました。- `https://www.npmjs.com/package/thirdweb`
- `go get github.com/thirdweb-dev/go-sdk/v2/thirdweb`## Help
```shell
./bin/meta-converter -h
flag needs an argument: -h
Usage of ./bin/meta-converter:
-eTokenID int
finish to NFT TokenID (default 1)
-h string
Metadata API Base URL (default "https://metadata.baseUrl/xxxxx/")
-image-outdir string
Images output folder name (default "images")
-meta-outdir string
Metadata output folder name (default "metadata")
-sTokenID int
start from NFT TokenID (default 1)```
## 実行
0. npm install
1. 以下を実行し、メタデータとイメージをダウンロードする
```shell
./bin/meta-converter -h {メタが取れるAPIベースURL} -sTokenID 開始トークンID -eTokenID 終了トークンID
``````shell
## 実行ログからipfsのcid確認ができる
ipfs response : {Image:ipfs://jiorjoiiojgojdfogjdf/0}
ipfs response : {Image:ipfs://jiorjoiiojgojdfogjdf/0}
ipfs response : {Image:ipfs://jiorjoiiojgojdfogjdf/0}
ipfs response : {Image:ipfs://jiorjoiiojgojdfogjdf/0}
ipfs response : {Image:ipfs://jiorjoiiojgojdfogjdf/0}
```
2. 1.を実行するとmetadata / imagesフォルダにそれぞれメタデータjsonファイルと画像がダウンロードされていてる
3. メタデータのimageが既にipfsのURLに書きかわってる
4. 最後メタデータをアップロードする
```shell
## thirdwebのAPIシークレットキーを要求されるので事前にAPIキーを生成しておく
npx thirdweb@latest upload metadata
``````shell
## 正常に実行された例
✔ Successfully uploaded directory to IPFS
✔ Files stored at the following IPFS URI: ipfs://joewiurefdjasf
✔ Open this link to view your upload: https://{client-id}.ipfscdn.io/ipfs/joewiurefdjasf/
```
5. 4.取得したURLだとthirdweb側の制限があるのでパブリックでは確認できないため、public gatewayに変更して`https://ipfs.io/ipfs/joewiurefdjasf/`をスマートコントラクトのベーストークンURIを更新