2121from handler .metadata .moby_handler import MobyGamesRom
2222from handler .metadata .sgdb_handler import SGDBRom
2323from handler .metadata .ss_handler import SSRom
24- from handler .scan_handler import get_main_platform_igdb_id
24+ from handler .scan_handler import (
25+ MetadataSource ,
26+ get_main_platform_igdb_id ,
27+ get_priority_ordered_metadata_sources ,
28+ )
2529from logger .formatter import BLUE , CYAN
2630from logger .formatter import highlight as hl
2731from logger .logger import log
@@ -79,7 +83,6 @@ async def search_rom(
7983 log .info (
8084 f"{ emoji .EMOJI_MAGNIFYING_GLASS_TILTED_RIGHT } Searching metadata providers..."
8185 )
82- matched_roms : list = []
8386
8487 log .info (f"Searching by { hl (search_by .lower (), color = CYAN )} :" )
8588 log .info (
@@ -138,80 +141,56 @@ async def search_rom(
138141
139142 merged_dict : dict [str , dict ] = {}
140143
141- for igdb_rom in igdb_matched_roms :
142- if igdb_rom ["igdb_id" ]:
143- igdb_name = meta_igdb_handler .normalize_search_term (
144- igdb_rom .get ("name" , "" ),
145- remove_articles = False ,
146- )
147- merged_dict [igdb_name ] = {
148- ** igdb_rom ,
149- "is_identified" : True ,
150- "is_unidentified" : False ,
151- "platform_id" : rom .platform_id ,
152- "igdb_url_cover" : igdb_rom .pop ("url_cover" , "" ),
153- ** merged_dict .get (igdb_name , {}),
154- }
155-
156- for moby_rom in moby_matched_roms :
157- if moby_rom ["moby_id" ]:
158- moby_name = meta_moby_handler .normalize_search_term (
159- moby_rom .get ("name" , "" ),
160- remove_articles = False ,
161- )
162- merged_dict [moby_name ] = {
163- ** moby_rom ,
164- "is_identified" : True ,
165- "is_unidentified" : False ,
166- "platform_id" : rom .platform_id ,
167- "moby_url_cover" : moby_rom .pop ("url_cover" , "" ),
168- ** merged_dict .get (moby_name , {}),
169- }
170-
171- for ss_rom in ss_matched_roms :
172- if ss_rom ["ss_id" ]:
173- ss_name = meta_ss_handler .normalize_search_term (
174- ss_rom .get ("name" , "" ),
175- remove_articles = False ,
176- )
177- merged_dict [ss_name ] = {
178- ** ss_rom ,
179- "is_identified" : True ,
180- "is_unidentified" : False ,
181- "platform_id" : rom .platform_id ,
182- "ss_url_cover" : ss_rom .pop ("url_cover" , "" ),
183- ** merged_dict .get (ss_name , {}),
184- }
185-
186- for flashpoint_rom in flashpoint_matched_roms :
187- if flashpoint_rom ["flashpoint_id" ]:
188- flashpoint_name = meta_flashpoint_handler .normalize_search_term (
189- flashpoint_rom .get ("name" , "" ),
190- remove_articles = False ,
191- )
192- merged_dict [flashpoint_name ] = {
193- ** flashpoint_rom ,
194- "is_identified" : True ,
195- "is_unidentified" : False ,
196- "platform_id" : rom .platform_id ,
197- "flashpoint_url_cover" : flashpoint_rom .pop ("url_cover" , "" ),
198- ** merged_dict .get (flashpoint_name , {}),
199- }
144+ source_configs = {
145+ MetadataSource .IGDB : (
146+ igdb_matched_roms ,
147+ meta_igdb_handler ,
148+ "igdb_id" ,
149+ "igdb_url_cover" ,
150+ ),
151+ MetadataSource .MOBY : (
152+ moby_matched_roms ,
153+ meta_moby_handler ,
154+ "moby_id" ,
155+ "moby_url_cover" ,
156+ ),
157+ MetadataSource .FLASHPOINT : (
158+ flashpoint_matched_roms ,
159+ meta_flashpoint_handler ,
160+ "flashpoint_id" ,
161+ "flashpoint_url_cover" ,
162+ ),
163+ MetadataSource .LAUNCHBOX : (
164+ launchbox_matched_roms ,
165+ meta_launchbox_handler ,
166+ "launchbox_id" ,
167+ "launchbox_url_cover" ,
168+ ),
169+ MetadataSource .SS : (ss_matched_roms , meta_ss_handler , "ss_id" , "ss_url_cover" ),
170+ }
171+
172+ ordered_sources = get_priority_ordered_metadata_sources (
173+ metadata_sources = list (source_configs .keys ()), priority_type = "metadata"
174+ )
200175
201- for launchbox_rom in launchbox_matched_roms :
202- if launchbox_rom ["launchbox_id" ]:
203- launchbox_name = meta_launchbox_handler .normalize_search_term (
204- launchbox_rom .get ("name" , "" ),
205- remove_articles = False ,
206- )
207- merged_dict [launchbox_name ] = {
208- ** launchbox_rom ,
209- "is_identified" : True ,
210- "is_unidentified" : False ,
211- "platform_id" : rom .platform_id ,
212- "launchbox_url_cover" : launchbox_rom .pop ("url_cover" , "" ),
213- ** merged_dict .get (launchbox_name , {}),
214- }
176+ for meta_source in ordered_sources :
177+ source_matched_roms , meta_handler , id_key , cover_key = source_configs [
178+ meta_source
179+ ]
180+ for source_rom in source_matched_roms : # trunk-ignore(mypy/attr-defined)
181+ if source_rom [id_key ]:
182+ normalized_name = meta_handler .normalize_search_term (
183+ source_rom .get ("name" , "" ),
184+ remove_articles = False ,
185+ )
186+ merged_dict [normalized_name ] = {
187+ ** source_rom ,
188+ "is_identified" : True ,
189+ "is_unidentified" : False ,
190+ "platform_id" : rom .platform_id ,
191+ cover_key : source_rom .get ("url_cover" , "" ),
192+ ** merged_dict .get (normalized_name , {}),
193+ }
215194
216195 async def get_sgdb_rom (name : str ) -> tuple [str , SGDBRom ]:
217196 return name , await meta_sgdb_handler .get_details_by_names ([name ])
@@ -228,7 +207,7 @@ async def get_sgdb_rom(name: str) -> tuple[str, SGDBRom]:
228207 "sgdb_url_cover" : sgdb_rom .get ("url_cover" , "" ),
229208 }
230209
231- matched_roms = list (merged_dict .values ())
210+ matched_roms : list = list (merged_dict .values ())
232211
233212 log .info ("Results:" )
234213 for m_rom in matched_roms :
0 commit comments