Python request zum Upload von NFTs via API mit Base64
Verfasst: Sonntag 24. Oktober 2021, 16:05
Hallo zusammen und jetzt schon einmal Dankeschön fürs Zuhören. Wir hängen leider an einem Problem fest und kommen nicht weiter. Hier schonmal der Code:
Grundlegend wollen mit Hilfe einer API unsere Bilder auf in NFTs umwandeln. Dafür ist es wichtig, dass die Bilder im Base64-Format durch die Python request auf der Seite hochgeladen wird.
Link zur API: https://api.nft-maker.io/swagger/index.html
Wir benutzen nur die Funktion "Upload NFT".
Hierbei haben wir unseren apikey und nftprojectid eingetragen und die curl request zu python formatiert. Dann habe ich alle Bildernamen in einen Array gespeichert und wieder ausgegeben (Was auch funktioniert). Dann habe ich die Bilder in Base64 umgewandelt, was ebenfalls funktioniert. Wenn ich dies dann aber versuche in die Request zu packen, wirft er mir immer 500 internal server error aus. WIr denken, dass es an der Formatierung des base64-string liegen könnte.
Vielen lieben Dank für euere Hilfe!
Code: Alles auswählen
import pip._vendor.requests
import json
from os import linesep
import base64
from pip._vendor.requests.structures import CaseInsensitiveDict
url = "https://api.nft-maker.io/UploadNft/HERE_STANDS_OUR_API_KEY"
headers = CaseInsensitiveDict()
headers["accept"] = "text/plain"
headers["Content-Type"] = "application/json"
testname = ["arraytest55", "arraytest66"]
counter = 1;
names = []
nftName = []
nftBase64 = []
nftBase64String = []
for x in range (0,10):
if (counter < 10):
nftName.append
(fr"C:\Users\Alex1\OneDrive\Desktop\CardaLuck\Python\UploadNFT\GoldfishTicket000{x+1}.jpg")
counter = counter + 1
continue
if (counter < 100):
nftName.append
(fr"C:\Users\Alex1\OneDrive\Desktop\CardaLuck\Python\UploadNFT\GoldfishTicket00{x+1}.jpg")
counter = counter + 1
continue
if (counter < 1000):
nftName.append
(fr"C:\Users\Alex1\OneDrive\Desktop\CardaLuck\Python\UploadNFT\GoldfishTicket0{x+1}.jpg")
counter = counter + 1
continue
else:
nftName.append
(fr"C:\Users\Alex1\OneDrive\Desktop\CardaLuck\Python\UploadNFT\GoldfishTicket{x+1}.jpg")
counter = counter + 1
continue
for x in range (0, 10):
with open(nftName[x], "rb") as image_file:
names.append(nftName[x])
nftBase64.append (base64.b64encode(image_file.read()))
nftBase64[x] = '"' + str(nftBase64) + '"'
for x in range(0,5):
data = """
{
"assetName": " """ + names[x] + """ ",
"previewImageNft": {
"mimetype": "string",
"fileFromBase64": """ + nftBase64[x] + """,
"description": "string",
"metadataPlaceholder": [
{
"name": "string",
"value": "string"
}
]
}
}
"""
resp = pip._vendor.requests.post(url, headers=headers, data=data)
print(resp.status_code)
Link zur API: https://api.nft-maker.io/swagger/index.html
Wir benutzen nur die Funktion "Upload NFT".
Hierbei haben wir unseren apikey und nftprojectid eingetragen und die curl request zu python formatiert. Dann habe ich alle Bildernamen in einen Array gespeichert und wieder ausgegeben (Was auch funktioniert). Dann habe ich die Bilder in Base64 umgewandelt, was ebenfalls funktioniert. Wenn ich dies dann aber versuche in die Request zu packen, wirft er mir immer 500 internal server error aus. WIr denken, dass es an der Formatierung des base64-string liegen könnte.
Vielen lieben Dank für euere Hilfe!