|
|
|
|
@@ -34,12 +34,6 @@ from plugin_helpers import dump_response_html, get_setting_bool, log_url, notify
|
|
|
|
|
|
|
|
|
|
ADDON_ID = "plugin.video.viewit"
|
|
|
|
|
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_DUMP_HTML = "debug_dump_html"
|
|
|
|
|
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):
|
|
|
|
|
"""Metadata-Plugin für eine autorisierte Quelle."""
|
|
|
|
|
|
|
|
|
|
name = "einschalten"
|
|
|
|
|
name = "Einschalten"
|
|
|
|
|
|
|
|
|
|
def __init__(self) -> None:
|
|
|
|
|
self.is_available = REQUESTS_AVAILABLE
|
|
|
|
|
@@ -501,21 +495,21 @@ class EinschaltenPlugin(BasisPlugin):
|
|
|
|
|
base = self._get_base_url()
|
|
|
|
|
if not base:
|
|
|
|
|
return ""
|
|
|
|
|
path = _get_setting_text(SETTING_INDEX_PATH, default=DEFAULT_INDEX_PATH).strip() or "/"
|
|
|
|
|
path = DEFAULT_INDEX_PATH
|
|
|
|
|
return urljoin(base + "/", path.lstrip("/"))
|
|
|
|
|
|
|
|
|
|
def _new_titles_url(self) -> str:
|
|
|
|
|
base = self._get_base_url()
|
|
|
|
|
if not base:
|
|
|
|
|
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("/"))
|
|
|
|
|
|
|
|
|
|
def _genres_url(self) -> str:
|
|
|
|
|
base = self._get_base_url()
|
|
|
|
|
if not base:
|
|
|
|
|
return ""
|
|
|
|
|
path = _get_setting_text(SETTING_GENRES_PATH, default=DEFAULT_GENRES_PATH).strip() or "/genres"
|
|
|
|
|
path = DEFAULT_GENRES_PATH
|
|
|
|
|
return urljoin(base + "/", path.lstrip("/"))
|
|
|
|
|
|
|
|
|
|
def _api_genres_url(self) -> str:
|
|
|
|
|
@@ -528,7 +522,7 @@ class EinschaltenPlugin(BasisPlugin):
|
|
|
|
|
base = self._get_base_url()
|
|
|
|
|
if not base:
|
|
|
|
|
return ""
|
|
|
|
|
path = _get_setting_text(SETTING_SEARCH_PATH, default=DEFAULT_SEARCH_PATH).strip() or "/search"
|
|
|
|
|
path = DEFAULT_SEARCH_PATH
|
|
|
|
|
url = urljoin(base + "/", path.lstrip("/"))
|
|
|
|
|
return f"{url}?{urlencode({'query': query})}"
|
|
|
|
|
|
|
|
|
|
@@ -570,9 +564,7 @@ class EinschaltenPlugin(BasisPlugin):
|
|
|
|
|
base = self._get_base_url()
|
|
|
|
|
if not base:
|
|
|
|
|
return ""
|
|
|
|
|
template = _get_setting_text(SETTING_WATCH_PATH_TEMPLATE, default=DEFAULT_WATCH_PATH_TEMPLATE).strip()
|
|
|
|
|
if not template:
|
|
|
|
|
template = DEFAULT_WATCH_PATH_TEMPLATE
|
|
|
|
|
template = DEFAULT_WATCH_PATH_TEMPLATE
|
|
|
|
|
try:
|
|
|
|
|
path = template.format(id=int(movie_id))
|
|
|
|
|
except Exception:
|
|
|
|
|
@@ -996,21 +988,17 @@ class EinschaltenPlugin(BasisPlugin):
|
|
|
|
|
movie_id = self._ensure_title_id(title)
|
|
|
|
|
if movie_id is not None:
|
|
|
|
|
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).
|
|
|
|
|
return ["Stream"]
|
|
|
|
|
return ["Details"]
|
|
|
|
|
# Playback: expose a single "Stream" folder (inside: 1 playable item = Filmtitel).
|
|
|
|
|
return ["Stream"]
|
|
|
|
|
|
|
|
|
|
def episodes_for(self, title: str, season: str) -> List[str]:
|
|
|
|
|
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()
|
|
|
|
|
return [title] if title else []
|
|
|
|
|
return []
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
season = (season or "").strip()
|
|
|
|
|
episode = (episode or "").strip()
|
|
|
|
|
|