1414from simyan .schemas .volume import Volume
1515
1616from perdoo import get_cache_home
17- from perdoo .services ._base import BaseService
18- from perdoo .utils import IssueSearch , Search , SeriesSearch
17+ from perdoo .services ._base import prompt_select
18+ from perdoo .services . _models import IssueSearch , MetadataResult , Search , SeriesSearch
1919
2020LOGGER = logging .getLogger (__name__ )
2121
2222
23- class Comicvine ( BaseService [ Volume , Issue ]) :
23+ class Comicvine :
2424 def __init__ (self , api_key : str ):
2525 self .session = Simyan (
2626 api_key = api_key ,
@@ -63,7 +63,7 @@ def _search_series(
6363 )
6464 for x in options
6565 ]
66- selected = self . _prompt_select (
66+ selected = prompt_select (
6767 message = f"Searching Comicvine for Volumes matching '{ filename } '"
6868 if not year
6969 else f"Searching Comicvine for Volume '{ search } '" ,
@@ -124,7 +124,7 @@ def _search_issue(self, series_id: int, number: str | None, filename: str) -> in
124124 )
125125 for x in options
126126 ]
127- selected = self . _prompt_select (
127+ selected = prompt_select (
128128 message = f"Searching Comicvine for Issues matching '{ filename } '"
129129 if not number
130130 else f"Searching Comicvine for Issues with number '{ number } '" ,
@@ -160,7 +160,7 @@ def fetch_issue(self, series_id: int, search: IssueSearch, filename: str) -> Iss
160160 return self .fetch_issue (series_id = series_id , search = search , filename = filename )
161161 return None
162162
163- def _process_metron_info (self , series : Volume , issue : Issue ) -> MetronInfo | None :
163+ def _build_metron_info (self , series : Volume , issue : Issue ) -> MetronInfo | None :
164164 from comic_archive .metadata .metron_info import ( # noqa: PLC0415
165165 Arc ,
166166 Credit ,
@@ -224,7 +224,7 @@ def load_role(value: str) -> Role:
224224 universes = [],
225225 )
226226
227- def _process_comic_info (self , series : Volume , issue : Issue ) -> ComicInfo | None :
227+ def _build_comic_info (self , series : Volume , issue : Issue ) -> ComicInfo | None :
228228 comic_info = ComicInfo (
229229 title = issue .name ,
230230 series = series .name ,
@@ -248,7 +248,7 @@ def _process_comic_info(self, series: Volume, issue: Issue) -> ComicInfo | None:
248248
249249 return comic_info
250250
251- def fetch (self , search : Search ) -> tuple [ MetronInfo | None , ComicInfo | None ] :
251+ def fetch (self , search : Search ) -> MetadataResult :
252252 if not search .series .comicvine and search .issue .comicvine :
253253 try :
254254 temp = self .session .get_issue (issue_id = search .issue .comicvine )
@@ -258,13 +258,13 @@ def fetch(self, search: Search) -> tuple[MetronInfo | None, ComicInfo | None]:
258258
259259 series = self .fetch_series (search = search .series , filename = search .filename )
260260 if not series :
261- return None , None
261+ return MetadataResult ()
262262
263263 issue = self .fetch_issue (series_id = series .id , search = search .issue , filename = search .filename )
264264 if not issue :
265- return None , None
265+ return MetadataResult ()
266266
267- metron_info = self . _process_metron_info ( series = series , issue = issue )
268- comic_info = self ._process_comic_info (series = series , issue = issue )
269-
270- return metron_info , comic_info
267+ return MetadataResult (
268+ comic_info = self ._build_comic_info (series = series , issue = issue ),
269+ metron_info = self . _build_metron_info ( series = series , issue = issue ),
270+ )
0 commit comments