Skip to content

Resolver & Quellen

Der Resolver wandelt Seiten‑ oder Plattform‑URLs in direkt abspielbare Mediendateien (meist M4A oder MP3) um und speichert sie temporär.

Unterstützte Plattformen

PlattformMechanismusHinweise
YouTube / youtu.beyt-dlp Download im gewählten FormatcodeFallback auf allgemeinere Formatexpression bei Fehlschlag.
SoundCloudyt-dlp MP3 Extraktion oder direkte URL (-g)Mehrere Strategien vor Abbruch.
SpotifySpotify Web API (Metadata) + YouTube Suche via yt-dlpCredentials erforderlich. Titel Heuristiken.

Ablauf

  1. Eingehende URI via needs_resolve() geprüft
  2. Resolver aus: URI muss direkt sein
  3. Resolver an: Plattformlogik versucht Download / Suche / Extraktion
  4. Temporärer Dateipfad zurück; Decoder nutzt lokalen Pfad

Formatwahl

preferred_format (Standard 140) an yt-dlp -f. Bei Fehler Fallback: bestaudio[ext=m4a]/bestaudio/best.

Spotify Auflösung

Zwei Schritte:

  1. Track ID Extraktion (URL Segmente oder spotify:track:<id>). Metadata via API, dann ytsearch1:"Artist - Title".
  2. Fehlschlag & allow_spotify_title_search aktiv: Titel über yt-dlp -e + Suche.

Caching Strategie

Derzeit: temporäre Datei je Auflösung (OS Temp). Zukunft: LRU Cache geplant.

Source Allow/Block

Vor Auflösung oder Annahme direkter URIs erzwingt is_uri_allowed() die Regex Listen. Block hat Vorrang.

Betriebshinweise

  • Erhöht Latenz beim ersten Abspielen (Download/Transcode)
  • Ausreichende Disk IO für temporäre Dateien
  • Logs auf Warnungen achten (fehlende Spotify Daten)

Fehlermodi

BedingungErgebnis
Nicht unterstützte Seite400 / Player Erstellung fehlschlägt
Resolver TimeoutAbbruch mit Fehler
Fehlende Spotify Credentials400 bei Spotify URL
yt-dlp/ffmpeg fehlen & kein Auto-DownloadStart schlägt fehl

Released under the BSD-3-Clause License.