1717from perdoo .comic .metadata import ComicInfo , MetronInfo
1818from perdoo .comic .metadata .metron_info import InformationSource
1919from perdoo .services ._base import BaseService
20- from perdoo .settings import Comicvine as ComicvineSettings
2120from perdoo .utils import IssueSearch , Search , SeriesSearch
2221
2322LOGGER = logging .getLogger (__name__ )
2423DEFAULT_CHOICE = Choice (title = "None of the Above" , value = None )
2524
2625
2726class Comicvine (BaseService [Volume , Issue ]):
28- def __init__ (self , settings : ComicvineSettings ):
27+ def __init__ (self , api_key : str ):
2928 cache = SQLiteCache (path = get_cache_root () / "simyan.sqlite" )
30- self .session = Simyan (api_key = settings . api_key , cache = cache )
29+ self .session = Simyan (api_key = api_key , cache = cache )
3130
3231 def _search_series (
3332 self , name : str | None , volume : int | None , year : int | None , filename : str
@@ -187,17 +186,28 @@ def load_role(value: str) -> Role:
187186
188187 return MetronInfo (
189188 ids = [Id (primary = True , source = InformationSource .COMIC_VINE , value = str (issue .id ))],
190- publisher = Publisher (id = str (series .publisher .id ), name = series .publisher .name ),
191- series = Series (id = str (series .id ), name = series .name , start_year = series .start_year ),
189+ publisher = Publisher (id = str (series .publisher .id ), name = series .publisher .name )
190+ if series .publisher and series .publisher .name
191+ else None ,
192+ series = Series (
193+ id = str (series .id ),
194+ name = series .name ,
195+ start_year = series .start_year ,
196+ alternative_names = [],
197+ ),
192198 collection_title = issue .name ,
193199 number = issue .number ,
194200 summary = issue .summary ,
195201 cover_date = issue .cover_date ,
196202 store_date = issue .store_date ,
197- arcs = [Arc (id = str (x .id ), name = x .name ) for x in issue .story_arcs ],
198- characters = [Resource [str ](id = str (x .id ), value = x .name ) for x in issue .characters ],
199- teams = [Resource [str ](id = str (x .id ), value = x .name ) for x in issue .teams ],
200- locations = [Resource [str ](id = str (x .id ), value = x .name ) for x in issue .locations ],
203+ arcs = [Arc (id = str (x .id ), name = x .name ) for x in issue .story_arcs if x .name ],
204+ characters = [
205+ Resource [str ](id = str (x .id ), value = x .name ) for x in issue .characters if x .name
206+ ],
207+ teams = [Resource [str ](id = str (x .id ), value = x .name ) for x in issue .teams if x .name ],
208+ locations = [
209+ Resource [str ](id = str (x .id ), value = x .name ) for x in issue .locations if x .name
210+ ],
201211 urls = [Url (primary = True , value = issue .site_url )],
202212 credits = [
203213 Credit (
@@ -209,8 +219,15 @@ def load_role(value: str) -> Role:
209219 ],
210220 )
211221 for x in issue .creators
222+ if x .name
212223 ],
213224 last_modified = datetime .now (),
225+ genres = [],
226+ prices = [],
227+ reprints = [],
228+ stories = [],
229+ tags = [],
230+ universes = [],
214231 )
215232
216233 def _process_comic_info (self , series : Volume , issue : Issue ) -> ComicInfo | None :
@@ -221,17 +238,19 @@ def _process_comic_info(self, series: Volume, issue: Issue) -> ComicInfo | None:
221238 summary = issue .summary ,
222239 publisher = series .publisher .name if series .publisher else None ,
223240 web = issue .site_url ,
241+ pages = [],
224242 )
225243
226244 comic_info .cover_date = issue .cover_date
227245 comic_info .credits = {
228246 x .name : [r .strip () for r in re .split (r"[~\r\n,]+" , x .roles ) if r .strip ()]
229247 for x in issue .creators
248+ if x .name
230249 }
231- comic_info .character_list = [x .name for x in issue .characters ]
232- comic_info .team_list = [x .name for x in issue .teams ]
233- comic_info .location_list = [x .name for x in issue .locations ]
234- comic_info .story_arc_list = [x .name for x in issue .story_arcs ]
250+ comic_info .character_list = [x .name for x in issue .characters if x . name ]
251+ comic_info .team_list = [x .name for x in issue .teams if x . name ]
252+ comic_info .location_list = [x .name for x in issue .locations if x . name ]
253+ comic_info .story_arc_list = [x .name for x in issue .story_arcs if x . name ]
235254
236255 return comic_info
237256
0 commit comments