2 pontos por GN⁺ 2024-11-12 | 1 comentários | Compartilhar no WhatsApp
  • IDHS é um app web que, quando um link de serviço de streaming é colado na barra de busca, encontra e exibe links da mesma faixa em outras plataformas compatíveis; quando a origem é o Spotify, também oferece uma prévia rápida de áudio
  • O suporte cobre faixas, álbuns, artistas e podcasts individuais; playlists são explicitamente fora do escopo
  • Há adaptadores para Spotify, Tidal, YouTube Music, Apple Music, Deezer, SoundCloud, Qobuz, Bandcamp e Pandora, e todos os adaptadores oferecem suporte a busca inversa e links verificados
  • O sistema é dividido em parsers, que extraem metadados do link de entrada, e adaptadores, que pesquisam na plataforma de destino para encontrar links; não há garantia de que o resultado da busca seja exatamente a faixa ou música correta
  • Para executar localmente, são necessários Bun e algumas chaves de API; a busca no Spotify, devido a limitações da Web API em março de 2026, usa a API GraphQL interna do player web do Spotify e um token com renovação automática

O que o IDHS faz

  • IDHS(I Don't Have Spotify) exibe links do item correspondente em outras plataformas compatíveis quando o usuário copia um link de seu serviço de streaming favorito e o cola na barra de busca
  • Quando o link de origem é do Spotify, ele oferece uma prévia rápida de áudio para que o usuário possa confirmar se é a faixa correta
  • O escopo de suporte inclui faixas, álbuns, artistas e podcasts individuais
    • Playlists ficam fora do escopo de suporte

Serviços de streaming compatíveis

  • O Web App e a Raycast Extension processam a conversão de links entre serviços de streaming por meio de adaptadores
  • Os adaptadores compatíveis são:
    • Spotify
    • Tidal
    • YouTube Music
    • Apple Music
    • Deezer
    • SoundCloud
    • Qobuz
    • Bandcamp
    • Pandora
  • Todos os adaptadores oferecem suporte a Inverted Search e Verified Links
  • O uso de API oficial varia conforme a plataforma
    • Usam API oficial: Tidal, Deezer
    • Não usam API oficial: Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora

Estrutura de parsers e adaptadores

  • O IDHS extrai metadados do link fornecido e, com base nessas informações, cria uma nova consulta de busca para usar em motores de busca públicos ou APIs oficiais como Apple Music, YouTube e SoundCloud
  • Ele seleciona o item que parece mais relevante entre os resultados de busca, mas não há garantia de que o link retornado seja exatamente a faixa ou música desejada pelo usuário
  • Sugestões para melhorar o fluxo de geração de consultas são bem-vindas, mas há a restrição de excluir tentativas por força bruta para manter as requisições rápidas e evitar limites de taxa
  • Parsers src/parsers

    • Os parsers identificam a plataforma do link recebido e extraem metadados normalizados
    • Título
    • Descrição
    • Tipo
    • Imagem
    • Áudio opcional
    • Consulta de busca consistente
    • Por exemplo, um link do Spotify coleta metadados Open Graph e gera uma string de busca que representa faixa, álbum, artista, show ou episódio
    • Essa consulta é usada depois para pesquisar em outras plataformas
  • Adapters src/adapters

    • Os adaptadores convertem uma consulta de busca normalizada em um link externo na plataforma de destino
    • Cada adaptador é responsável por:
    • Realizar uma busca específica da plataforma com a consulta normalizada
    • O método de busca pode ser baseado em API ou HTML
    • Retornar resultados com valores como type, url, isVerified e notAvailable
    • Quando a plataforma fornece um sinal de correspondência confiável, links verified são priorizados
    • Essa separação modulariza o sistema para que os parsers foquem em entender a origem e os adaptadores foquem em encontrar links de destino

Web App e Raycast Extension

Execução local e configuração de APIs

  • A lista de variáveis de ambiente pode ser conferida em .env.test
  • Os valores a seguir exigem configuração separada
  • Os comandos para executar o app são:
bun install
bun dev
  • Para executar também o encurtador de URL, configure URL_SHORTENER_API_KEY com o valor usado em docker-compose.yml e então use os comandos abaixo
docker compose up -d
bun install
bun dev

Como a busca do Spotify é tratada

  • A busca no Spotify não usa a Spotify Web API; ela usa um token de acesso anônimo extraído do player web do Spotify em open.spotify.com
  • O fluxo de autenticação é baseado em TOTP e usa a API GraphQL interna utilizada pelo player web do Spotify
  • O README explica que, em março de 2026, o Spotify restringiu a Web API, exigindo contas Premium no Development Mode e limitando os endpoints disponíveis
  • Como este projeto não tem uma conta Premium, ele usa a mesma API interna do player web do Spotify
  • O token é renovado automaticamente em ciclos de expiração de cerca de 1 hora, sem necessidade de conta de desenvolvedor

Contribuição

  • Contribuições são aceitas por meio da abertura de PRs

1 comentários

 
GN⁺ 2024-11-12
Opiniões no Hacker News
  • Há também um site mais impressionante que transfere playlists de cerca de 20 plataformas, incluindo Spotify, ou de arquivos de texto, para cerca de outras 20 plataformas ou arquivos de texto
    Só não vão todo mundo lá derrubar o serviço :)
    https://app.tunemymusic.com/transfer

    • Usei e funcionou bem. Mas é uma pena que algo assim seja necessário
      Seria bom se houvesse um formato de importação/exportação neutro em relação a fornecedores, em vez de terceiros terem que resolver todas as combinações de integração
    • Recentemente migrei do Spotify para o Tidal, e o serviço de migração recomendado era bem tosco
      Transferi meus artistas favoritos, mas ele tentava fazer a correspondência só pelo nome; se havia dois ou mais com o mesmo nome, falhava desastrosamente e parecia escolher quase aleatoriamente. Fico curioso para saber como este serviço se sairia
    • Alguém conhece uma forma técnica de recuperar a lista de títulos de vídeos removidos de playlists do YouTube?
      Tenho mais de 10 playlists cheias de músicas removidas por denúncias indevidas de direitos autorais, e não consigo nem reconstruí-las porque não sei o título/artista das faixas removidas
    • Também existe isto: https://playlists.cloud/
    • Gosto do TuneMyMusic. Quando saí do Spotify, exportei tudo e importei para o Deezer; agora exporto tudo periodicamente do Deezer e fico analisando de todo jeito no Excel
  • Criei uma extensão do Chrome bem simples que, ao abrir links de outros serviços de música, redireciona automaticamente para o meu serviço preferido
    No meu caso, configurei para o YouTube Music, então quando clico em um link do Spotify no Slack, ele me leva para o YouTube Music
    https://chromewebstore.google.com/detail/music-link/gnhphofp...

    • Existe versão para Firefox?
    • Esse tipo de coisa é o que torna desenvolver extensões do Chrome divertido
    • Parece legal; o mapeamento de URLs foi feito manualmente?
  • Quero comprar música de verdade e guardá-la eu mesmo. Porque tenho visto cada vez mais músicas que estavam no Spotify desaparecerem
    Mas hoje em dia é muito difícil comprar música. A maioria sai como single e, até onde sei, parece estar disponível só em plataformas de streaming. Ainda há alguma forma de comprar como arquivos de áudio reais esse tipo de música que está nas plataformas de streaming?

    • A forma mais sustentável de “comprar” música, pessoalmente, acho que é obtê-la por pirataria e depois apoiar comprando merchandising do artista
      Ou então comprar no Bandcamp, quando possível
    • Depois que me mudei para outro país e troquei o cartão de crédito do Spotify por um cartão do novo país, o Spotify também mudou minhas configurações de região
      Como resultado, inúmeras músicas que eu tinha marcado com “estrela”/“adicionado”/“curti” ficaram cinzas e não podiam mais ser reproduzidas. Enfim, quando se trata de realmente obter uma cópia das músicas que eu escuto, acho que não há motivo algum para ter vergonha de piratear tudo mesmo
    • Também faço isso, e no Canadá https://ca.7digital.com/ era basicamente a única opção para comprar MP3s comuns, e recomendo muito
      Consegui comprar álbuns recentes sem problema, mas não tenho certeza quanto a singles recentes. Nos EUA, parece que a Amazon permite comprar MP3s, mas não tenho certeza
      Pelo preço de uma assinatura do Spotify, normalmente dá para comprar um álbum novo por mês, o que é bom, e gosto de ver minha coleção de álbuns crescer aos poucos
    • Bandcamp, 7Digital e, com muita relutância, Amazon. Quanto maior a gravadora, mais difícil fica comprar música digital
    • Dê uma olhada no Qobuz. Para começar, lá eles só lidam com áudio lossless, nada de MP3
      Já estamos quase 25 anos dentro do século 21; os tempos do Napster, em que era preciso fazer streaming de MP3, já passaram
      No Qobuz, é comum haver álbuns com qualidade superior a estéreo 44,1 kHz / 16 bits. Talvez você não ouça a diferença, mas se o artista/engenheiro de som se importa a ponto de oferecer uma frequência de amostragem ou profundidade de bits maior, isso geralmente significa que também se importa em fazer música com bom som
      O Qobuz faz exatamente o que você quer. Você pode comprar faixas individuais ou álbuns inteiros e baixá-los, e não há DRM
      Tenho uma coleção de arquivos de áudio ripados de CDs que comprei, de forma 100% bit-perfect/lossless, e também uso uma assinatura do Qobuz. Verifiquei os rips em um banco de dados online de pessoas que riparam os mesmos CDs
      A desvantagem do Qobuz é que o recurso de descoberta musical não é dos melhores, e a UI também é bem ruim. Ainda assim, é bom para quem prioriza qualidade e quer possuir sua própria música
      Hoje em dia, a maioria dos dispositivos de streaming de rede oferece suporte ao Qobuz. Por exemplo, uso um amplificador Yamaha com streamer de rede integrado (Yamaha R-N1000A), e o app de streaming de música da Yamaha, MusicCast, também oferece suporte a Qobuz, Tidal e Spotify
      Em vez de alugar acesso temporário a um serviço online que pode sumir debaixo dos seus pés ou remover músicas que você ouvia, você pode comprar e possuir faixas individuais de verdade
      Vale conferir os planos. Dependendo de quantas músicas você compra, o plano mais vantajoso pode variar
      Pelo que entendi, o Spotify também anunciou que passaria para streaming lossless, pressionado pelo Tidal e pelo Qobuz. Só finalmente em 2024
  • Nas duas primeiras músicas que tentei, a correspondência no YouTube Music falhou
    Two Words, do Kanye West: https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
    Foi para Two Words, de Milabel Ranque: https://music.youtube.com/watch?v=Y64cFG9dfYo
    Never Let Me Down, do Kanye West: https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
    Foi para Never Let me Down, do Depeche Mode: https://music.youtube.com/watch?v=snILjFUkk_A
    Isso aconteceu mesmo com a arte correta do álbum aparecendo no site. Nenhuma das músicas que testei de fato funcionou corretamente. É assim mesmo? Ele procura músicas com títulos parecidos?

  • Como recebo links do Spotify com frequência, isso é bom. Um link melhor seria a página do serviço em si, não o repositório no GitHub
    https://idonthavespotify.donado.co/
    Seria muito bom se também existisse como uma extensão para usuários do Firefox. Espero que alguém faça um dia

    • Se der para descobrir facilmente de onde vem o parâmetro id da página de resultados, provavelmente também daria para fazer como um bookmarklet
      Imagino que seja algo como um hash simples do link
    • Por que você recebe links do Spotify com tanta frequência?
  • Uso esta página quando quero criar uma página com links para vários provedores de música: https://odesli.co
    Funciona por artista, álbum e música
    Se fizer login, dá para personalizar a URL
    Sou apenas usuário, sem nenhum conflito de interesse

    • Também gosto muito do Songlink/Odesli. A busca também funciona mais rápido do que a busca do Spotify ou do Apple Music
    • Há 5 anos criei um bot de Discord que usava a API do songlinks
      Infelizmente ele não foi muito usado e agora não é mais mantido
    • Também há integração com Slack: /songlink {url}
  • Uma das melhores funcionalidades que se obtém com um NAS é poder armazenar música nele e fazer streaming para o celular
    Prefiro comprar algumas músicas e mantê-las eu mesmo em vez de depender de serviços de assinatura

    • Você poderia compartilhar que configuração usa ou recomenda, tanto para o NAS quanto para o software de streaming no celular?
  • Quando eu mantinha um bot de música para Discord no passado, fazia streaming a partir do YouTube
    Para fazer URLs do Spotify funcionarem, a busca no YouTube precisava acertar de forma confiável, e um truque que funcionava bem era colocar também a URL do Spotify na consulta de busca do YouTube, junto com o nome da música, o artista etc.
    Muitas vezes a descrição do vídeo oficial no YouTube inclui um link do Spotify e, como a busca do YouTube também faz correspondência com a descrição, isso ajudava bastante a selecionar o vídeo “oficial”

  • Este serviço conecta mais alguns serviços, mas não dá simplesmente para colar uma URL existente: https://odesli.co/
    Ele é mais parecido com um serviço do tipo Linktree, mas permite pesquisar músicas e álbuns, então é fácil encontrar
    Exemplo: https://song.link/i/1051394215