2 Punkte von GN⁺ 2024-11-12 | 1 Kommentare | Auf WhatsApp teilen
  • IDHS ist eine Web-App, die einen Link zum selben Track auf anderen unterstützten Plattformen sucht und anzeigt, wenn man einen Streaming-Service-Link in das Suchfeld einfügt; wenn die Quelle Spotify ist, bietet sie außerdem eine schnelle Audiovorschau
  • Unterstützt werden einzelne Tracks, Alben, Künstler und Podcasts; Playlists sind ausdrücklich nicht im Umfang enthalten
  • Es gibt Adapter für Spotify, Tidal, YouTube Music, Apple Music, Deezer, SoundCloud, Qobuz, Bandcamp und Pandora; alle Adapter unterstützen Inverted Search und verifizierte Links
  • Das System ist in Parser, die Metadaten aus dem eingegebenen Link extrahieren, und Adapter, die auf der Zielplattform suchen und Links finden, aufgeteilt; es gibt keine Garantie, dass ein Suchergebnis der exakt richtige Track oder Song ist
  • Für die lokale Ausführung sind Bun und einige API-Keys erforderlich; wegen Einschränkungen der Web API von Spotify (Stand März 2026) nutzt die Spotify-Suche die interne GraphQL API des Spotify-Webplayers und automatisch erneuerte Tokens

Was IDHS macht

  • IDHS (I Don't Have Spotify) zeigt Links zum entsprechenden Eintrag auf anderen unterstützten Plattformen an, wenn Nutzer einen Link von ihrem bevorzugten Streaming-Dienst kopieren und in das Suchfeld einfügen
  • Wenn der ursprüngliche Link von Spotify stammt, wird eine schnelle Audiovorschau bereitgestellt, damit Nutzer prüfen können, ob es der richtige Track ist
  • Der unterstützte Umfang umfasst einzelne Tracks, Alben, Künstler und Podcasts
    • Playlists werden nicht unterstützt

Unterstützte Streaming-Dienste

  • Die Web App und die Raycast Extension übernehmen die Link-Umwandlung zwischen Streaming-Diensten über Adapter
  • Unterstützte Adapter sind:
    • Spotify
    • Tidal
    • YouTube Music
    • Apple Music
    • Deezer
    • SoundCloud
    • Qobuz
    • Bandcamp
    • Pandora
  • Alle Adapter unterstützen Inverted Search und Verified Links
  • Ob eine offizielle API verwendet wird, unterscheidet sich je nach Plattform
    • Offizielle API verwendet: Tidal, Deezer
    • Keine offizielle API verwendet: Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora

Struktur aus Parsern und Adaptern

  • IDHS extrahiert Metadaten aus dem bereitgestellten Link und erstellt auf dieser Basis neue Suchanfragen für öffentliche Suchmaschinen oder offizielle APIs wie Apple Music, YouTube oder SoundCloud
  • Aus den Suchergebnissen wird der Eintrag ausgewählt, der am relevantesten erscheint; es gibt jedoch keine Garantie, dass der zurückgegebene Link der exakt gewünschte Track oder Song ist
  • Vorschläge zur Verbesserung des Workflows zur Suchanfragenerstellung sind willkommen; als Einschränkung sind Brute-Force-Retries jedoch ausgeschlossen, um Requests schnell zu halten und Rate Limits zu vermeiden
  • Parsers src/parsers

    • Parser erkennen die Plattform des eingehenden Links und extrahieren normalisierte Metadaten
    • Titel
    • Beschreibung
    • Typ
    • Bild
    • Optionales Audio
    • Konsistente Suchanfrage
    • Ein Spotify-Link sammelt beispielsweise Open-Graph-Metadaten und erzeugt Suchstrings, die Tracks, Alben, Künstler, Shows oder Episoden repräsentieren
    • Diese Suchanfrage wird anschließend verwendet, um andere Plattformen zu durchsuchen
  • Adapters src/adapters

    • Adapter wandeln eine normalisierte Suchanfrage in einen externen Link auf der Zielplattform um
    • Jeder Adapter ist für Folgendes zuständig:
    • Eine plattformspezifische Suche mit der normalisierten Suchanfrage durchführen
    • Die Suchmethode kann API- oder HTML-basiert sein
    • Ergebnisse mit Werten wie type, url, isVerified, notAvailable zurückgeben
    • Wenn eine Plattform verlässliche Matching-Signale liefert, werden verified Links bevorzugt
    • Diese Trennung modularisiert das System so, dass Parser sich auf das Verstehen der Quelle konzentrieren und Adapter auf das Finden von Ziel-Links

Web App und Raycast Extension

  • Die README enthält Beispielansichten der Web App
  • Ein Installationslink für die Raycast Extension wird bereitgestellt
  • Der Quellcode der Raycast Extension befindet sich unter idonthavespotify in raycast/extensions

Lokale Ausführung und API-Konfiguration

  • Die Liste der Umgebungsvariablen ist in .env.test zu finden
  • Die folgenden Werte müssen separat konfiguriert werden
  • Der Befehl zum Starten der App lautet:
bun install
bun dev
  • Um den URL-Shortener mit auszuführen, setzt man URL_SHORTENER_API_KEY auf den in docker-compose.yml verwendeten Wert und nutzt anschließend die folgenden Befehle
docker compose up -d
bun install
bun dev

Wie die Spotify-Suche funktioniert

  • Die Spotify-Suche verwendet nicht die Spotify Web API, sondern ein anonymes Access Token, das aus dem Spotify-Webplayer auf open.spotify.com extrahiert wird
  • Der Authentifizierungsablauf basiert auf TOTP und nutzt die interne GraphQL API, die auch der Spotify-Webplayer verwendet
  • Die README erklärt, dass Spotify die Web API Stand März 2026 eingeschränkt hat, im Development Mode Premium-Konten verlangt und die verfügbaren Endpoints begrenzt
  • Da dieses Projekt kein Premium-Konto hat, verwendet es dieselbe interne API wie der Spotify-Webplayer
  • Tokens werden automatisch etwa im Stundentakt erneuert; ein Entwicklerkonto ist nicht erforderlich

Beiträge

  • Beiträge werden über Pull Requests entgegengenommen

1 Kommentare

 
GN⁺ 2024-11-12
Hacker-News-Kommentare
  • Es gibt auch eine noch beeindruckendere Seite, die Playlists von über 20 Plattformen einschließlich Spotify oder aus Textdateien auf über 20 andere Plattformen oder in Textdateien übertragen kann
    Hoffentlich stürmen jetzt nicht alle gleichzeitig hin und legen sie lahm :)
    https://app.tunemymusic.com/transfer

    • Ich habe es ausprobiert, und es hat gut funktioniert. Schade ist nur, dass man so etwas überhaupt braucht
      Statt dass ein Dritter jede mögliche Integrationskombination lösen muss, wäre ein anbieterneutrales Import-/Exportformat schön
    • Ich bin vor Kurzem von Spotify zu Tidal gewechselt, und der zuvor empfohlene Dienst war ziemlich schlampig
      Ich habe meine favorisierten Künstler übertragen, aber es wurde nur nach Namen abgeglichen; wenn es mehrere mit demselben Namen gab, ist es katastrophal gescheitert und schien fast zufällig auszuwählen. Ich frage mich, wie dieser Dienst damit umgeht
    • Kennt jemand eine technische Möglichkeit, die Liste der Titel gelöschter Videos aus einer YouTube-Playlist wiederherzustellen?
      Ich habe mehr als zehn Playlists, die voller Musik sind, die wegen missbräuchlicher Copyright-Meldungen gelöscht wurde, aber ich kenne weder Titel noch Künstler der entfernten Tracks und kann die Playlists deshalb nicht rekonstruieren
    • Das hier gibt es auch: https://playlists.cloud/
    • Ich mag TuneMyMusic. Als ich Spotify verlassen habe, konnte ich alles exportieren und in Deezer importieren, und jetzt exportiere ich regelmäßig alles aus Deezer und analysiere es in Excel nach allen Regeln der Kunst
  • Ich habe eine sehr einfache Chrome-Erweiterung gebaut, die beim Öffnen von Links zu anderen Musikdiensten automatisch zu meinem bevorzugten Dienst weiterleitet
    Bei mir ist das auf YouTube Music eingestellt; wenn ich also in Slack auf einen Link wie Spotify klicke, lande ich bei YouTube Music
    https://chromewebstore.google.com/detail/music-link/gnhphofp...

    • Gibt es auch eine Firefox-Version?
    • Solche Aufgaben machen die Entwicklung von Chrome-Erweiterungen unterhaltsam
    • Sieht cool aus, hast du das URL-Mapping manuell gemacht?
  • Ich würde Musik gern tatsächlich kaufen und selbst archivieren. Ich sehe nämlich immer häufiger, dass Songs, die es auf Spotify gab, nach und nach verschwinden
    Nur ist Musik heutzutage extrem schwer zu kaufen. Meistens erscheint sie als Single, und soweit ich weiß, landet sie nur auf Streaming-Plattformen. Gibt es noch eine Möglichkeit, solche Musik von Streaming-Plattformen als echte Audiodateien zu kaufen?

    • Die nachhaltigste Art, Musik zu „kaufen“, ist meiner Meinung nach, sie sich per Piraterie zu besorgen und den Künstler dann durch Merch-Käufe zu unterstützen
      Oder man kauft, wenn möglich, bei Bandcamp
    • Nachdem ich in ein anderes Land gezogen war und bei Spotify die Kreditkarte auf eine Karte aus dem neuen Land geändert hatte, hat Spotify auch meine Regionseinstellung geändert
      Das Ergebnis war, dass unzählige Songs, die ich markiert/gespeichert/gelikt hatte, ausgegraut wurden und nicht mehr abspielbar waren. Wenn es also darum geht, tatsächlich Kopien der Musik zu bekommen, die ich höre, finde ich ehrlich gesagt, dass man sich überhaupt nicht schämen muss, sie komplett zu piratisieren
    • Ich mache das auch, und in Kanada war https://ca.7digital.com/ praktisch die einzige Option, mit der man normale MP3s kaufen konnte, und ich kann es sehr empfehlen
      Aktuelle Alben konnte ich problemlos kaufen, bei aktuellen Singles weiß ich es nicht genau. In den USA scheint Amazon den Kauf von MP3s zu erlauben, aber sicher bin ich mir nicht
      Für ungefähr den Preis eines Spotify-Abos kann man sich normalerweise jeden Monat ein neues Album kaufen, und ich mag es, dass die Albumsammlung so langsam wächst
    • Bandcamp, 7Digital und, wirklich nur sehr widerwillig, Amazon. Je größer das Label, desto schwieriger wird es, digitale Musik zu kaufen
    • Schau dir Qobuz an. Dort gibt es zunächst einmal nur verlustfreie Audiodateien, keine MP3s
      Wir sind fast 25 Jahre im 21. Jahrhundert, die Napster-Zeit, in der man MP3s streamen musste, ist vorbei
      Bei Qobuz gibt es oft auch Alben in höherer Qualität als 44,1 kHz / 16-Bit-Stereo. Ich kann den Unterschied zwar nicht hören, aber wenn Künstler oder Toningenieure genug Wert darauf legen, eine höhere Abtastrate oder Bittiefe anzubieten, heißt das meist auch, dass ihnen Musik mit gutem Klang wichtig ist
      Qobuz macht genau das, was du willst. Man kann einzelne Tracks oder ganze Alben kaufen und herunterladen, und es gibt kein DRM
      Ich habe auch eine Sammlung von Audiodateien, die ich von selbst gekauften CDs zu 100 % bitgenau/verlustfrei gerippt habe, und nutze zusätzlich ein Qobuz-Abo. Die Rip-Ergebnisse habe ich anhand einer Online-Datenbank validiert, in die Leute ihre Rips derselben CDs hochladen
      Der Nachteil von Qobuz ist, dass die Funktionen zur Musikentdeckung nicht die besten sind und die UI ebenfalls ziemlich schwach ist. Trotzdem ist es gut für Leute, denen Qualität wichtig ist und die ihre Musik besitzen wollen
      Heutzutage unterstützen die meisten Netzwerk-Streaming-Geräte Qobuz. Ich verwende zum Beispiel einen Yamaha-Verstärker mit integriertem Netzwerk-Streamer (Yamaha R-N1000A), und Yamahas Musik-Streaming-App MusicCast unterstützt ebenfalls Qobuz, Tidal und Spotify
      Statt nur vorübergehenden Zugriff auf einen Online-Dienst zu mieten, der unter den Füßen verschwinden oder Songs entfernen kann, die man hört, kann man einzelne Tracks wirklich kaufen und besitzen
      Sieh dir die Tarife an. Je nachdem, wie viele Songs du kaufst, kann ein anderer Tarif günstiger sein
      Soweit ich weiß, hat auch Spotify unter dem Druck von Tidal und Qobuz angekündigt, auf verlustfreies Streaming umzusteigen. Endlich im Jahr 2024
  • Bei den ersten zwei Songs, die ich ausprobiert habe, ist das YouTube-Music-Matching fehlgeschlagen
    Kanye Wests Two Words: https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
    führte zu Two Words von Milabel Ranque: https://music.youtube.com/watch?v=Y64cFG9dfYo
    Kanye Wests Never Let Me Down: https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
    führte zu Never Let me Down von Depeche Mode: https://music.youtube.com/watch?v=snILjFUkk_A
    Auf der Seite wurde sogar das richtige Albumcover angezeigt. Keiner der Songs, die ich tatsächlich eingegeben habe, hat korrekt funktioniert. Ist das normal? Sucht das einfach nach Songs mit ähnlichem Titel?

  • Weil ich oft Spotify-Links bekomme, gefällt mir das hier. Der bessere Link wäre eher die eigentliche Serviceseite als das GitHub-Repository
    https://idonthavespotify.donado.co/
    Als Erweiterung für Firefox wäre das auch richtig gut. Hoffentlich baut das irgendwann jemand

    • Wenn sich leicht herausfinden ließe, woher der id-Parameter auf der Ergebnisseite kommt, könnte man das wahrscheinlich auch als Bookmarklet bauen
      Ich vermute, es ist einfach eine Art Hash des Links
    • Warum bekommst du so oft Spotify-Links?
  • Ich nutze diese Seite, wenn ich eine Seite mit Links zu mehreren Musikanbietern erstellen will: https://odesli.co
    Funktioniert für Künstler, Alben und Songs
    Wenn man eingeloggt ist, kann man die URL anpassen
    Ich bin nur Nutzer, habe also kein finanzielles Interesse daran

    • Ich mag Songlink/Odesli auch wirklich sehr. Die Suche ist sogar schneller als die Suche bei Spotify oder Apple Music
    • Ich habe vor 5 Jahren einen Discord-Bot gebaut, der die songlinks-API genutzt hat
      Leider wurde er nicht viel benutzt, und ich pflege ihn inzwischen nicht mehr
    • Es gibt auch eine Slack-Integration: /songlink {url}
  • Eine der besten Funktionen eines NAS ist, dass man Musik dort speichern und dann aufs Handy streamen kann
    Ich bevorzuge es, einen Teil meiner Musik zu kaufen und selbst zu archivieren, statt von Abo-Diensten abhängig zu sein

    • Kannst du teilen, welches Setup du verwendest oder empfehlen würdest, sowohl für die NAS-Software als auch fürs Streaming aufs Handy?
  • Als ich früher einen Discord-Musik-Bot gepflegt habe, wurde von YouTube gestreamt
    Damit Spotify-URLs funktionierten, musste die YouTube-Suche zuverlässig treffen, und ein Trick, der gut funktioniert hat, war, zusätzlich zu Songtitel, Künstlername usw. auch die Spotify-URL in die YouTube-Suchanfrage aufzunehmen
    Offizielle YouTube-Videobeschreibungen enthalten oft den Spotify-Link, und weil die YouTube-Suche auch Beschreibungen abgleicht, hilft das ziemlich gut dabei, das „offizielle“ Video herauszufiltern

  • Dieser Dienst verknüpft noch ein paar weitere Dienste, aber man kann bestehende URLs nicht einfach hineinkopieren: https://odesli.co/
    Er ist eher wie ein Linktree-artiger Dienst, aber man kann nach Songs und Alben suchen, also ist das Auffinden einfach
    Beispiel: https://song.link/i/1051394215