cosmo / cosmo.py
tripleS-Dev
start
14ea209
raw
history blame contribute delete
No virus
1.86 kB
import requests
from PIL import Image, PngImagePlugin
from io import BytesIO
import json
import os
import time
import get_token
import requests
def get_json(id):
url = f"https://api.cosmo.fans/objekt/v1/token/{id}"
response = requests.get(url)
if response.status_code == 200:
return response.json()
else:
return {"error": "Request failed with status code " + str(response.status_code)}
# Function to fetch image with retries
def fetch_image_with_retries(url, retries=3, delay=5):
for i in range(retries):
try:
response = requests.get(url)
response.raise_for_status()
return Image.open(BytesIO(response.content))
except requests.exceptions.RequestException as e:
print(f"Attempt {i+1} failed: {e}")
time.sleep(delay)
raise Exception("Failed to fetch image after several attempts")
def download_img(token_id, folder_name):
response_json = get_json(token_id)
# Check if 'objekt' key exists in the response
if 'objekt' in response_json and 'thumbnailImage' in response_json['objekt']:
thumbnail_url = response_json['objekt']['thumbnailImage']
name = response_json.get('name', 'Unknown') # Use 'Unknown' if 'name' key is not found
class_nft = response_json['objekt']['class'] # Use 'Unknown' if 'name' key is not found
# Fetching the thumbnail image
img = fetch_image_with_retries(thumbnail_url)
# Adding metadata
meta = PngImagePlugin.PngInfo()
meta.add_text("name", f"{name} {class_nft}")
# Saving the image with tokenId as filename
filename = f"./{folder_name}/{token_id}.png"
img.save(filename, pnginfo=meta)
else:
print(f"Key 'objekt' or 'thumbnailImage' not found in response for token_id {token_id}. Skipping...")