LS-AI-img-gen / metadata /metadata.py
Andre
Added LS ID gen
8322301
import requests
import json # Import the json module for saving data
# Define the GraphQL endpoint
url = "https://ls-indexer-sepolia.provable.games/graphql"
def fetch_metadata(adv_id):
if adv_id:
print(f"Adventure ID: {adv_id}")
# Define the GraphQL queries
query = """
query MyQuery($id: FeltValue!) {
adventurers(limit: 10, where: {id: {eq: $id}}) {
owner
id
name
strength
vitality
dexterity
intelligence
wisdom
charisma
level
xp
health
beastHealth
head
hand
chest
waist
foot
weapon
gold
neck
ring
luck
battleActionCount
customRenderer
statUpgrades
}
}
"""
query2 = """
query MyQuery($id: FeltValue!) {
battles(where: {adventurerId: {eq: $id}}) {
adventurerId
adventurerHealth
beast
beastHealth
beastLevel
seed
attacker
fled
damageDealt
criticalHit
damageTaken
damageLocation
xpEarnedAdventurer
xpEarnedItems
goldEarned
discoveryTime
}
}
"""
variables = {"id": adv_id}
# Define the request payloads
payload = {
"query": query,
"variables": variables
}
payload2 = {
"query": query2,
"variables": variables
}
# Send the POST requests to the GraphQL API
response = requests.post(url, json=payload)
response2 = requests.post(url, json=payload2)
# Check if the requests were successful
if response.status_code == 200 and response2.status_code == 200:
# Parse the JSON responses
data = response.json()
data2 = response2.json()
print("Data fetched successfully.")
# Save the data to files
with open("adventurers_data.json", "w") as file:
json.dump(data, file, indent=4) # Save with pretty-printing (indent=4)
with open("adventurers_data2.json", "w") as file:
json.dump(data2, file, indent=4) # Save with pretty-printing (indent=4)
print("Data saved to 'adventurers_data.json' and 'adventurers_data2.json'.")
# Extract the list of adventurers from both queries
adventurers = data.get("data", {}).get("adventurers", [])
battles = data2.get("data", {}).get("battles", [])
# Create a dictionary to map adventurers by their ID for quick lookup
adventurers_dict = {adv["id"]: adv for adv in adventurers}
# Add fields from the second query to the corresponding adventurer
for adv2 in battles:
adventurer_id = adv2["adventurerId"]
if adventurer_id in adventurers_dict:
print("battles loop")
# Add new fields to the existing adventurer
adventurers_dict[adventurer_id].update(adv2)
else:
print("else")
# Print each adventurer's details dynamically
for adventurer in adventurers_dict.values():
# Create a dictionary to store field values
adventurer_data = adventurer # Use the updated dictionary
print("\n=====Adventurer Details=====")
for key, value in adventurer_data.items():
print(f"{key.capitalize()}: {value}")
if adventurer_data['health'] != 0:
print("\n=====THE ADVENTURER IS STILL ALIVE=====")
else:
print("\n=====THE ADVENTURER IS DEAD=====")
# Example: Access specific fields
print(f"\nEquipment list of {adventurer_data['name']}:")
print(f"\nAdventurer Head: {adventurer_data.get('head', 'None')}")
print(f"Hand: {adventurer_data.get('hand', 'None')}")
print(f"Chest: {adventurer_data.get('chest', 'None')}")
print(f"Waist: {adventurer_data.get('waist', 'None')}")
print(f"Foot: {adventurer_data.get('foot', 'None')}")
print(f"Weapon: {(weapon := adventurer_data.get('weapon', 'None'))}")
print(f"Beast: {adventurer_data.get('beast', 'Unknown')}")
print(f"Beast Level: {adventurer_data.get('beastLevel', 'Unknown')}")
print(f"Attacker: {adventurer_data.get('attacker', 'Unknown')}")
print(f"Fled: {adventurer_data.get('fled', 'Unknown')}")
print(f"Damage Dealt: {adventurer_data.get('damageDealt', 'Unknown')}")
print(f"Damage Taken: {adventurer_data.get('damageTaken', 'Unknown')}")
print(f"Crticial Hit: {adventurer_data.get('criticalHit', 'Unknown')}")
print(f"Damage Location: {adventurer_data.get('damageLocation', 'Unknown')}")
print(f"Beast Health: {adventurer_data.get('beastHealth', 'Unknown')}")
print(f"Adventurer Health: {adventurer_data.get('adventurerHealth', 'Unknown')}")
if adventurer_data.get('weapon') == "Club":
print("HELLO!")
if weapon == "Club":
print("HELLO AGAIN!")
else:
# Print detailed error information
print(f"Failed to fetch data. Status codes: {response.status_code}, {response2.status_code}")
print("Response 1 Headers:", response.headers)
print("Response 1 Body:", response.text)
print("Response 2 Headers:", response2.headers)
print("Response 2 Body:", response2.text)
return adventurer_data