From 203a9abaaa017bfe15274fb3cc8e5fb240ae789c Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Sun, 19 Mar 2023 10:17:43 +0100 Subject: [PATCH] Reformat code --- server/app.py | 6 ++--- .../extractors/all/tvmaze.py | 25 ++++++++++++++++++- .../extractors/collection/aggregated.py | 1 - .../extractors/collection/base.py | 8 +++++- .../extractors/collection/tmdb.py | 3 --- .../extractors/collection/tt_rss.py | 1 - .../extractors/collection/tvmaze.py | 12 ++++++--- .../extractors/generic.py | 14 ++++++++--- .../extractors/media/tmdb.py | 13 +++++++--- .../extractors/media/tvmaze.py | 7 ++++-- .../extractors/media/youtube.py | 5 +++- .../extractors/media/ytdl.py | 1 - 12 files changed, 72 insertions(+), 24 deletions(-) diff --git a/server/app.py b/server/app.py index 4566c70..424d1f3 100644 --- a/server/app.py +++ b/server/app.py @@ -45,13 +45,13 @@ from pony import orm from entertainment_decider import common from entertainment_decider.models import ( + MediaCollection, + MediaCollectionLink, + MediaElement, Query, Tag, are_multiple_considered, db, - MediaCollection, - MediaCollectionLink, - MediaElement, get_all_considered, setup_custom_tables, update_element_lookup_cache, diff --git a/server/entertainment_decider/extractors/all/tvmaze.py b/server/entertainment_decider/extractors/all/tvmaze.py index 3c6fb01..cca1c15 100644 --- a/server/entertainment_decider/extractors/all/tvmaze.py +++ b/server/entertainment_decider/extractors/all/tvmaze.py @@ -1,6 +1,15 @@ from __future__ import annotations -from typing import Any, Dict, List, Literal, Optional, TypeVar, TypedDict, Union +from typing import ( + Any, + Dict, + List, + Literal, + Optional, + TypeVar, + TypedDict, + Union, +) Weekdays = Union[ @@ -19,11 +28,13 @@ class TvmazeCountry(TypedDict): code: str timezone: str + class TvmazeEmbeddings(TypedDict, total=False): show: TvmazeShow seasons: List[TvmazeSeason] episodes: List[TvmazeEpisode] + class TvmazeEpisode(TypedDict): id: int url: str @@ -39,18 +50,22 @@ class TvmazeEpisode(TypedDict): image: TvmazeImage summary: str + class TvmazeEpisodeEmbedded(TvmazeEpisode): _embedded: TvmazeEmbeddings + class TvmazeExternalIds(TypedDict): tvrage: Optional[int] thetvdb: Optional[int] imdb: Optional[str] + class TvmazeImage(TypedDict): medium: Optional[str] original: str + def select_best_image(*image_list: TvmazeImage) -> Optional[str]: for image in image_list: if image is not None: @@ -59,6 +74,7 @@ def select_best_image(*image_list: TvmazeImage) -> Optional[str]: return found return None + class TvmazeNetwork(TypedDict): id: int name: str @@ -66,13 +82,16 @@ class TvmazeNetwork(TypedDict): webChannel: Optional[Any] dvdCountry: Optional[TvmazeCountry] + class TvmazeRating(TypedDict): average: int + class TvmazeSchedule(TypedDict): time: str days: List[Weekdays] + class TvmazeSeason(TypedDict): id: int url: str @@ -86,6 +105,7 @@ class TvmazeSeason(TypedDict): image: TvmazeImage summary: str + class TvmazeShow(TypedDict): id: int url: str @@ -107,11 +127,14 @@ class TvmazeShow(TypedDict): summary: str updated: int + class TvmazeShowEmbedded(TvmazeShow): _embedded: TvmazeEmbeddings T = TypeVar("T", bound=Dict) + + def add_embedding(object: T, key: str, value: Any, parent_key: str = "_embedded") -> T: if parent_key not in object: object[parent_key] = {} diff --git a/server/entertainment_decider/extractors/collection/aggregated.py b/server/entertainment_decider/extractors/collection/aggregated.py index beab9bd..12a4512 100644 --- a/server/entertainment_decider/extractors/collection/aggregated.py +++ b/server/entertainment_decider/extractors/collection/aggregated.py @@ -19,7 +19,6 @@ DataType: TypeAlias = List[List[MediaElement]] class AggregatedCollectionExtractor(CollectionExtractor[DataType]): - __uri_regex = re.compile(r"^aggregated:///(?P\d+(,\d+)*)") @classmethod diff --git a/server/entertainment_decider/extractors/collection/base.py b/server/entertainment_decider/extractors/collection/base.py index 330bbd0..1c8495a 100644 --- a/server/entertainment_decider/extractors/collection/base.py +++ b/server/entertainment_decider/extractors/collection/base.py @@ -3,7 +3,13 @@ from __future__ import annotations from datetime import datetime, timedelta import logging import math -from typing import Any, Callable, Mapping, Optional, TypeVar +from typing import ( + Any, + Callable, + Mapping, + Optional, + TypeVar, +) from pony import orm diff --git a/server/entertainment_decider/extractors/collection/tmdb.py b/server/entertainment_decider/extractors/collection/tmdb.py index 18287fc..b0b6819 100644 --- a/server/entertainment_decider/extractors/collection/tmdb.py +++ b/server/entertainment_decider/extractors/collection/tmdb.py @@ -25,7 +25,6 @@ T = TypeVar("T") class TmdbBaseExtractor(CollectionExtractor[T]): - TMDB_CLASS: ClassVar[str] SUPPORTED_PATTERN = re.compile( @@ -72,7 +71,6 @@ class TmdbBaseExtractor(CollectionExtractor[T]): class TmdbCollectionExtractor(TmdbBaseExtractor[TmdbCollectionData]): - TMDB_CLASS = "collection" def _extract_online(self, uri: str) -> ExtractedDataOnline[TmdbCollectionData]: @@ -112,7 +110,6 @@ class TmdbCollectionExtractor(TmdbBaseExtractor[TmdbCollectionData]): class TmdbKeywordExtractor(TmdbBaseExtractor[TmdbKeywordData]): - TMDB_CLASS = "keyword" def _extract_online(self, uri: str) -> ExtractedDataOnline[TmdbKeywordData]: diff --git a/server/entertainment_decider/extractors/collection/tt_rss.py b/server/entertainment_decider/extractors/collection/tt_rss.py index 998af78..5b5956e 100644 --- a/server/entertainment_decider/extractors/collection/tt_rss.py +++ b/server/entertainment_decider/extractors/collection/tt_rss.py @@ -18,7 +18,6 @@ from .base import CollectionExtractor class TtRssCollectionExtractor(CollectionExtractor[HeadlineList]): - __params: TtRssConnectionParameter __label_filter: Optional[int] __mark_as_read: bool diff --git a/server/entertainment_decider/extractors/collection/tvmaze.py b/server/entertainment_decider/extractors/collection/tvmaze.py index 8bf5532..c9b6e91 100644 --- a/server/entertainment_decider/extractors/collection/tvmaze.py +++ b/server/entertainment_decider/extractors/collection/tvmaze.py @@ -8,8 +8,15 @@ from typing import List, Optional from pony import orm # TODO remove import requests -from ...models import MediaCollection, Tag -from ..all.tvmaze import TvmazeEpisodeEmbedded, TvmazeShowEmbedded, add_embedding +from ...models import ( + MediaCollection, + Tag, +) +from ..all.tvmaze import ( + TvmazeEpisodeEmbedded, + TvmazeShowEmbedded, + add_embedding, +) from ..generic import ( ChangedReport, ExtractedDataOnline, @@ -20,7 +27,6 @@ from .base import CollectionExtractor class TvmazeCollectionExtractor(CollectionExtractor[TvmazeShowEmbedded]): - SUPPORTED_PATTERN = re.compile( r"""^ ( diff --git a/server/entertainment_decider/extractors/generic.py b/server/entertainment_decider/extractors/generic.py index 66ad348..f3cf0cb 100644 --- a/server/entertainment_decider/extractors/generic.py +++ b/server/entertainment_decider/extractors/generic.py @@ -8,7 +8,10 @@ from enum import Enum import logging from typing import Generic, Optional, TypeVar -from ..models import MediaCollection, MediaElement +from ..models import ( + MediaCollection, + MediaElement, +) T = TypeVar("T") @@ -33,7 +36,6 @@ class ChangedReport(Enum): class SuitableLevel(Enum): - NO = (False, False) FALLBACK = (True, False) ALWAYS = (True, True) @@ -142,10 +144,14 @@ E = TypeVar("E", MediaElement, MediaCollection) class GeneralExtractor(Generic[E, T]): - name: str - def __init__(self, name: str): + def __init__( + self, + name: str, + ): + self.key = key + self.long_name = long_name self.name = name # abstract (for media & collection base classes) diff --git a/server/entertainment_decider/extractors/media/tmdb.py b/server/entertainment_decider/extractors/media/tmdb.py index de2dbfc..165a517 100644 --- a/server/entertainment_decider/extractors/media/tmdb.py +++ b/server/entertainment_decider/extractors/media/tmdb.py @@ -6,8 +6,16 @@ from typing import List, Optional from pony import orm -from ...models import MediaElement, MediaThumbnail, Query, Tag -from ..all.tmdb import TmdbMovieData, TMDB_REGEX_URI +from ...models import ( + MediaElement, + MediaThumbnail, + Query, + Tag, +) +from ..all.tmdb import ( + TMDB_REGEX_URI, + TmdbMovieData, +) from ..generic import ( ChangedReport, ExtractedDataOnline, @@ -19,7 +27,6 @@ from .base import MediaExtractor class TmdbMovieMediaExtractor(MediaExtractor[TmdbMovieData]): - SUPPORTED_PATTERN = re.compile( rf"""^ {TMDB_REGEX_URI} diff --git a/server/entertainment_decider/extractors/media/tvmaze.py b/server/entertainment_decider/extractors/media/tvmaze.py index 22f83be..3d00ed3 100644 --- a/server/entertainment_decider/extractors/media/tvmaze.py +++ b/server/entertainment_decider/extractors/media/tvmaze.py @@ -7,7 +7,11 @@ from typing import Optional import requests from ...models import MediaElement, MediaThumbnail -from ..all.tvmaze import TvmazeEpisodeEmbedded, TvmazeShowEmbedded, select_best_image +from ..all.tvmaze import ( + TvmazeEpisodeEmbedded, + TvmazeShowEmbedded, + select_best_image, +) from ..generic import ( ChangedReport, ExtractedDataOnline, @@ -19,7 +23,6 @@ from .base import MediaExtractor class TvmazeMediaExtractor(MediaExtractor[TvmazeEpisodeEmbedded]): - SUPPORTED_PATTERN = re.compile( r"""^ ( diff --git a/server/entertainment_decider/extractors/media/youtube.py b/server/entertainment_decider/extractors/media/youtube.py index e1bf7a4..ba79343 100644 --- a/server/entertainment_decider/extractors/media/youtube.py +++ b/server/entertainment_decider/extractors/media/youtube.py @@ -5,7 +5,10 @@ import logging import re from typing import Optional -from youtubesearchpython import ResultMode, Video +from youtubesearchpython import ( + ResultMode, + Video, +) from ...models import ( MediaElement, diff --git a/server/entertainment_decider/extractors/media/ytdl.py b/server/entertainment_decider/extractors/media/ytdl.py index ebf0648..a7070dc 100644 --- a/server/entertainment_decider/extractors/media/ytdl.py +++ b/server/entertainment_decider/extractors/media/ytdl.py @@ -23,7 +23,6 @@ from .base import MediaExtractor class YtdlMediaExtractor(MediaExtractor[Dict]): - SUPPORTED_PATTERN = re.compile( r"""^ https?://