mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-10-31 10:37:13 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			1001 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1001 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import annotations
 | |
| from typing import TYPE_CHECKING
 | |
| 
 | |
| if TYPE_CHECKING:
 | |
| 	from providers.implementations.themoviedatabase import TheMovieDatabase
 | |
| 
 | |
| from typing import List, Optional
 | |
| from providers.types.metadataid import MetadataID
 | |
| 
 | |
| 
 | |
| class IdMapper:
 | |
| 	def init(self, *, language: str, tmdb: Optional[TheMovieDatabase]):
 | |
| 		self.language = language
 | |
| 		self._tmdb = tmdb
 | |
| 
 | |
| 	async def get_show(
 | |
| 		self, show: dict[str, MetadataID], *, required: Optional[List[str]] = None
 | |
| 	):
 | |
| 		ids = show
 | |
| 
 | |
| 		# Only fetch using tmdb if one of the required ids is not already known.
 | |
| 		should_fetch = required is not None and any((x not in ids for x in required))
 | |
| 		if self._tmdb and self._tmdb.name in ids and should_fetch:
 | |
| 			tmdb_info = await self._tmdb.identify_show(ids[self._tmdb.name].data_id)
 | |
| 			return {**ids, **tmdb_info.external_id}
 | |
| 		return ids
 | |
| 
 | |
| 	async def get_movie(
 | |
| 		self, movie: dict[str, MetadataID], *, required: Optional[List[str]] = None
 | |
| 	):
 | |
| 		# TODO: actually do something here
 | |
| 		return movie
 |