Add long_name, key to general extractor attributes

master
Felix Stupp 1 year ago
parent a3a07e6ce0
commit ecd43706fd
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -12,6 +12,9 @@ import tmdbsimple as tmdb
tmdb.API_KEY = "f090bb54758cabf231fb605d3e3e0468"
EXTRACTOR_KEY = ".extractor/org.themoviedb"
EXTRACTOR_NAME = "The Movie DB"
TMDB_DATE_FORMAT = "%Y-%m-%d"
TMDB_REGEX_URI = r"""
(

@ -11,6 +11,7 @@ from ...models import Tag, TagKey
EXTRACTOR_KEY = ".extractor/com.youtube"
EXTRACTOR_NAME = "YouTube"
KEYWORD_PREFIX = f"{EXTRACTOR_KEY}/keyword"

@ -35,7 +35,11 @@ class AggregatedCollectionExtractor(CollectionExtractor[DataType]):
return colls
def __init__(self) -> None:
super().__init__("aggregated")
super().__init__(
key=".extractor/.aggregated",
long_name="Aggregated Lists",
name="aggregated",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
return SuitableLevel.always_or_no(self.__uri_regex.match(uri) is not None)

@ -8,6 +8,8 @@ from pony import orm
from ...models import MediaCollection
from ..all.tmdb import (
EXTRACTOR_KEY,
EXTRACTOR_NAME,
TmdbCollectionData,
TMDB_REGEX_URI,
TmdbKeywordData,
@ -46,7 +48,11 @@ class TmdbBaseExtractor(CollectionExtractor[T]):
return int(m.group("id")) if m and m.group("class") == cls.TMDB_CLASS else None
def __init__(self) -> None:
super().__init__("tmdb")
super().__init__(
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
name="tmdb",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
id = self._get_id(uri)

@ -28,7 +28,11 @@ class TtRssCollectionExtractor(CollectionExtractor[HeadlineList]):
mark_as_read: bool = False,
label_filter: Optional[int] = None,
):
super().__init__("tt-rss")
super().__init__(
key=".extractor/org.tt-rss",
long_name="TT-RSS",
name="tt-rss",
)
self.__params = params
self.__label_filter = label_filter
self.__mark_as_read = mark_as_read

@ -12,6 +12,8 @@ from ...models import (
MediaElement,
)
from ..all.tvmaze import (
EXTRACTOR_KEY,
EXTRACTOR_NAME,
TvmazeEpisodeEmbedded,
TvmazeShowEmbedded,
add_embedding,
@ -67,7 +69,11 @@ class TvmazeCollectionExtractor(CollectionExtractor[TvmazeShowEmbedded]):
return f"tvmaze:///shows/{show_id}"
def __init__(self) -> None:
super().__init__("tvmaze")
super().__init__(
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
name="tvmaze",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
show_id = self.__get_show_id(uri)

@ -9,6 +9,10 @@ from pony import orm # TODO remove
import youtubesearchpython
from ...models import MediaCollection
from ..all.youtube import (
EXTRACTOR_KEY,
EXTRACTOR_NAME,
)
from ..generic import (
ChangedReport,
ExtractedDataOnline,
@ -65,7 +69,11 @@ class YouTubeCollectionExtractor(CollectionExtractor[DataType]):
return collection_id
def __init__(self) -> None:
super().__init__("youtube")
super().__init__(
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
name="youtube",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
return SuitableLevel.always_or_no(self.__uri_regex.match(uri) is not None)

@ -145,9 +145,17 @@ E = TypeVar("E", MediaElement, MediaCollection)
class GeneralExtractor(Generic[E, T]):
name: str
"""legacy name for database entries"""
long_name: str
"""(long) name for human readable titles / descriptions"""
key: str
"""key for tag key (prefixes) and further database usage, replaces name"""
def __init__(
self,
*,
key: str,
long_name: str,
name: str,
):
self.key = key

@ -13,6 +13,8 @@ from ...models import (
Tag,
)
from ..all.tmdb import (
EXTRACTOR_KEY,
EXTRACTOR_NAME,
TMDB_REGEX_URI,
TmdbMovieData,
)
@ -45,7 +47,11 @@ class TmdbMovieMediaExtractor(MediaExtractor[TmdbMovieData]):
return int(m.group("movie_id")) if m else None
def __init__(self) -> None:
super().__init__("tmdb")
super().__init__(
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
name="tmdb",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
movie_id = self.__get_movie_id(uri)

@ -8,6 +8,8 @@ import requests
from ...models import MediaElement, MediaThumbnail
from ..all.tvmaze import (
EXTRACTOR_KEY,
EXTRACTOR_NAME,
TvmazeEpisodeEmbedded,
select_best_image,
)
@ -53,7 +55,11 @@ class TvmazeMediaExtractor(MediaExtractor[TvmazeEpisodeEmbedded]):
return f"tvmaze:///episodes/{episode_id}"
def __init__(self) -> None:
super().__init__("tvmaze")
super().__init__(
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
name="tvmaze",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
episode_id = self.__get_episode_id(uri)

@ -16,6 +16,8 @@ from ...models import (
thumbnail_sort_key,
)
from ..all.youtube import (
EXTRACTOR_KEY,
EXTRACTOR_NAME,
YoutubeVideoData,
get_video_tags,
)
@ -52,7 +54,11 @@ class YoutubeMediaExtractor(MediaExtractor[YoutubeVideoData]):
)
def __init__(self) -> None:
super().__init__("youtube")
super().__init__(
name="youtube",
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
)
def uri_suitable(self, uri: str) -> SuitableLevel:
return SuitableLevel.always_or_no(self.__uri_regex.match(uri) is not None)

@ -22,6 +22,10 @@ from ..generic import (
from .base import MediaExtractor
EXTRACTOR_KEY = ".extractor/.yt-dl"
EXTRACTOR_NAME = "YT-DL"
class YtdlMediaExtractor(MediaExtractor[Dict]):
SUPPORTED_PATTERN = re.compile(
r"""^
@ -31,7 +35,11 @@ class YtdlMediaExtractor(MediaExtractor[Dict]):
)
def __init__(self) -> None:
super().__init__("ytdl")
super().__init__(
key=EXTRACTOR_KEY,
long_name=EXTRACTOR_NAME,
name="ytdl",
)
def uri_suitable(self, uri: str) -> SuitableLevel:
return SuitableLevel.fallback_or_no(bool(self.SUPPORTED_PATTERN.search(uri)))

Loading…
Cancel
Save