[videos] Clean imdb getter up and fix series

This commit is contained in:
2025-01-21 23:20:30 -05:00
parent 84790c805c
commit 25a14ed9e7
2 changed files with 38 additions and 28 deletions

View File

@ -35,7 +35,7 @@ class VideoMetadata:
season_number: Optional[str] season_number: Optional[str]
next_imdb_id: Optional[str] next_imdb_id: Optional[str]
year: Optional[int] year: Optional[int]
series_id: Optional[int] tv_series_id: Optional[int]
plot: Optional[str] plot: Optional[str]
imdb_rating: Optional[str] imdb_rating: Optional[str]
cover_url: Optional[str] cover_url: Optional[str]

View File

@ -25,37 +25,45 @@ def lookup_video_from_imdb(
pass pass
video_metadata = metadata.VideoMetadata(imdb_id=imdb_id) video_metadata = metadata.VideoMetadata(imdb_id=imdb_id)
imdb_data: dict = {} imdb_result: dict = {}
imdb_result = imdb_client.get_movie(name_or_id) imdb_result = imdb_client.get_movie(name_or_id)
imdb_client.update(imdb_result, info=["plot", "synopsis", "taglines"])
imdb_data = imdb_result
if not imdb_data: if not imdb_result:
imdb_results = imdb_client.search_movie(name_or_id) imdb_result = {}
imdb_results: list = imdb_client.search_movie(name_or_id)
if len(imdb_results) > 1: if len(imdb_results) > 1:
for result in imdb_results: for result in imdb_results:
if result["kind"] == kind: if result["kind"] == kind:
imdb_data = result imdb_client.update(
result,
info=[
"plot",
"synopsis",
"taglines",
"next_episode",
"genres",
],
)
imdb_result = result
break break
if len(imdb_results) == 1: if len(imdb_results) == 1:
imdb_data = imdb_results[0] imdb_result = imdb_results[0]
imdb_client.update( imdb_client.update(
imdb_data, imdb_result,
info=["plot", "synopsis", "taglines", "next_episode", "genres"], info=["plot", "synopsis", "taglines", "next_episode", "genres"],
) )
if not imdb_data: if not imdb_result:
logger.info( logger.info(
f"[lookup_video_from_imdb] no video found on imdb", f"[lookup_video_from_imdb] no video found on imdb",
extra={"name_or_id": name_or_id}, extra={"name_or_id": name_or_id},
) )
return None return None
imdb_client.update(imdb_data) video_metadata.cover_url = imdb_result.get("cover url")
video_metadata.cover_url = imdb_data.get("cover url")
if video_metadata.cover_url: if video_metadata.cover_url:
video_metadata.cover_url = helpers.resizeImage( video_metadata.cover_url = helpers.resizeImage(
video_metadata.cover_url, width=800 video_metadata.cover_url, width=800
@ -63,25 +71,27 @@ def lookup_video_from_imdb(
video_metadata.video_type = metadata.VideoType.MOVIE video_metadata.video_type = metadata.VideoType.MOVIE
series_name = None series_name = None
if imdb_data.get("kind") == "episode": if imdb_result.get("kind") == "episode":
series_name = imdb_data.get("episode of", None).data.get("title", None) series_name = imdb_result.get("episode of", None).data.get(
series, series_created = Series.objects.get_or_create(name=series_name) "title", None
)
series, _ = Series.objects.get_or_create(name=series_name)
video_metadata.video_type = metadata.VideoType.TV_EPISODE video_metadata.video_type = metadata.VideoType.TV_EPISODE
video_metadata.series_id = series.id video_metadata.tv_series_id = series.id
if imdb_data.get("runtimes"): if imdb_result.get("runtimes"):
video_metadata.run_time_seconds = ( video_metadata.run_time_seconds = (
int(imdb_data.get("runtimes")[0]) * 60 int(imdb_result.get("runtimes")[0]) * 60
) )
video_metadata.title = imdb_data.get("title", "") video_metadata.title = imdb_result.get("title", "")
video_metadata.imdb_id = imdb_data.get("imdbID") video_metadata.imdb_id = imdb_result.get("imdbID")
video_metadata.episode_number = imdb_data.get("episode", None) video_metadata.episode_number = imdb_result.get("episode", None)
video_metadata.season_number = imdb_data.get("season", None) video_metadata.season_number = imdb_result.get("season", None)
video_metadata.next_imdb_id = imdb_data.get("next episode", None) video_metadata.next_imdb_id = imdb_result.get("next episode", None)
video_metadata.year = imdb_data.get("year", None) video_metadata.year = imdb_result.get("year", None)
video_metadata.plot = imdb_data.get("plot outline") video_metadata.plot = imdb_result.get("plot outline")
video_metadata.imdb_rating = imdb_data.get("rating") video_metadata.imdb_rating = imdb_result.get("rating")
video_metadata.genres = imdb_data.get("genres") video_metadata.genres = imdb_result.get("genres")
return video_metadata return video_metadata