Simplify plugin settings and names

This commit is contained in:
2026-02-01 19:05:08 +01:00
parent cd2e8e2b15
commit da83ed02be
5 changed files with 12 additions and 30 deletions

View File

@@ -556,7 +556,7 @@ def search_animes(query: str) -> List[SeriesResult]:
class AniworldPlugin(BasisPlugin): class AniworldPlugin(BasisPlugin):
name = "AniWorld (aniworld.to)" name = "Aniworld"
def __init__(self) -> None: def __init__(self) -> None:
self._anime_results: Dict[str, SeriesResult] = {} self._anime_results: Dict[str, SeriesResult] = {}

View File

@@ -34,12 +34,6 @@ from plugin_helpers import dump_response_html, get_setting_bool, log_url, notify
ADDON_ID = "plugin.video.viewit" ADDON_ID = "plugin.video.viewit"
SETTING_BASE_URL = "einschalten_base_url" SETTING_BASE_URL = "einschalten_base_url"
SETTING_INDEX_PATH = "einschalten_index_path"
SETTING_NEW_TITLES_PATH = "einschalten_new_titles_path"
SETTING_SEARCH_PATH = "einschalten_search_path"
SETTING_GENRES_PATH = "einschalten_genres_path"
SETTING_ENABLE_PLAYBACK = "einschalten_enable_playback"
SETTING_WATCH_PATH_TEMPLATE = "einschalten_watch_path_template"
GLOBAL_SETTING_LOG_URLS = "debug_log_urls" GLOBAL_SETTING_LOG_URLS = "debug_log_urls"
GLOBAL_SETTING_DUMP_HTML = "debug_dump_html" GLOBAL_SETTING_DUMP_HTML = "debug_dump_html"
GLOBAL_SETTING_SHOW_URL_INFO = "debug_show_url_info" GLOBAL_SETTING_SHOW_URL_INFO = "debug_show_url_info"
@@ -474,7 +468,7 @@ def _parse_ng_state_genres(payload: Dict[str, Any]) -> Dict[str, int]:
class EinschaltenPlugin(BasisPlugin): class EinschaltenPlugin(BasisPlugin):
"""Metadata-Plugin für eine autorisierte Quelle.""" """Metadata-Plugin für eine autorisierte Quelle."""
name = "einschalten" name = "Einschalten"
def __init__(self) -> None: def __init__(self) -> None:
self.is_available = REQUESTS_AVAILABLE self.is_available = REQUESTS_AVAILABLE
@@ -501,21 +495,21 @@ class EinschaltenPlugin(BasisPlugin):
base = self._get_base_url() base = self._get_base_url()
if not base: if not base:
return "" return ""
path = _get_setting_text(SETTING_INDEX_PATH, default=DEFAULT_INDEX_PATH).strip() or "/" path = DEFAULT_INDEX_PATH
return urljoin(base + "/", path.lstrip("/")) return urljoin(base + "/", path.lstrip("/"))
def _new_titles_url(self) -> str: def _new_titles_url(self) -> str:
base = self._get_base_url() base = self._get_base_url()
if not base: if not base:
return "" return ""
path = _get_setting_text(SETTING_NEW_TITLES_PATH, default=DEFAULT_NEW_TITLES_PATH).strip() or "/movies/new" path = DEFAULT_NEW_TITLES_PATH
return urljoin(base + "/", path.lstrip("/")) return urljoin(base + "/", path.lstrip("/"))
def _genres_url(self) -> str: def _genres_url(self) -> str:
base = self._get_base_url() base = self._get_base_url()
if not base: if not base:
return "" return ""
path = _get_setting_text(SETTING_GENRES_PATH, default=DEFAULT_GENRES_PATH).strip() or "/genres" path = DEFAULT_GENRES_PATH
return urljoin(base + "/", path.lstrip("/")) return urljoin(base + "/", path.lstrip("/"))
def _api_genres_url(self) -> str: def _api_genres_url(self) -> str:
@@ -528,7 +522,7 @@ class EinschaltenPlugin(BasisPlugin):
base = self._get_base_url() base = self._get_base_url()
if not base: if not base:
return "" return ""
path = _get_setting_text(SETTING_SEARCH_PATH, default=DEFAULT_SEARCH_PATH).strip() or "/search" path = DEFAULT_SEARCH_PATH
url = urljoin(base + "/", path.lstrip("/")) url = urljoin(base + "/", path.lstrip("/"))
return f"{url}?{urlencode({'query': query})}" return f"{url}?{urlencode({'query': query})}"
@@ -570,9 +564,7 @@ class EinschaltenPlugin(BasisPlugin):
base = self._get_base_url() base = self._get_base_url()
if not base: if not base:
return "" return ""
template = _get_setting_text(SETTING_WATCH_PATH_TEMPLATE, default=DEFAULT_WATCH_PATH_TEMPLATE).strip() template = DEFAULT_WATCH_PATH_TEMPLATE
if not template:
template = DEFAULT_WATCH_PATH_TEMPLATE
try: try:
path = template.format(id=int(movie_id)) path = template.format(id=int(movie_id))
except Exception: except Exception:
@@ -996,21 +988,17 @@ class EinschaltenPlugin(BasisPlugin):
movie_id = self._ensure_title_id(title) movie_id = self._ensure_title_id(title)
if movie_id is not None: if movie_id is not None:
self._fetch_movie_detail(movie_id) self._fetch_movie_detail(movie_id)
if _get_setting_bool(SETTING_ENABLE_PLAYBACK, default=False): # Playback: expose a single "Stream" folder (inside: 1 playable item = Filmtitel).
# Playback: expose a single "Stream" folder (inside: 1 playable item = Filmtitel). return ["Stream"]
return ["Stream"]
return ["Details"]
def episodes_for(self, title: str, season: str) -> List[str]: def episodes_for(self, title: str, season: str) -> List[str]:
season = (season or "").strip() season = (season or "").strip()
if season.casefold() == "stream" and _get_setting_bool(SETTING_ENABLE_PLAYBACK, default=False): if season.casefold() == "stream":
title = (title or "").strip() title = (title or "").strip()
return [title] if title else [] return [title] if title else []
return [] return []
def stream_link_for(self, title: str, season: str, episode: str) -> Optional[str]: def stream_link_for(self, title: str, season: str, episode: str) -> Optional[str]:
if not _get_setting_bool(SETTING_ENABLE_PLAYBACK, default=False):
return None
title = (title or "").strip() title = (title or "").strip()
season = (season or "").strip() season = (season or "").strip()
episode = (episode or "").strip() episode = (episode or "").strip()

View File

@@ -619,7 +619,7 @@ def scrape_series_detail(
class SerienstreamPlugin(BasisPlugin): class SerienstreamPlugin(BasisPlugin):
"""Downloader-Plugin, das Serien von s.to ueber requests/bs4 bereitstellt.""" """Downloader-Plugin, das Serien von s.to ueber requests/bs4 bereitstellt."""
name = "Serienstream (s.to)" name = "Serienstream"
POPULAR_GENRE_LABEL = "⭐ Beliebte Serien" POPULAR_GENRE_LABEL = "⭐ Beliebte Serien"
def __init__(self) -> None: def __init__(self) -> None:

View File

@@ -119,7 +119,7 @@ def _strip_der_film_suffix(title: str) -> str:
class TopstreamfilmPlugin(BasisPlugin): class TopstreamfilmPlugin(BasisPlugin):
"""Integration fuer eine HTML-basierte Suchseite.""" """Integration fuer eine HTML-basierte Suchseite."""
name = "TopStreamFilm" name = "Topstreamfilm"
def __init__(self) -> None: def __init__(self) -> None:
self._session: RequestsSession | None = None self._session: RequestsSession | None = None

View File

@@ -17,12 +17,6 @@
</category> </category>
<category label="Einschalten"> <category label="Einschalten">
<setting id="einschalten_base_url" type="text" label="Domain (BASE_URL)" default="https://einschalten.in" /> <setting id="einschalten_base_url" type="text" label="Domain (BASE_URL)" default="https://einschalten.in" />
<setting id="einschalten_index_path" type="text" label="Index-Pfad (z.B. /)" default="/" />
<setting id="einschalten_new_titles_path" type="text" label="Neue-Titel-Pfad (z.B. /movies/new)" default="/movies/new" />
<setting id="einschalten_search_path" type="text" label="Suche-Pfad (z.B. /search)" default="/search" />
<setting id="einschalten_genres_path" type="text" label="Genres-Pfad (z.B. /genres)" default="/genres" />
<setting id="einschalten_enable_playback" type="bool" label="Wiedergabe aktivieren (nur autorisierte Quellen)" default="false" />
<setting id="einschalten_watch_path_template" type="text" label="Watch-Pfad-Template (z.B. /api/movies/{id}/watch)" default="/api/movies/{id}/watch" />
</category> </category>
<category label="TMDB"> <category label="TMDB">
<setting id="tmdb_api_key" type="text" label="TMDB API Key" default="" /> <setting id="tmdb_api_key" type="text" label="TMDB API Key" default="" />