mirror of
https://github.com/moraroy/NonSteamLaunchers-On-Steam-Deck.git
synced 2025-01-21 06:11:12 +01:00
Update NSLGameScanner.py
This commit is contained in:
parent
95132cf63b
commit
f820d1dd58
@ -257,17 +257,20 @@ def download_artwork(game_id, art_type, shortcut_id, dimensions=None):
|
|||||||
filename = get_file_name(art_type, shortcut_id, dimensions)
|
filename = get_file_name(art_type, shortcut_id, dimensions)
|
||||||
else:
|
else:
|
||||||
filename = get_file_name(art_type, shortcut_id)
|
filename = get_file_name(art_type, shortcut_id)
|
||||||
file_path = f"{logged_in_home}/.steam/root/userdata/{steamid3}/config/grid/{filename}"
|
|
||||||
|
|
||||||
|
file_path = f"{logged_in_home}/.steam/root/userdata/{steamid3}/config/grid/{filename}"
|
||||||
directory = os.path.dirname(file_path)
|
directory = os.path.dirname(file_path)
|
||||||
|
|
||||||
if not os.path.exists(directory):
|
if not os.path.exists(directory):
|
||||||
os.makedirs(directory)
|
os.makedirs(directory)
|
||||||
|
|
||||||
|
# Check if the file exists in the local cache
|
||||||
if os.path.exists(file_path):
|
if os.path.exists(file_path):
|
||||||
print(f"Artwork for {game_id} already exists. Skipping download.")
|
print(f"Artwork for {game_id} already exists. Skipping download.")
|
||||||
with open(file_path, 'rb') as image_file:
|
with open(file_path, 'rb') as image_file:
|
||||||
return b64encode(image_file.read()).decode('utf-8')
|
return b64encode(image_file.read()).decode('utf-8')
|
||||||
|
|
||||||
|
# If the file is in the cache, use that data
|
||||||
if cache_key in api_cache:
|
if cache_key in api_cache:
|
||||||
data = api_cache[cache_key]
|
data = api_cache[cache_key]
|
||||||
else:
|
else:
|
||||||
@ -287,27 +290,31 @@ def download_artwork(game_id, art_type, shortcut_id, dimensions=None):
|
|||||||
api_cache[cache_key] = None
|
api_cache[cache_key] = None
|
||||||
return
|
return
|
||||||
|
|
||||||
if data is None:
|
if not data or 'data' not in data:
|
||||||
print(f"No data available for {game_id}. Skipping download.")
|
print(f"No data available for {game_id}. Skipping download.")
|
||||||
return
|
return
|
||||||
|
|
||||||
for artwork in data['data']:
|
for artwork in data['data']:
|
||||||
image_url = artwork['thumb']
|
image_url = artwork['thumb']
|
||||||
print(f"Downloading image from: {image_url}")
|
print(f"Downloading image from: {image_url}")
|
||||||
try:
|
|
||||||
response = requests.get(image_url, stream=True)
|
for ext in ['png', 'ico']:
|
||||||
response.raise_for_status()
|
try:
|
||||||
if response.status_code == 200:
|
alt_file_path = file_path.replace('.png', f'.{ext}')
|
||||||
with open(file_path, 'wb') as file:
|
response = requests.get(image_url, stream=True)
|
||||||
file.write(response.content)
|
response.raise_for_status()
|
||||||
return b64encode(response.content).decode('utf-8')
|
|
||||||
except requests.exceptions.RequestException as e:
|
|
||||||
print(f"Error downloading image: {e}")
|
|
||||||
if art_type == 'icons':
|
|
||||||
download_artwork(game_id, 'icons', shortcut_id)
|
|
||||||
|
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
with open(alt_file_path, 'wb') as file:
|
||||||
|
file.write(response.content)
|
||||||
|
print(f"Downloaded {alt_file_path}")
|
||||||
|
return b64encode(response.content).decode('utf-8')
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
print(f"Error downloading image in {ext}: {e}")
|
||||||
|
|
||||||
|
print(f"Artwork download failed for {game_id}. Neither PNG nor ICO was available.")
|
||||||
|
return None
|
||||||
|
|
||||||
def get_game_id(game_name):
|
def get_game_id(game_name):
|
||||||
print(f"Searching for game ID for: {game_name}")
|
print(f"Searching for game ID for: {game_name}")
|
||||||
@ -330,12 +337,13 @@ def get_game_id(game_name):
|
|||||||
print(f"Error searching for game ID: {e}")
|
print(f"Error searching for game ID: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_file_name(art_type, shortcut_id, dimensions=None):
|
def get_file_name(art_type, shortcut_id, dimensions=None):
|
||||||
singular_art_type = art_type.rstrip('s')
|
singular_art_type = art_type.rstrip('s')
|
||||||
if art_type == 'icons':
|
if art_type == 'icons':
|
||||||
|
# Check for the existing .png file first
|
||||||
if os.path.exists(f"{logged_in_home}/.steam/root/userdata/{steamid3}/config/grid/{shortcut_id}-{singular_art_type}.png"):
|
if os.path.exists(f"{logged_in_home}/.steam/root/userdata/{steamid3}/config/grid/{shortcut_id}-{singular_art_type}.png"):
|
||||||
return f"{shortcut_id}-{singular_art_type}.png"
|
return f"{shortcut_id}-{singular_art_type}.png"
|
||||||
|
# Fallback to .ico if .png doesn't exist
|
||||||
else:
|
else:
|
||||||
return f"{shortcut_id}-{singular_art_type}.ico"
|
return f"{shortcut_id}-{singular_art_type}.ico"
|
||||||
elif art_type == 'grids':
|
elif art_type == 'grids':
|
||||||
@ -350,6 +358,7 @@ def get_file_name(art_type, shortcut_id, dimensions=None):
|
|||||||
else:
|
else:
|
||||||
return f"{shortcut_id}.png"
|
return f"{shortcut_id}.png"
|
||||||
|
|
||||||
|
|
||||||
def is_match(name1, name2):
|
def is_match(name1, name2):
|
||||||
if name1 and name2:
|
if name1 and name2:
|
||||||
return name1.lower() in name2.lower() or name2.lower() in name1.lower()
|
return name1.lower() in name2.lower() or name2.lower() in name1.lower()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user