@@ -83,9 +83,25 @@ def get_gog_library():
8383 return []
8484 cursor = conn .cursor ()
8585
86+ # Get the GamePieceType IDs dynamically
87+ try :
88+ cursor .execute ("SELECT id, type FROM GamePieceTypes WHERE type IN ('title', 'meta', 'originalImages', 'summary')" )
89+ type_mapping = {row [1 ]: row [0 ] for row in cursor .fetchall ()}
90+
91+ title_id = type_mapping .get ('title' )
92+ meta_id = type_mapping .get ('meta' )
93+ images_id = type_mapping .get ('originalImages' )
94+ summary_id = type_mapping .get ('summary' )
95+
96+ if not all ([title_id , meta_id , images_id , summary_id ]):
97+ raise ValueError (f"Some GamePieceTypes not found. Available types: { list (type_mapping .keys ())} " )
98+ except (sqlite3 .OperationalError , ValueError ) as e :
99+ print (f"[GOG DEBUG] Error fetching GamePieceTypes: { e } " )
100+ conn .close ()
101+ return []
102+
86103 # Query for owned GOG games with all their metadata
87- # GamePieceTypes: 112=title, 104=meta, 24=originalImages, 111=summary
88- query = """
104+ query = f"""
89105 SELECT
90106 lr.releaseKey,
91107 title.value as title_json,
@@ -95,13 +111,13 @@ def get_gog_library():
95111 FROM
96112 LibraryReleases lr
97113 LEFT JOIN
98- GamePieces title ON lr.releaseKey = title.releaseKey AND title.gamePieceTypeId = 112
114+ GamePieces title ON lr.releaseKey = title.releaseKey AND title.gamePieceTypeId = { title_id }
99115 LEFT JOIN
100- GamePieces meta ON lr.releaseKey = meta.releaseKey AND meta.gamePieceTypeId = 104
116+ GamePieces meta ON lr.releaseKey = meta.releaseKey AND meta.gamePieceTypeId = { meta_id }
101117 LEFT JOIN
102- GamePieces images ON lr.releaseKey = images.releaseKey AND images.gamePieceTypeId = 24
118+ GamePieces images ON lr.releaseKey = images.releaseKey AND images.gamePieceTypeId = { images_id }
103119 LEFT JOIN
104- GamePieces summary ON lr.releaseKey = summary.releaseKey AND summary.gamePieceTypeId = 111
120+ GamePieces summary ON lr.releaseKey = summary.releaseKey AND summary.gamePieceTypeId = { summary_id }
105121 WHERE
106122 lr.releaseKey LIKE 'gog_%'
107123 GROUP BY lr.releaseKey
0 commit comments