@@ -39,9 +39,11 @@ class SyncOption(str, Enum):
3939def get_services (settings : Services ) -> dict [Service , BaseService ]:
4040 output = {}
4141 if settings .comicvine .api_key :
42- output [Service .COMICVINE ] = Comicvine (settings .comicvine )
42+ output [Service .COMICVINE ] = Comicvine (api_key = settings .comicvine . api_key )
4343 if settings .metron .username and settings .metron .password :
44- output [Service .METRON ] = Metron (settings .metron )
44+ output [Service .METRON ] = Metron (
45+ username = settings .metron .username , password = settings .metron .password
46+ )
4547 return output
4648
4749
@@ -98,22 +100,27 @@ def get_id(ids: list[Id], source: InformationSource) -> str | None:
98100 return next ((x .value for x in ids if x .source is source ), None )
99101
100102
101- def search_from_metron_info (metron_info : MetronInfo ) -> Search :
103+ def search_from_metron_info (metron_info : MetronInfo , filename : str ) -> Search :
102104 series_id = metron_info .series .id
105+ comicvine_id = get_id (metron_info .ids , InformationSource .COMIC_VINE )
106+ metron_id = get_id (metron_info .ids , InformationSource .METRON )
103107 source = next ((x .source for x in metron_info .ids if x .primary ), None )
104108 return Search (
105109 series = SeriesSearch (
106110 name = metron_info .series .name ,
107111 volume = metron_info .series .volume ,
108112 year = metron_info .series .start_year ,
109- comicvine = series_id if source == InformationSource .COMIC_VINE else None ,
110- metron = series_id if source == InformationSource .METRON else None ,
113+ comicvine = int (series_id )
114+ if series_id and source == InformationSource .COMIC_VINE
115+ else None ,
116+ metron = int (series_id ) if series_id and source == InformationSource .METRON else None ,
111117 ),
112118 issue = IssueSearch (
113119 number = metron_info .number ,
114- comicvine = get_id ( metron_info . ids , InformationSource . COMIC_VINE ) ,
115- metron = get_id ( metron_info . ids , InformationSource . METRON ) ,
120+ comicvine = int ( comicvine_id ) if comicvine_id else None ,
121+ metron = int ( metron_id ) if metron_id else None ,
116122 ),
123+ filename = filename ,
117124 )
118125
119126
@@ -124,19 +131,21 @@ def search_from_comic_info(comic_info: ComicInfo, filename: str) -> Search:
124131 return Search (
125132 series = SeriesSearch (name = comic_info .series or filename , volume = volume , year = year ),
126133 issue = IssueSearch (number = comic_info .number ),
134+ filename = filename ,
127135 )
128136
129137
130138def search_from_filename (filename : str ) -> Search :
131- series_name = comicfn2dict (filename ).get ("series" , filename ).replace ("-" , " " )
132- return Search (series = SeriesSearch (name = series_name ), issue = IssueSearch ())
139+ series_name = comicfn2dict (filename ).get ("series" , filename )
140+ series_name = str (series_name ).replace ("-" , " " )
141+ return Search (series = SeriesSearch (name = series_name ), issue = IssueSearch (), filename = filename )
133142
134143
135144def build_search (
136145 metron_info : MetronInfo | None , comic_info : ComicInfo | None , filename : str
137146) -> Search :
138147 if metron_info and metron_info .series and metron_info .series .name :
139- return search_from_metron_info (metron_info = metron_info )
148+ return search_from_metron_info (metron_info = metron_info , filename = filename )
140149 if comic_info and comic_info .series :
141150 return search_from_comic_info (comic_info = comic_info , filename = filename )
142151 return search_from_filename (filename = filename )
@@ -166,7 +175,6 @@ def resolve_metadata(
166175 search = build_search (
167176 metron_info = metron_info , comic_info = comic_info , filename = entry .filepath .stem
168177 )
169- search .filename = entry .filepath .stem
170178 return sync_metadata (search = search , services = services , service_order = settings .order )
171179
172180
0 commit comments