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” |
bafybeic2f7dtbhcph4q72ja4avhesovmhmbdmpjtc45brtwbqyfroqsr3yipfs://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
base_ipfs_cid = "bafybeic2f7dtbhcph4q72ja4avhesovmhmbdmpjtc45brtwbqyfroqsr3y"
output_dir = "metadata"
num_tokens = 10
os.makedirs(output_dir, exist_ok=True)
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"
}
filename = os.path.join(output_dir, f"metadata{i}.json")
with open(filename, "w") as f:
json.dump(metadata, f, indent=4)
print(f"Created {num_tokens} metadata files in '{output_dir}/'")This will generate: - metadata/metadata1.json -
metadata/metadata2.json - … -
metadata/metadata10.json