2 poin oleh GN⁺ 2024-11-12 | 1 komentar | Bagikan ke WhatsApp
  • IDHS adalah aplikasi web yang, saat tautan layanan streaming ditempelkan ke kolom pencarian, menemukan dan menampilkan tautan untuk trek yang sama di platform lain yang didukung; jika sumbernya Spotify, aplikasi ini juga menyediakan pratinjau audio cepat
  • Cakupannya mencakup trek, album, artis, dan podcast individual; playlist dinyatakan berada di luar cakupan
  • Tersedia adaptor untuk Spotify, Tidal, YouTube Music, Apple Music, Deezer, SoundCloud, Qobuz, Bandcamp, dan Pandora, dan semua adaptor mendukung pencarian terbalik serta tautan terverifikasi
  • Sistem terbagi menjadi parser yang mengambil metadata dari tautan input dan adaptor yang mencari tautan di platform tujuan; hasil pencarian tidak dijamin merupakan trek atau lagu yang persis benar
  • Untuk menjalankan secara lokal diperlukan Bun dan beberapa API key; per Maret 2026, pencarian Spotify menggunakan GraphQL API internal dari pemutar web Spotify dan token yang diperbarui otomatis karena pembatasan Web API Spotify

Apa yang dilakukan IDHS

  • IDHS(I Don't Have Spotify) menampilkan tautan item yang sesuai di platform lain yang didukung saat pengguna menyalin tautan dari layanan streaming favoritnya dan menempelkannya ke kolom pencarian
  • Jika tautan sumber adalah Spotify, IDHS menyediakan pratinjau audio cepat agar pengguna dapat memastikan apakah treknya benar
  • Cakupan dukungan adalah trek, album, artis, dan podcast individual
    • Playlist berada di luar cakupan dukungan

Layanan streaming yang didukung

  • Web App dan Raycast Extension menangani konversi tautan antar-layanan streaming melalui adaptor
  • Adaptor yang didukung adalah sebagai berikut
    • Spotify
    • Tidal
    • YouTube Music
    • Apple Music
    • Deezer
    • SoundCloud
    • Qobuz
    • Bandcamp
    • Pandora
  • Semua adaptor mendukung Inverted Search dan Verified Links
  • Penggunaan API resmi berbeda-beda menurut platform
    • Menggunakan API resmi: Tidal, Deezer
    • Tidak menggunakan API resmi: Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora

Struktur parser dan adaptor

  • IDHS mengekstrak metadata dari tautan yang diberikan, lalu berdasarkan informasi tersebut membuat kueri pencarian baru untuk digunakan di mesin pencari publik atau API resmi seperti Apple Music, YouTube, dan SoundCloud
  • IDHS memilih item yang tampak paling relevan di antara hasil pencarian, tetapi tidak ada jaminan bahwa tautan yang dikembalikan adalah trek atau lagu persis yang diinginkan pengguna
  • Usulan peningkatan alur kerja pembuatan kueri pencarian diterima, tetapi ada batasan bahwa percobaan ulang brute-force dikecualikan demi menjaga request tetap cepat dan menghindari rate limit
  • Parsers src/parsers

    • Parser mengidentifikasi platform dari tautan yang masuk dan mengekstrak metadata yang sudah dinormalisasi
    • Judul
    • Deskripsi
    • Tipe
    • Gambar
    • Audio opsional
    • Kueri pencarian yang konsisten
    • Sebagai contoh, tautan Spotify mengumpulkan metadata Open Graph dan membuat string pencarian yang merepresentasikan trek, album, artis, show, atau episode
    • Kueri pencarian ini kemudian digunakan untuk mencari di platform lain
  • Adapters src/adapters

    • Adaptor mengubah kueri pencarian yang sudah dinormalisasi menjadi tautan eksternal di platform tujuan
    • Setiap adaptor bertanggung jawab atas hal berikut
    • Melakukan pencarian khusus platform dengan kueri pencarian yang sudah dinormalisasi
    • Metode pencarian bisa berbasis API atau HTML
    • Mengembalikan hasil yang mencakup nilai seperti type, url, isVerified, dan notAvailable
    • Jika platform menyediakan sinyal pencocokan yang dapat dipercaya, tautan verified diprioritaskan
    • Pemisahan ini memodularkan sistem agar parser fokus memahami sumber, sedangkan adaptor fokus menemukan tautan tujuan

Web App dan Raycast Extension

Menjalankan secara lokal dan pengaturan API

  • Daftar environment variable dapat dilihat di .env.test
  • Nilai berikut perlu diatur secara terpisah
  • Perintah untuk menjalankan aplikasi adalah sebagai berikut
bun install
bun dev
  • Untuk menjalankan URL shortener bersama aplikasi, atur URL_SHORTENER_API_KEY dengan nilai yang digunakan di docker-compose.yml, lalu gunakan perintah berikut
docker compose up -d
bun install
bun dev

Cara menangani pencarian Spotify

  • Pencarian Spotify tidak menggunakan Spotify Web API, melainkan menggunakan token akses anonim yang diekstrak dari pemutar web Spotify di open.spotify.com
  • Alur autentikasinya berbasis TOTP dan menggunakan GraphQL API internal yang dipakai oleh pemutar web Spotify
  • README menjelaskan bahwa per Maret 2026, Spotify membatasi Web API sehingga mewajibkan akun Premium dalam Development Mode dan membatasi endpoint yang dapat digunakan
  • Karena proyek ini tidak memiliki akun Premium, proyek ini menggunakan API internal yang sama dengan pemutar web Spotify
  • Token diperbarui otomatis dengan masa berlaku sekitar 1 jam, dan tidak memerlukan akun developer

Kontribusi

  • Kontribusi diterima dengan cara membuka PR

1 komentar

 
GN⁺ 2024-11-12
Komentar Hacker News
  • Ada juga situs yang lebih mengesankan yang memindahkan playlist dari sekitar 20 platform termasuk Spotify, atau dari file teks, ke sekitar 20 platform lain atau ke file teks
    Semoga jangan semua menyerbu sampai bikin situsnya tumbang :)
    https://app.tunemymusic.com/transfer

    • Saya sudah mencobanya dan bekerja dengan baik. Hanya saja sayang sekali hal seperti ini diperlukan
      Andai ada format impor/ekspor yang netral vendor, alih-alih pihak ketiga harus menyelesaikan semua kombinasi integrasi
    • Baru-baru ini saya pindah dari Spotify ke Tidal, dan layanan migrasi yang direkomendasikan cukup asal-asalan
      Saya memindahkan artis favorit, tetapi layanan itu mencoba mencocokkan hanya berdasarkan nama, jadi kalau ada dua atau lebih nama yang sama hasilnya kacau total dan tampaknya memilih hampir secara acak. Penasaran bagaimana dengan layanan ini
    • Ada yang tahu cara teknis untuk memulihkan daftar judul video yang dihapus dari playlist YouTube?
      Saya punya lebih dari 10 playlist penuh musik yang dihapus karena klaim hak cipta yang tidak semestinya, dan karena tidak tahu judul/artis track yang dihapus, saya bahkan tidak bisa menyusun ulang playlist-nya
    • Ada juga ini: https://playlists.cloud/
    • Saya suka TuneMyMusic. Saat meninggalkan Spotify, saya mengekspor lalu mengimpor semuanya ke Deezer, dan sekarang saya secara berkala mengekspor semuanya dari Deezer untuk menganalisisnya macam-macam di Excel
  • Saya membuat ekstensi Chrome yang sangat sederhana, yang otomatis mengalihkan link layanan musik lain ke layanan pilihan saya
    Dalam kasus saya, saya setel ke YouTube Music, jadi ketika mengklik link seperti Spotify di Slack, saya dibawa ke YouTube Music
    https://chromewebstore.google.com/detail/music-link/gnhphofp...

    • Ada versi Firefox-nya?
    • Pekerjaan semacam ini membuat pengembangan ekstensi Chrome jadi menyenangkan
    • Kelihatannya keren, pemetaan URL-nya dilakukan manual?
  • Saya ingin benar-benar membeli musik dan menyimpannya sendiri. Karena saya makin sering melihat lagu-lagu yang dulu ada di Spotify perlahan menghilang
    Tapi sekarang musik sangat sulit dibeli. Sebagian besar dirilis sebagai single, dan sejauh yang saya tahu sepertinya hanya tersedia di platform streaming. Apakah masih ada cara membeli musik semacam yang ada di platform streaming sebagai file audio sungguhan?

    • Menurut saya, cara paling berkelanjutan untuk “membeli” musik adalah mendapatkannya lewat pembajakan, lalu mendukung artis dengan membeli merchandise mereka
      Atau beli di Bandcamp kalau memungkinkan
    • Setelah pindah ke negara lain, saya mengganti kartu kredit Spotify ke kartu negara baru, lalu Spotify juga mengubah pengaturan wilayah saya
      Akibatnya, banyak sekali lagu yang sudah saya “beri bintang”/“tambahkan”/“sukai” menjadi abu-abu dan tidak bisa diputar. Bagaimanapun, kalau urusannya mendapatkan salinan musik yang saya dengarkan secara nyata, saya rasa tidak perlu merasa malu sama sekali untuk membajaknya sepenuhnya
    • Saya juga melakukan itu, dan di Kanada https://ca.7digital.com/ praktis satu-satunya opsi untuk membeli MP3 biasa, dan saya sangat merekomendasikannya
      Album terbaru bisa saya beli tanpa masalah, tetapi untuk single terbaru saya kurang tahu. Di AS, Amazon tampaknya mengizinkan pembelian MP3, tapi saya tidak yakin
      Dengan biaya langganan Spotify, biasanya kita bisa membeli satu album baru setiap bulan, jadi itu menyenangkan, dan saya suka koleksi album saya bertambah perlahan
    • Bandcamp, 7Digital, dan dengan sangat terpaksa Amazon. Semakin besar labelnya, semakin sulit membeli musik digital
    • Coba lihat Qobuz. Pertama, di sana mereka hanya menangani audio lossless, tidak ada MP3
      Kita sudah hampir 25 tahun memasuki abad ke-21; masa Napster ketika kita harus streaming MP3 sudah berlalu
      Di Qobuz, sering juga ada album dengan kualitas lebih tinggi daripada stereo 44,1 kHz / 16-bit. Saya mungkin tidak bisa mendengar bedanya, tetapi jika artis/engineer audio cukup peduli untuk menyediakan frekuensi sampling atau bit depth yang lebih tinggi, biasanya itu berarti mereka juga peduli agar musiknya terdengar bagus
      Qobuz melakukan persis yang Anda inginkan. Anda bisa membeli dan mengunduh track individual atau album penuh, dan tanpa DRM
      Saya juga punya koleksi file audio hasil rip dari CD yang saya beli sendiri secara 100% bit-perfect/lossless, dan juga menggunakan langganan Qobuz. Hasil rip itu saya verifikasi dengan DB online dari orang-orang yang merip CD yang sama
      Kekurangan Qobuz adalah fitur penemuan musiknya bukan yang terbaik, dan UI-nya juga cukup buruk. Meski begitu, ini bagus untuk orang yang mementingkan kualitas dan ingin memiliki musiknya sendiri
      Sekarang sebagian besar perangkat streaming jaringan mendukung Qobuz. Misalnya, saya memakai amplifier Yamaha dengan network streamer terintegrasi (Yamaha R-N1000A), dan aplikasi streaming musik Yamaha, MusicCast, juga mendukung Qobuz, Tidal, dan Spotify
      Anda bisa benar-benar membeli dan memiliki track individual, bukan menyewa akses sementara ke layanan online yang bisa hilang dari bawah kaki Anda atau menghapus lagu yang sedang Anda dengarkan
      Coba cek paket harganya. Paket yang lebih baik bisa berbeda tergantung jumlah lagu yang Anda beli
      Sejauh yang saya pahami, Spotify juga, karena tekanan dari Tidal dan Qobuz, mengumumkan akan beralih ke streaming lossless. Baru akhirnya pada 2024
  • Pada dua lagu pertama yang saya coba, pencocokan YouTube Music gagal
    Two Words dari Kanye West: https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
    Malah masuk ke Two Words dari Milabel Ranque: https://music.youtube.com/watch?v=Y64cFG9dfYo
    Never Let Me Down dari Kanye West: https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
    Malah masuk ke Never Let me Down dari Depeche Mode: https://music.youtube.com/watch?v=snILjFUkk_A
    Padahal artwork album yang benar muncul di situs. Tidak ada satu pun lagu yang saya coba yang benar-benar berfungsi dengan benar. Memang begini? Apakah caranya mencari lagu dengan judul mirip?

  • Saya sering menerima tautan Spotify, jadi ini bagus. Tautan yang lebih baik adalah halaman layanan sebenarnya, bukan repositori GitHub
    https://idonthavespotify.donado.co/
    Akan sangat bagus juga kalau ada sebagai ekstensi untuk pengguna Firefox. Semoga suatu saat ada yang membuatnya

    • Kalau mudah mengetahui dari mana parameter id di halaman hasil berasal, mungkin ini juga bisa dibuat sebagai bookmarklet
      Saya menduga itu semacam hash sederhana dari tautan
    • Kenapa kamu begitu sering menerima tautan Spotify?
  • Saya memakai halaman ini saat membuat halaman berisi tautan ke berbagai penyedia musik: https://odesli.co
    Berfungsi untuk artis, album, dan lagu
    Jika login, URL bisa dikustomisasi
    Saya hanya pengguna, tidak punya kepentingan apa pun

    • Saya juga sangat suka Songlink/Odesli. Pencariannya juga bekerja lebih cepat daripada pencarian Spotify atau Apple Music
    • 5 tahun lalu saya membuat bot Discord yang memakai songlinks API
      Sayangnya tidak banyak dipakai dan sekarang sudah tidak saya pelihara
    • Ada juga integrasi Slack: /songlink {url}
  • Salah satu fitur terbaik yang saya dapat dari NAS adalah bisa menyimpan musik di sana dan streaming ke ponsel
    Daripada bergantung pada layanan berlangganan, saya lebih suka membeli sebagian musik dan menyimpannya sendiri

    • Bisa berbagi konfigurasi apa yang kamu pakai atau rekomendasikan untuk NAS dan software streaming ke ponsel?
  • Dulu saat memelihara bot musik Discord, saya melakukan streaming dari YouTube
    Agar URL Spotify berfungsi, pencarian YouTube harus cocok dengan andal, dan satu trik yang cukup berhasil adalah memasukkan URL Spotify juga ke kata kunci pencarian YouTube bersama judul lagu, nama artis, dan lainnya
    Deskripsi video YouTube resmi sering berisi tautan Spotify, dan karena pencarian YouTube juga mencocokkan deskripsi, itu cukup membantu untuk memilih video “resmi”

  • Layanan ini menghubungkan beberapa layanan tambahan, tetapi URL yang sudah ada tidak bisa langsung ditempel begitu saja: https://odesli.co/
    Ini lebih mirip layanan tipe linktree, tetapi bisa mencari lagu dan album sehingga mudah ditemukan
    Contoh: https://song.link/i/1051394215