2 points par GN⁺ 2024-11-12 | 1 commentaires | Partager sur WhatsApp
  • IDHS est une application web qui permet de coller un lien de service de streaming dans la barre de recherche afin de trouver et d'afficher le lien du même morceau sur d'autres plateformes prises en charge ; lorsque la source est Spotify, elle propose aussi un aperçu audio rapide
  • La prise en charge couvre les morceaux, albums, artistes et podcasts individuels ; les playlists sont explicitement hors périmètre
  • Des adaptateurs existent pour Spotify, Tidal, YouTube Music, Apple Music, Deezer, SoundCloud, Qobuz, Bandcamp et Pandora, et tous prennent en charge la recherche inversée et les liens vérifiés
  • Le système est divisé entre des parseurs qui extraient les métadonnées du lien d'entrée et des adaptateurs qui recherchent et retrouvent le lien sur la plateforme de destination ; il ne garantit pas que le résultat corresponde exactement au morceau ou à la chanson attendue
  • Pour une exécution en local, Bun et certaines clés d'API sont nécessaires ; pour Spotify, en mars 2026, à cause des restrictions de la Web API, la recherche utilise l'API GraphQL interne du lecteur web Spotify ainsi que des jetons à renouvellement automatique

Ce que fait IDHS

  • IDHS (I Don't Have Spotify) permet à l'utilisateur de copier le lien de son service de streaming préféré et de le coller dans la barre de recherche afin d'afficher les liens correspondants sur d'autres plateformes prises en charge
  • Lorsque le lien source est Spotify, l'application fournit un aperçu audio rapide pour aider l'utilisateur à vérifier qu'il s'agit bien du bon morceau
  • La prise en charge concerne les morceaux, albums, artistes et podcasts individuels
    • Les playlists ne sont pas prises en charge

Services de streaming pris en charge

  • L'application web et l'extension Raycast gèrent la conversion des liens entre services de streaming via des adaptateurs
  • Les adaptateurs pris en charge sont les suivants
    • Spotify
    • Tidal
    • YouTube Music
    • Apple Music
    • Deezer
    • SoundCloud
    • Qobuz
    • Bandcamp
    • Pandora
  • Tous les adaptateurs prennent en charge Inverted Search et les Verified Links
  • L'utilisation d'API officielles varie selon les plateformes
    • API officielle utilisée : Tidal, Deezer
    • API officielle non utilisée : Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora

Architecture parseurs et adaptateurs

  • IDHS extrait les métadonnées du lien fourni et, à partir de ces informations, crée de nouvelles requêtes de recherche à utiliser avec des moteurs de recherche publics ou avec les API officielles d'Apple Music, YouTube ou SoundCloud
  • Parmi les résultats, l'élément le plus pertinent est sélectionné, mais rien ne garantit que le lien renvoyé corresponde exactement au morceau ou à la chanson recherché par l'utilisateur
  • Les propositions pour améliorer le workflow de génération des requêtes sont bienvenues, mais il existe une contrainte : les tentatives par force brute sont exclues afin de conserver des requêtes rapides et d'éviter les limitations de débit
  • Parseurs src/parsers

    • Les parseurs identifient la plateforme du lien entrant et en extraient des métadonnées normalisées
    • titre
    • description
    • type
    • image
    • audio optionnel
    • requête de recherche cohérente
    • Par exemple, un lien Spotify collecte les métadonnées Open Graph et génère une chaîne de recherche représentant un morceau, un album, un artiste, une émission ou un épisode
    • Cette requête est ensuite utilisée pour rechercher sur d'autres plateformes
  • Adaptateurs src/adapters

    • Les adaptateurs convertissent la requête de recherche normalisée en lien externe vers la plateforme de destination
    • Chaque adaptateur est responsable des points suivants
    • effectuer une recherche spécifique à la plateforme à partir de la requête normalisée
    • la méthode de recherche peut être basée sur une API ou sur du HTML
    • renvoyer un résultat contenant des valeurs comme type, url, isVerified, notAvailable
    • si la plateforme fournit des signaux de correspondance fiables, les liens verified sont privilégiés
    • Cette séparation modularise le système : les parseurs se concentrent sur la compréhension de la source, tandis que les adaptateurs se concentrent sur la découverte du lien de destination

Application web et extension Raycast

  • Le README inclut un exemple d'écran de l'application web
  • Un lien d'installation de l'extension Raycast est fourni
  • Le code source de l'extension Raycast se trouve dans raycast/extensions de idonthavespotify

Exécution en local et configuration des API

  • La liste des variables d'environnement peut être consultée dans .env.test
  • Les valeurs suivantes doivent être configurées séparément
  • Les commandes pour lancer l'application sont les suivantes
bun install
bun dev
  • Pour exécuter également le raccourcisseur d'URL, définissez URL_SHORTENER_API_KEY avec la valeur utilisée dans docker-compose.yml, puis utilisez les commandes suivantes
docker compose up -d
bun install
bun dev

Méthode de traitement de la recherche Spotify

  • La recherche Spotify n'utilise pas la Spotify Web API, mais un jeton d'accès anonyme extrait du lecteur web Spotify sur open.spotify.com
  • Le flux d'authentification est basé sur TOTP et utilise l'API GraphQL interne employée par le lecteur web Spotify
  • Le README explique qu'en mars 2026, Spotify a restreint la Web API en exigeant un compte Premium en Development Mode et en limitant les endpoints disponibles
  • Ce projet n'ayant pas de compte Premium, il utilise donc la même API interne que le lecteur web Spotify
  • Les jetons sont renouvelés automatiquement avec une expiration d'environ 1 heure, sans nécessiter de compte développeur

Contribution

  • Les contributions sont acceptées via l'ouverture d'une PR

1 commentaires

 
GN⁺ 2024-11-12
Avis sur Hacker News
  • Il existe aussi un site plus impressionnant qui permet de transférer des playlists depuis une vingtaine de plateformes, dont Spotify, ou depuis un fichier texte, vers une vingtaine d’autres plateformes ou vers un fichier texte.
    Évitez juste de tous vous ruer dessus au point de le faire tomber :)
    https://app.tunemymusic.com/transfer

    • Je l’ai essayé et ça marche bien. Mais c’est dommage qu’un tel outil soit nécessaire.
      J’aimerais qu’il existe un format d’import/export neutre vis-à-vis des fournisseurs, plutôt que de devoir laisser un tiers gérer toutes les combinaisons d’intégrations.
    • Je suis récemment passé de Spotify à Tidal, et le service de migration qui m’avait été recommandé était assez bancal.
      Il a transféré mes artistes favoris, mais en essayant de faire correspondre uniquement les noms ; dès qu’il y avait au moins deux artistes du même nom, ça échouait lamentablement et semblait choisir presque au hasard. Je me demande ce que vaut ce service.
    • Quelqu’un connaît-il un moyen technique de récupérer la liste des titres de vidéos supprimées dans une playlist YouTube ?
      J’ai plus de 10 playlists remplies de morceaux supprimés à cause de signalements de copyright abusifs, et comme je ne connais pas les titres/artistes des pistes supprimées, je ne peux même pas reconstruire les playlists.
    • Il y a aussi ça : https://playlists.cloud/
    • J’aime bien TuneMyMusic. Quand j’ai quitté Spotify, j’ai exporté puis tout importé dans Deezer, et maintenant j’exporte périodiquement tout depuis Deezer pour faire toutes sortes d’analyses dans Excel.
  • J’ai créé une extension Chrome très simple qui redirige automatiquement les liens vers d’autres services de musique vers le service que je préfère.
    Dans mon cas, elle est configurée pour YouTube Music, donc quand je clique dans Slack sur un lien Spotify, par exemple, ça m’envoie vers YouTube Music.
    https://chromewebstore.google.com/detail/music-link/gnhphofp...

    • Il existe une version Firefox ?
    • C’est ce genre de projets qui rend le développement d’extensions Chrome amusant.
    • Ça a l’air sympa ; tu as fait le mapping des URL à la main ?
  • J’aimerais vraiment acheter de la musique et la conserver moi-même, car je vois de plus en plus souvent des morceaux disparaître de Spotify.
    Mais aujourd’hui, c’est très difficile d’acheter de la musique. La plupart sort sous forme de singles et, à ma connaissance, semble n’être disponible que sur des plateformes de streaming. Existe-t-il encore un moyen d’acheter sous forme de vrais fichiers audio le même genre de musique que l’on trouve sur les plateformes de streaming ?

    • La façon la plus durable d’« acheter » de la musique, à mon avis, consiste à se la procurer par piratage, puis à soutenir l’artiste en achetant son merchandising.
      Ou bien à l’acheter sur Bandcamp quand c’est possible.
    • Après avoir déménagé dans un autre pays, j’ai remplacé ma carte bancaire Spotify par une carte de ce nouveau pays, et Spotify a aussi changé mon paramètre de région.
      Résultat : un grand nombre de morceaux que j’avais « étoilés »/« ajoutés »/« likés » sont devenus grisés et impossibles à lire. Bref, quand il s’agit d’obtenir réellement une copie de la musique que j’écoute, je pense qu’on peut tout simplement la pirater sans la moindre honte.
    • C’est aussi ce que je fais, et au Canada, https://ca.7digital.com/ était pratiquement la seule option permettant d’acheter des MP3 ordinaires ; je le recommande vivement.
      J’ai pu acheter des albums récents sans problème, mais je ne sais pas pour les singles récents. Aux États-Unis, il me semble qu’Amazon permet d’acheter des MP3, mais je n’en suis pas certain.
      Pour le prix d’un abonnement Spotify, on peut généralement acheter un nouvel album par mois, ce qui est appréciable, et j’aime bien voir ma collection d’albums grandir lentement.
    • Bandcamp, 7Digital et, vraiment à contrecœur, Amazon. Plus le label est gros, plus il est difficile d’acheter de la musique numérique.
    • Regardez Qobuz. Déjà, ils ne proposent que des fichiers sans perte, pas de MP3.
      Cela fait bientôt 25 ans que nous sommes entrés dans le XXIe siècle ; l’époque de Napster où l’on devait streamer du MP3 est révolue.
      Sur Qobuz, on trouve souvent des albums d’une qualité supérieure au 44,1 kHz / 16 bits stéréo. Je n’entends pas la différence, mais si un artiste ou un ingénieur du son se soucie assez de proposer une fréquence d’échantillonnage ou une profondeur de bits plus élevée, cela signifie généralement qu’il se soucie aussi de produire une musique qui sonne bien.
      Qobuz fait exactement ce que vous voulez : vous pouvez acheter et télécharger des pistes individuelles ou des albums entiers, et il n’y a pas de DRM.
      J’ai aussi une collection de fichiers audio rippés depuis des CD que j’ai achetés, en mode 100 % bit-perfect/sans perte, et j’utilise également un abonnement Qobuz. J’ai vérifié les rips avec des bases de données en ligne d’autres personnes ayant rippé les mêmes CD.
      Le point faible de Qobuz, c’est que la découverte musicale n’est pas ce qu’il y a de mieux, et l’interface est assez mauvaise. Mais pour quelqu’un qui privilégie la qualité et veut posséder sa musique, c’est une bonne option.
      Aujourd’hui, la plupart des appareils de streaming réseau prennent Qobuz en charge. Par exemple, j’utilise un ampli Yamaha avec streamer réseau intégré (Yamaha R-N1000A), et l’application de streaming musical de Yamaha, MusicCast, prend aussi en charge Qobuz, Tidal et Spotify.
      Vous pouvez réellement acheter et posséder des pistes individuelles, au lieu de louer un accès temporaire à un service en ligne qui peut disparaître sous vos pieds ou retirer les morceaux que vous écoutiez.
      Regardez leurs formules. Selon le nombre de titres que vous achetez, la meilleure formule peut varier.
      D’après ce que j’ai compris, Spotify a aussi annoncé qu’il passerait au streaming sans perte sous la pression de Tidal et Qobuz. Enfin, en 2024
  • Sur les deux premiers morceaux que j’ai essayés, la correspondance YouTube Music a échoué
    Two Words de Kanye West : https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
    Ça m’a envoyé vers Two Words de Milabel Ranque : https://music.youtube.com/watch?v=Y64cFG9dfYo
    Never Let Me Down de Kanye West : https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
    Ça m’a envoyé vers Never Let me Down de Depeche Mode : https://music.youtube.com/watch?v=snILjFUkk_A
    Et ce, même si le site affichait la bonne pochette d’album. Aucun des morceaux que j’ai effectivement testés n’a fonctionné correctement. C’est censé être comme ça ? Est-ce que ça cherche simplement des morceaux au titre similaire ?

  • Comme je reçois souvent des liens Spotify, c’est une bonne chose. Un meilleur lien serait la page du service elle-même, pas le dépôt GitHub
    https://idonthavespotify.donado.co/
    Ce serait vraiment bien qu’il existe aussi une extension pour les utilisateurs de Firefox. J’espère que quelqu’un en fera une un jour

    • Si l’on peut facilement comprendre d’où vient le paramètre id de la page de résultat, on pourrait sans doute aussi en faire un bookmarklet
      Je suppose que c’est quelque chose comme un simple hash du lien
    • Pourquoi reçois-tu si souvent des liens Spotify ?
  • Quand je veux créer une page avec des liens vers plusieurs services de musique, j’utilise cette page : https://odesli.co
    Ça fonctionne au niveau de l’artiste, de l’album et du morceau
    En se connectant, on peut personnaliser l’URL
    Je ne suis qu’un utilisateur, sans aucun conflit d’intérêts

    • Moi aussi, j’aime beaucoup Songlink/Odesli. La recherche fonctionne même plus vite que celle de Spotify ou d’Apple Music
    • Il y a 5 ans, j’ai créé un bot Discord qui utilisait l’API songlinks
      Malheureusement, il n’a pas beaucoup été utilisé et je ne le maintiens plus
    • Il existe aussi une intégration Slack : /songlink {url}
  • L’une des meilleures fonctionnalités que m’offre un NAS, c’est de pouvoir y stocker de la musique et la streamer sur mon téléphone
    Je préfère acheter une partie de ma musique et la conserver moi-même, plutôt que de dépendre de services d’abonnement

    • Peux-tu partager la configuration que tu utilises ou recommandes, à la fois pour le NAS et pour le logiciel de streaming vers le téléphone ?
  • À l’époque où je maintenais un bot musical Discord, je streamais depuis YouTube
    Pour que les URL Spotify fonctionnent, il fallait que la recherche YouTube tombe de manière fiable sur le bon résultat, et une astuce qui marchait bien consistait à inclure l’URL Spotify elle-même dans la requête YouTube, avec le titre du morceau, le nom de l’artiste, etc.
    Les descriptions des vidéos YouTube officielles contiennent souvent un lien Spotify, et comme la recherche YouTube matche aussi les descriptions, cela aidait pas mal à identifier la vidéo « officielle »

  • Ce service relie quelques services supplémentaires, mais on ne peut pas simplement y coller une URL existante : https://odesli.co/
    C’est plus proche d’un service de type Linktree, mais on peut rechercher des morceaux et des albums, donc c’est facile à trouver
    Exemple : https://song.link/i/1051394215