dev: bump to 0.1.85.0-dev settings.xml auf Kodi 19+ Format (version=1) migriert, Level-Filter fuer Expert/Advanced korrigiert
This commit is contained in:
@@ -205,6 +205,19 @@ def _set_trakt_ids_property(title: str, tmdb_id: int, imdb_id: str = "") -> None
|
||||
# Trakt-Helfer
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
_PREFERRED_HOSTERS_LIST = ["voe", "streamtape", "doodstream", "vidoza", "mixdrop", "supervideo", "dropload"]
|
||||
|
||||
|
||||
def _get_preferred_hoster() -> str:
|
||||
"""Liest preferred_hoster (enum-Index) und gibt den Hosternamen zurück."""
|
||||
raw = _get_setting_string("preferred_hoster").strip()
|
||||
try:
|
||||
idx = int(raw)
|
||||
return _PREFERRED_HOSTERS_LIST[idx]
|
||||
except (ValueError, IndexError):
|
||||
return raw # Fallback: alten Textwert direkt verwenden
|
||||
|
||||
|
||||
def _trakt_load_token():
|
||||
"""Laedt den gespeicherten Trakt-Token aus den Addon-Settings."""
|
||||
access = _get_setting_string("trakt_access_token").strip()
|
||||
@@ -225,6 +238,7 @@ def _trakt_save_token(token) -> None:
|
||||
addon.setSetting("trakt_access_token", token.access_token)
|
||||
addon.setSetting("trakt_refresh_token", token.refresh_token)
|
||||
addon.setSetting("trakt_token_expires", str(token.expires_at))
|
||||
addon.setSetting("trakt_status", "Verbunden" if token.access_token else "Nicht verbunden")
|
||||
|
||||
|
||||
TRAKT_CLIENT_ID = "5f1a46be11faa2ef286d6a5d4fbdcdfe3b19c87d3799c11af8cf25dae5b802e9"
|
||||
@@ -1542,6 +1556,13 @@ def _sync_update_channel_status_settings() -> None:
|
||||
_set_setting_string("update_active_channel", _channel_label(channel))
|
||||
_set_setting_string("update_active_repo_url", selected_info_url)
|
||||
_set_setting_string("update_available_selected", available_selected)
|
||||
installed = _get_setting_string("update_installed_version").strip()
|
||||
has_update = (
|
||||
bool(available_selected) and available_selected not in ("-", "", "0.0.0")
|
||||
and bool(installed) and installed not in ("-", "", "0.0.0")
|
||||
and _version_sort_key(available_selected) > _version_sort_key(installed)
|
||||
)
|
||||
_get_addon().setSettingBool("update_available_flag", has_update)
|
||||
|
||||
|
||||
def _repo_addon_xml_path() -> str:
|
||||
@@ -4388,7 +4409,7 @@ def _play_episode(
|
||||
selected_hoster: str | None = None
|
||||
forced_hoster = (forced_hoster or "").strip()
|
||||
autoplay = _get_setting_bool("autoplay_enabled", default=False)
|
||||
preferred = _get_setting_string("preferred_hoster").strip()
|
||||
preferred = _get_preferred_hoster()
|
||||
if available_hosters:
|
||||
if forced_hoster:
|
||||
for hoster in available_hosters:
|
||||
@@ -4507,7 +4528,7 @@ def _play_episode_url(
|
||||
|
||||
selected_hoster: str | None = None
|
||||
autoplay = _get_setting_bool("autoplay_enabled", default=False)
|
||||
preferred = _get_setting_string("preferred_hoster").strip()
|
||||
preferred = _get_preferred_hoster()
|
||||
if available_hosters:
|
||||
if autoplay and preferred:
|
||||
pref_lower = preferred.casefold()
|
||||
@@ -4716,28 +4737,34 @@ def _show_country_titles_page(plugin_name: str, country: str, page: int = 1) ->
|
||||
xbmcplugin.endOfDirectory(handle)
|
||||
|
||||
|
||||
def _show_collections_menu(plugin_name: str) -> None:
|
||||
"""Zeigt Sammlungen/Filmreihen eines Plugins (Capability: collections)."""
|
||||
def _show_collections_menu(plugin_name: str, page: int = 1) -> None:
|
||||
"""Zeigt Sammlungen/Filmreihen eines Plugins (Capability: collections) - paginiert."""
|
||||
handle = _get_handle()
|
||||
plugin = _discover_plugins().get(plugin_name)
|
||||
if plugin is None:
|
||||
xbmcgui.Dialog().notification("Sammlungen", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000)
|
||||
xbmcplugin.endOfDirectory(handle)
|
||||
return
|
||||
getter = getattr(plugin, "collections", None)
|
||||
if not callable(getter):
|
||||
page_getter = getattr(plugin, "_collections_page", None)
|
||||
if not callable(page_getter):
|
||||
xbmcplugin.endOfDirectory(handle)
|
||||
return
|
||||
xbmcplugin.setPluginCategory(handle, f"{plugin_name}: Sammlungen")
|
||||
xbmcplugin.setPluginCategory(handle, f"{plugin_name}: Sammlungen (Seite {page})")
|
||||
try:
|
||||
cols = list(getter() or [])
|
||||
cols = list(page_getter(page) or [])
|
||||
except Exception as exc:
|
||||
_log(f"Sammlungen konnten nicht geladen werden ({plugin_name}): {exc}", xbmc.LOGWARNING)
|
||||
_log(f"Sammlungen (Seite {page}) konnten nicht geladen werden ({plugin_name}): {exc}", xbmc.LOGWARNING)
|
||||
xbmcplugin.endOfDirectory(handle)
|
||||
return
|
||||
if page > 1:
|
||||
_add_directory_item(handle, "Vorherige Seite", "collections_menu",
|
||||
{"plugin": plugin_name, "page": str(page - 1)}, is_folder=True)
|
||||
for col in cols:
|
||||
_add_directory_item(handle, str(col), "collection_titles_page",
|
||||
{"plugin": plugin_name, "collection": str(col), "page": "1"}, is_folder=True)
|
||||
if cols:
|
||||
_add_directory_item(handle, "Naechste Seite", "collections_menu",
|
||||
{"plugin": plugin_name, "page": str(page + 1)}, is_folder=True)
|
||||
xbmcplugin.endOfDirectory(handle)
|
||||
|
||||
|
||||
@@ -4792,8 +4819,9 @@ def _show_collection_titles_page(plugin_name: str, collection: str, page: int =
|
||||
_add_directory_item(handle, title, "seasons",
|
||||
{"plugin": plugin_name, "title": title, **_series_url_params(plugin, title)},
|
||||
is_folder=True, info_labels=info_labels, art=art, cast=cast)
|
||||
_add_directory_item(handle, "Naechste Seite", "collection_titles_page",
|
||||
{"plugin": plugin_name, "collection": collection, "page": str(page + 1)}, is_folder=True)
|
||||
if getattr(plugin, "_collection_has_more", False):
|
||||
_add_directory_item(handle, "Naechste Seite", "collection_titles_page",
|
||||
{"plugin": plugin_name, "collection": collection, "page": str(page + 1)}, is_folder=True)
|
||||
xbmcplugin.endOfDirectory(handle)
|
||||
|
||||
|
||||
@@ -5438,7 +5466,10 @@ def _route_country_titles_page(params: dict[str, str]) -> None:
|
||||
|
||||
@_router.route("collections_menu")
|
||||
def _route_collections_menu(params: dict[str, str]) -> None:
|
||||
_show_collections_menu(params.get("plugin", ""))
|
||||
_show_collections_menu(
|
||||
params.get("plugin", ""),
|
||||
_parse_positive_int(params.get("page", "1"), default=1),
|
||||
)
|
||||
|
||||
|
||||
@_router.route("collection_titles_page")
|
||||
@@ -5540,12 +5571,19 @@ def _route_fallback(params: dict[str, str]) -> None:
|
||||
_show_root_menu()
|
||||
|
||||
|
||||
def _sync_trakt_status_setting() -> None:
|
||||
"""Setzt trakt_status anhand des gespeicherten Tokens."""
|
||||
connected = bool(_trakt_load_token())
|
||||
_get_addon().setSetting("trakt_status", "Verbunden" if connected else "Nicht verbunden")
|
||||
|
||||
|
||||
def run() -> None:
|
||||
params = _parse_params()
|
||||
action = params.get("action")
|
||||
_log(f"Action: {action}", xbmc.LOGDEBUG)
|
||||
_maybe_run_auto_update_check(action)
|
||||
_maybe_auto_install_resolveurl(action)
|
||||
_sync_trakt_status_setting()
|
||||
_router.dispatch(action=action, params=params)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user