Files
xstreamDownloader/STATUS.md
T
matthiasberner 8a82974e64 Wrapper-Site Auflösung für meinecloud.click implementiert
- _resolve_wrapper_site() erkennt meinecloud.click und parst data-link Attribute
- Rekursive Auflösung: Wrapper -> Hoster -> Streaming-API
- Streaming-API 404 Fallback: URL direkt zurückgeben wenn API nicht existiert
- HTML-Erkennung bei Downloads bleibt aktiv für Hosts die trotzdem HTML zurückgeben
- STATUS.md aktualisiert
2026-07-07 22:19:23 +02:00

4.9 KiB
Raw Blame History

xStream Downloader Projektstatus

Stand: 7.7.2026, 20:17

Ziel

Web-Wrapper für das xstream Kodi-Addon, mit dem man Filme suchen, finden und herunterladen kann direkt im Browser, ohne Kodi.

Architektur-Entscheidung

  • Option A: Web-Wrapper mit XBMC-konformen Mock-Modulen
  • Vorteil: läuft ohne Kodi-Installation, Downloads landen direkt als Datei
  • Die XBMC-Architektur wurde aus /home/matthiasberner/Dokumente/git/xbmc analysiert

Dateistruktur

xstreamDownloader/
├── app.py              ← AKTIVER Wrapper-App (XBMC-konform, ~1150 Zeilen)
├── web/index.html      ← Frontend (Sidebar, Search, Grid, Downloads)
├── xstream/sites/      ← 18 Site-Plugins
├── xstream/resources/lib/  ← xstream Core
├── deps/
│   ├── resolveurl/
│   ├── requests/
│   ├── six/
│   ├── kodi_six/
│   └── pyaes/
├── cookies/
└── downloads/

Was funktioniert

  1. Flask-Server startet auf http://localhost:8770
  2. 18 Sites werden erkannt und geladen
  3. XBMC-Mock-Module für xbmc, xbmcgui, xbmcplugin, xbmcvfs, xbmcaddon
  4. Subprozess-Worker mit eigenem sys.argv[1] = '1' (handle)
  5. xbmcplugin-Collector thread-lokal (addDirectoryItem/endOfDirectory)
  6. xbmc.addon Version 20.3 verhindert float('3.8.')-Crash in resolveurl
  7. Deutsche xStream-Language-Map Menu-Titel in Deutsch statt [30813]
  8. Plugin-URL-Generierung sys.argv[0] als reiner Pfad (keine doppelten ?)
  9. URL-Parsing api_subentries parst plugin:// URLs und ruft die richtige Funktion auf
  10. API-Routen alle vorhanden:
    • /api/sites
    • /api/sites/ID/entries
    • /api/sites/ID/entries/PLUGIN_URL (parst function/site/params aus URL)
    • /api/sites/ID/search?q=...
    • /api/sites/ID/hosters?url=...
    • /api/resolve?url=...
    • /api/download?url=...&title=...
    • /api/downloads[/ID][/file]
  11. Download-Manager mit Fortschritt 0-100%, Cancel, Delete
  12. HLS/m3u8 Download via ffmpeg
  13. HTML-Erkennung verhindert 16KB HTML-Files als "fertige Downloads"
  14. Streaming-Site Auflösung vidara.to etc. via API (filecode → m3u8)
  15. Wrapper-Site Auflösung meinecloud.click etc. via HTML-Parsing (data-link Attribute)
  16. Rekursive Auflösung Wrapper → Hoster → Streaming-API (z.B. meinecloud → dr0pstream → m3u8)

Navigation (Menü → Inhalte)

Die Site-Plugins zeigen Menüpunkte (Neues, Filme, Serien, etc.) auf Deutsch. Beim Klick auf einen Menüpunkt:

  1. URL wird geparst: plugin://...?site=aniworld&function=showEntries&sUrl=...
  2. Richtige Funktion (showEntries, showNeues, showValue, etc.) wird aufgerufen
  3. Echte Filme/Serien werden geladen (getestet: AniWorld 45 Titel, HD Filme 22 Titel)

Gelöste Bugs

# Bug Fix Datum
1 SyntaxError def setProperty sed-Korrektur -
2 KeyError 'resources.lib.config' Stubs nur im Worker -
3 IndentationError in _CollectingGui.addFolder Komplett neuer Collector -
4 float('3.8.') Crash xbmc.addon Version '20.3' -
5 pyaes NOT in sys.path deps/pyaes und deps/pyaes/lib -
6 AttributeError 'xbmc' has no 'LOGERROR' LOGERROR + LOGSEVERE in _make_xbmc() 6.7.2026
7 ModuleNotFoundError 'resources.lib' in Subprozess BASE zum sys.path im Worker 6.7.2026
8 Menu-Titel als [30813] statt Deutsch Deutsche Language-Map in getLocalizedString 6.7.2026
9 Doppelte ? in plugin:// URLs sys.argv[0] = reiner Plugin-Pfad 6.7.2026
10 Navigation: immer showEntries statt spezifischer Funktion _parse_plugin_url() in api_subentries 6.7.2026
11 Such-API-Mismatch Frontend: /search?q= statt /entries?search= 6.7.2026
12 Hoster-API-Mismatch ?url= statt ?entryUrl= 6.7.2026
13 Download-Flow falsch Resolve → Download → Poll statt /resolve?download=true 6.7.2026
14 Port 8769 belegt Geändert auf Port 8770 6.7.2026
15 Download 16KB HTML statt Video (VOE etc.) HTML-Erkennung in _run_direct() 7.7.2026
16 Streaming-Sites liefern HTML statt m3u8 _resolve_streaming_api() für vidara.to etc. 7.7.2026
17 Wrapper-Site meinecloud.click gibt HTML zurück _resolve_wrapper_site() parst data-link Attribute 7.7.2026

Verbleibende Aufgaben

  • Browser-MCP Debugging (im Browser testen)
  • Hoster-Flow E2E testen (Eintrag → Hosters → Download)
  • Such-Qualität verbessern (manche Sites liefern Haupteinträge statt Suchergebnisse)
  • Stream-Button in Suchergebnissen

Starten

cd /home/matthiasberner/Schreibtisch/kodi/xstreamDownloader
python3 app.py
# → http://localhost:8770

Bekannte Probleme

  • Port 8770 kann von Zombie-Prozessen belegt sein → mit pkill -9 -f "python3 app.py" beheben
  • Manche Site-Suchfunktionen geben Haupteinträge statt Suchergebnisse zurück
  • Manche Sites (z.B. serienstream A-Z) können 500er Timeout-Fehler werfen