You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
940 B
Python

from __future__ import annotations
from typing import Dict
from ...config import app_config
from ...models import MediaCollection
from ..helpers import expect_suitable_extractor
from .base import CollectionExtractor
from .tt_rss import TtRssCollectionExtractor, TtRssConnectionParameter
from .youtube import YouTubeCollectionExtractor
tt_rss_params = TtRssConnectionParameter(**app_config["extractors"]["tt_rss"])
COLLECTION_EXTRACTORS: Dict[str, CollectionExtractor] = {
"tt-rss": TtRssCollectionExtractor(params=tt_rss_params, label_filter=-1033),
"youtube": YouTubeCollectionExtractor(),
}
def collection_extract_uri(uri: str) -> MediaCollection:
elem: MediaCollection = CollectionExtractor.check_uri(uri)
ex = expect_suitable_extractor(COLLECTION_EXTRACTORS.values(), uri)
if not elem:
elem = ex.extract_and_store(uri)
else:
ex.update_object(elem, check_cache_expired=False)
return elem