Files
vrobbler/vrobbler/apps/videos/utils.py

67 lines
2.2 KiB
Python

import logging
from scrobbles.utils import convert_to_seconds
from videos.imdb import lookup_video_from_imdb
from videos.models import Series, Video
from videos.skatevideosite import lookup_video_from_skatevideosite
logger = logging.getLogger(__name__)
def get_or_create_video(data_dict: dict, post_keys: dict, force_update=False):
name_or_id = data_dict.get(post_keys.get("IMDB_ID"), "") or data_dict.get(
post_keys.get("VIDEO_TITLE"), ""
)
imdb_metadata = lookup_video_from_imdb(name_or_id)
# skatevideosite_metadata = lookup_video_from_skatevideosite(name_or_id)
# youtube_metadata = {} # TODO lookup_video_from_youtube(name_or_id)
video_dict = imdb_metadata
if not video_dict:
logger.info(
"No video found on imdb, skatevideosite or youtube, cannot scrobble",
extra={"name_or_id": name_or_id},
)
return
video, video_created = Video.objects.get_or_create(
imdb_id=video_dict.get("imdb_id"),
title=video_dict.get("title"),
)
if video_created or force_update:
if not "overview" in video_dict.keys():
video_dict["overview"] = data_dict.get(
post_keys.get("OVERVIEW"), None
)
if not "tagline" in video_dict.keys():
video_dict["tagline"] = data_dict.get(
post_keys.get("TAGLINE"), None
)
if not "tmdb_id" in video_dict.keys():
video_dict["tmdb_id"] = data_dict.get(
post_keys.get("TMDB_ID"), None
)
series_name = video_dict.pop("series_name", None)
if series_name:
series, series_created = Series.objects.get_or_create(
name=series_name
)
if series_created:
series.fix_metadata()
video_dict["tv_series_id"] = series.id
if genres := video_dict.pop("genres", None):
video.genre.add(*genres)
if cover_url := video_dict.pop("cover_url", None):
video.scrape_cover_from_url(cover_url)
Video.objects.filter(pk=video.id).update(**video_dict)
video.refresh_from_db()
return video
def get_or_create_video_from_skatevideosite(title: str, force_update=True):
...