Compare commits

...

3 Commits

4 changed files with 40 additions and 13 deletions

View File

@@ -1,3 +1,15 @@
## 0.1.77.0-dev - 2026-03-10
- dev: Changelog-Dialog nur anzeigen wenn Eintrag vorhanden
## 0.1.76.5-dev - 2026-03-10
- dev: Versionsfilter fuer 4-teilige Versionsnummern korrigiert
## 0.1.76.0-dev - 2026-03-10
- dev: bump to 0.1.76.0-dev aeltere Versionen im Update-Dialog, Release-Branch-Zuordnung, README ueberarbeitet
## 0.1.74-dev - 2026-03-10
- dev: bump to 0.1.74-dev BurningSeries entfernt, Paging-Fix Neuste Titel

View File

@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<addon id="plugin.video.viewit" name="ViewIt" version="0.1.76.0-dev" provider-name="ViewIt">
<addon id="plugin.video.viewit" name="ViewIt" version="0.1.77.5-dev" provider-name="ViewIt">
<requires>
<import addon="xbmc.python" version="3.0.0" />
<import addon="script.module.requests" />

View File

@@ -1242,15 +1242,15 @@ def _version_sort_key(version: str) -> tuple[int, ...]:
def _is_stable_version(version: str) -> bool:
return bool(re.match(r"^\d+\.\d+\.\d+$", str(version or "").strip()))
return bool(re.match(r"^\d+\.\d+\.\d+(\.\d+)?$", str(version or "").strip()))
def _is_nightly_version(version: str) -> bool:
return bool(re.match(r"^\d+\.\d+\.\d+-nightly$", str(version or "").strip()))
return bool(re.match(r"^\d+\.\d+\.\d+(\.\d+)?-nightly$", str(version or "").strip()))
def _is_dev_version(version: str) -> bool:
return bool(re.match(r"^\d+\.\d+\.\d+-dev$", str(version or "").strip()))
return bool(re.match(r"^\d+\.\d+\.\d+(\.\d+)?-dev$", str(version or "").strip()))
def _filter_versions_for_channel(channel: int, versions: list[str]) -> list[str]:
@@ -1418,7 +1418,7 @@ def _extract_changelog_section(changelog_text: str, version: str) -> str:
start = idx
break
if start < 0:
return f"Kein Changelog-Abschnitt fuer Version {wanted} gefunden."
return ""
end = len(lines)
for idx in range(start + 1, len(lines)):
@@ -1441,7 +1441,7 @@ def _fetch_changelog_for_channel(channel: int, version: str) -> str:
try:
text = _read_text_url(url)
except Exception:
return "Changelog konnte nicht geladen werden."
return ""
return _extract_changelog_section(text, version)
@@ -3176,8 +3176,9 @@ def _show_popular(plugin_name: str | None = None, page: int = 1) -> None:
def _show_new_titles(plugin_name: str, page: int = 1, *, action_name: str = "new_titles") -> None:
handle = _get_handle()
page_size = LIST_PAGE_SIZE
page = max(1, int(page or 1))
max_items_key = f"{(plugin_name or '').strip().casefold()}_max_page_items"
page_size = _get_setting_int(max_items_key, default=15) or LIST_PAGE_SIZE
plugin_name = (plugin_name or "").strip()
plugin = _discover_plugins().get(plugin_name)
@@ -3218,6 +3219,8 @@ def _show_new_titles(plugin_name: str, page: int = 1, *, action_name: str = "new
xbmcplugin.endOfDirectory(handle)
return
page_items = [str(t).strip() for t in page_items if t and str(t).strip()]
if page_size > 0 and len(page_items) > page_size:
page_items = page_items[:page_size]
page_items.sort(key=lambda value: value.casefold())
else:
try:
@@ -3732,12 +3735,13 @@ def _show_version_selector() -> None:
version = versions[selected]
changelog = _fetch_changelog_for_channel(channel, version)
viewer = getattr(xbmcgui.Dialog(), "textviewer", None)
if callable(viewer):
try:
viewer(f"Changelog {version}", changelog)
except Exception:
pass
if changelog:
viewer = getattr(xbmcgui.Dialog(), "textviewer", None)
if callable(viewer):
try:
viewer(f"Changelog {version}", changelog)
except Exception:
pass
action = xbmcgui.Dialog().select(
f"Version {version} installieren?",

View File

@@ -38,6 +38,17 @@
<setting id="tmdb_log_responses" type="bool" label="TMDB API-Antworten loggen" default="false" />
</category>
<category label="Anzeige">
<setting id="filmpalast_max_page_items" type="number" label="Filmpalast: Max. Eintraege pro Seite" default="15" />
<setting id="topstreamfilm_max_page_items" type="number" label="TopStream: Max. Eintraege pro Seite" default="15" />
<setting id="aniworld_max_page_items" type="number" label="AniWorld: Max. Eintraege pro Seite" default="15" />
<setting id="netzkkino_max_page_items" type="number" label="Netzkino: Max. Eintraege pro Seite" default="15" />
<setting id="kkiste_max_page_items" type="number" label="KKiste: Max. Eintraege pro Seite" default="15" />
<setting id="hdfilme_max_page_items" type="number" label="HDFilme: Max. Eintraege pro Seite" default="15" />
<setting id="moflix_max_page_items" type="number" label="Moflix: Max. Eintraege pro Seite" default="15" />
<setting id="einschalten_max_page_items" type="number" label="Einschalten: Max. Eintraege pro Seite" default="15" />
</category>
<category label="Wiedergabe">
<setting id="autoplay_enabled" type="bool" label="Autoplay (bevorzugten Hoster automatisch waehlen)" default="false" />
<setting id="preferred_hoster" type="text" label="Bevorzugter Hoster" default="voe" />