Each NFT in the TopSecurityNFT
collection maps to a
metadata file and a corresponding image stored on IPFS.
Token ID | Metadata File | Image File | Display Name (in metadata) |
---|---|---|---|
1 | metadata1.json | painting_01.png | “Untitled Piece 1” |
2 | metadata2.json | painting_02.png | “Untitled Piece 2” |
3 | metadata3.json | painting_03.png | “Untitled Piece 3” |
4 | metadata4.json | painting_04.png | “Untitled Piece 4” |
5 | metadata5.json | painting_05.png | “Untitled Piece 5” |
6 | metadata6.json | painting_06.png | “Untitled Piece 6” |
7 | metadata7.json | painting_07.png | “Untitled Piece 7” |
8 | metadata8.json | painting_08.png | “Untitled Piece 8” |
9 | metadata9.json | painting_09.png | “Untitled Piece 9” |
10 | metadata10.json | painting_10.png | “Untitled Piece 10” |
bafybeic2f7dtbhcph4q72ja4avhesovmhmbdmpjtc45brtwbqyfroqsr3y
ipfs://bafybeic2f7dtbhcph4q72ja4avhesovmhmbdmpjtc45brtwbqyfroqsr3y/
Each tokenURI(tokenId)
is automatically constructed by
the contract using:
string public baseURI;
string memory uri = string(abi.encodePacked(baseURI, "metadata", Strings.toString(tokenId), ".json"));
Save this as generate_metadata.py
and run it in the same
folder as your painting_01.png
,
painting_02.png
, etc. Update the base_ipfs_cid
as needed.
import json
import os
= "bafybeic2f7dtbhcph4q72ja4avhesovmhmbdmpjtc45brtwbqyfroqsr3y"
base_ipfs_cid = "metadata"
output_dir = 10
num_tokens
=True)
os.makedirs(output_dir, exist_ok
for i in range(1, num_tokens + 1):
= {
metadata "name": f"Untitled Piece {i}",
"description": "A digital work in the TopSecurityNFT collection.",
"image": f"ipfs://{base_ipfs_cid}/painting_{str(i).zfill(2)}.png"
}
= os.path.join(output_dir, f"metadata{i}.json")
filename with open(filename, "w") as f:
=4)
json.dump(metadata, f, indent
print(f"Created {num_tokens} metadata files in '{output_dir}/'")
This will generate: - metadata/metadata1.json
-
metadata/metadata2.json
- … -
metadata/metadata10.json