2 puan yazan GN⁺ 2024-11-12 | 1 yorum | WhatsApp'ta paylaş
  • IDHS, bir streaming servis bağlantısını arama kutusuna yapıştırdığınızda desteklenen diğer platformlarda aynı parçanın bağlantısını bulup gösteren bir web uygulamasıdır; kaynak Spotify ise hızlı bir ses önizlemesi de sunar
  • Destek kapsamı tekil parça, albüm, sanatçı, podcast ile sınırlıdır; çalma listelerinin kapsam dışı olduğu açıkça belirtilir
  • Spotify, Tidal, YouTube Music, Apple Music, Deezer, SoundCloud, Qobuz, Bandcamp, Pandora adaptörleri vardır ve tüm adaptörler tersine arama ile doğrulanmış bağlantıları destekler
  • Sistem, giriş bağlantısından meta veriyi çıkaran bir parser ve hedef platformda arayıp bağlantıyı bulan bir adapter olarak ayrılır; arama sonucunun tam olarak doğru parça ya da şarkı olduğu garanti edilmez
  • Yerelde çalıştırmak için Bun ve bazı API anahtarları gerekir; Spotify araması ise Mart 2026 itibarıyla Web API kısıtlamaları nedeniyle Spotify web oynatıcısının dahili GraphQL API'sini ve otomatik yenilenen token'ları kullanır

IDHS ne yapar

  • IDHS (I Don't Have Spotify), kullanıcıların sevdikleri streaming servisindeki bir bağlantıyı kopyalayıp arama kutusuna yapıştırdıklarında, desteklenen diğer platformlardaki karşılık gelen öğe bağlantılarını gösterir
  • Kaynak bağlantı Spotify ise, kullanıcının doğru parça olup olmadığını kontrol edebilmesi için hızlı bir ses önizlemesi sunar
  • Destek kapsamı tekil parça, albüm, sanatçı, podcast öğeleridir
    • Çalma listeleri destek kapsamı dışındadır

Desteklenen streaming servisleri

  • Web App ve Raycast Extension, streaming servisleri arasında bağlantı dönüşümünü adapter'lar üzerinden işler
  • Desteklenen adaptörler şunlardır
    • Spotify
    • Tidal
    • YouTube Music
    • Apple Music
    • Deezer
    • SoundCloud
    • Qobuz
    • Bandcamp
    • Pandora
  • Tüm adaptörler Inverted Search ve Verified Links desteği sunar
  • Resmi API kullanımı platforma göre değişir
    • Resmi API kullananlar: Tidal, Deezer
    • Resmi API kullanmayanlar: Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora

Parser ve adapter yapısı

  • IDHS, verilen bağlantıdan meta veriyi çıkarır ve bu bilgiye dayanarak genel arama motorlarında ya da Apple Music, YouTube, SoundCloud gibi resmi API'lerde kullanılacak yeni bir arama sorgusu oluşturur
  • Arama sonuçları arasından en ilgili görünen öğeyi seçer, ancak dönen bağlantının kullanıcının istediği tam parça ya da şarkı olduğu garanti edilmez
  • Arama sorgusu üretim iş akışını iyileştirmeye yönelik öneriler memnuniyetle karşılanır, ancak istekleri hızlı tutmak ve hız sınırına takılmamak için brute-force retry yaklaşımı özellikle kapsam dışıdır
  • Parsers src/parsers

    • Parser'lar gelen bağlantının hangi platforma ait olduğunu tespit eder ve normalize edilmiş meta veriyi çıkarır
    • Başlık
    • Açıklama
    • Tür
    • Görsel
    • İsteğe bağlı ses
    • Tutarlı arama sorgusu
    • Örneğin Spotify bağlantıları için Open Graph meta verisi toplanır ve parça, albüm, sanatçı, şov, bölüm için arama dizeleri oluşturulur
    • Bu arama sorgusu daha sonra diğer platformlarda arama yapmak için kullanılır
  • Adapters src/adapters

    • Adapter'lar normalize edilmiş arama sorgusunu hedef platformdaki harici bağlantılara dönüştürür
    • Her adapter şu işlerden sorumludur
    • Normalize edilmiş arama sorgusuyla platforma özgü arama yapmak
    • Arama yöntemi API tabanlı ya da HTML tabanlı olabilir
    • type, url, isVerified, notAvailable gibi değerleri içeren sonuçlar döndürmek
    • Platform güvenilir eşleşme sinyalleri sunuyorsa verified bağlantılara öncelik vermek
    • Bu ayrım, parser'ların kaynağı anlamaya, adapter'ların ise hedef bağlantıları bulmaya odaklanmasını sağlayarak sistemi modüler hale getirir

Web App ve Raycast Extension

Yerelde çalıştırma ve API ayarları

  • Ortam değişkenleri listesi .env.test içinde görülebilir
  • Aşağıdaki değerler ayrı yapılandırma gerektirir
  • Uygulamayı çalıştırma komutları şöyledir
bun install
bun dev
  • URL kısaltıcıyı da birlikte çalıştırmak için, docker-compose.yml içinde kullanılan değerle URL_SHORTENER_API_KEY ayarlandıktan sonra şu komutlar kullanılır
docker compose up -d
bun install
bun dev

Spotify aramasının işlenişi

  • Spotify araması Spotify Web API'yi kullanmaz; bunun yerine open.spotify.com üzerindeki Spotify web oynatıcısından çıkarılmış anonim erişim token'ı kullanır
  • Kimlik doğrulama akışı TOTP tabanlıdır ve Spotify web oynatıcısının kullandığı dahili GraphQL API kullanılır
  • README, Mart 2026 itibarıyla Spotify'ın Web API'yi kısıtlayarak Development Mode'da Premium hesap zorunluluğu getirdiğini ve kullanılabilir endpoint'leri sınırladığını açıklar
  • Bu proje, Premium hesabı olmadığı için Spotify web oynatıcısıyla aynı dahili API'yi kullanır
  • Token'lar yaklaşık 1 saatlik son kullanma süresiyle otomatik olarak yenilenir ve geliştirici hesabı gerektirmez

Katkı

  • Katkılar PR açılarak kabul edilir

1 yorum

 
GN⁺ 2024-11-12
Hacker News yorumları
  • Spotify dâhil 20'den fazla platformdaki ya da metin dosyasındaki çalma listelerini başka 20'den fazla platforma veya metin dosyasına taşıyan daha etkileyici bir site de var
    Herkes birden yüklenip çökertmesin lütfen :)
    https://app.tunemymusic.com/transfer

    • Denedim, iyi çalıştı. Ama böyle bir şeye ihtiyaç duyulması üzücü
      Üçüncü bir tarafın tüm entegrasyon kombinasyonlarını çözmek zorunda kalması yerine, satıcıdan bağımsız bir içe/dışa aktarma formatı olsa keşke
    • Yakın zamanda Spotify'dan Tidal'a geçtim; önerilen taşıma hizmeti epey özensizdi
      Favorilere eklediğim sanatçıları taşıdı ama yalnızca ada göre eşleştirmeye çalıştığı için aynı isimden birden fazla varsa feci şekilde başarısız oldu; neredeyse rastgele seçiyor gibiydi. Bu hizmetin nasıl olduğunu merak ediyorum
    • YouTube çalma listelerinden silinmiş videoların başlık listesini geri getirmenin teknik bir yolunu bilen var mı?
      Uygunsuz telif hakkı şikâyetleriyle silinmiş müziklerle dolu 10'dan fazla çalma listem var; silinen parçaların başlığını/sanatçısını bilmediğim için çalma listesini yeniden oluşturamıyorum
    • Şu da var: https://playlists.cloud/
    • TuneMyMusic'i seviyorum. Spotify'dan ayrılırken dışa aktarıp her şeyi Deezer'a içe aktardım; şimdi de düzenli aralıklarla Deezer'daki her şeyi dışa aktarıp Excel'de evirip çevirerek analiz ediyorum
  • Başka müzik hizmetlerinin bağlantılarını açınca tercih ettiğim hizmete otomatik yönlendiren çok basit bir Chrome uzantısı yaptım
    Benim durumda YouTube Music'e ayarlı; Slack'te Spotify gibi bir bağlantıya tıklayınca YouTube Music'e gidiyor
    https://chromewebstore.google.com/detail/music-link/gnhphofp...

    • Firefox sürümü de var mı?
    • Bu tür işler Chrome uzantısı geliştirmeyi eğlenceli hâle getiriyor
    • Güzel görünüyor; URL eşlemesini elle mi yaptın?
  • Müziği gerçekten satın alıp kendim saklamak istiyorum. Çünkü Spotify'da olan parçaların giderek daha sık kaybolduğunu görmeye başladım
    Ama bugünlerde müzik satın almak çok zor. Çoğu single olarak çıkıyor ve bildiğim kadarıyla yalnızca streaming platformlarına yükleniyor gibi. Streaming platformlarında bulunan aynı tür müziği gerçek ses dosyası olarak satın almanın hâlâ bir yolu var mı?

    • Müziği “satın almanın” en sürdürülebilir yolu bence korsan edinip sonra sanatçıyı merch satın alarak desteklemek
      Ya da mümkünse Bandcamp'ten satın almak
    • Başka bir ülkeye taşındıktan sonra Spotify'daki kredi kartımı yeni ülkenin kartıyla değiştirdim; Spotify bölge ayarımı da değiştirdi
      Sonuç olarak “yıldızladığım”/“eklediğim”/“beğendiğim” pek çok parça griye dönüp çalınamaz hâle geldi. Her neyse, dinlediğim müziğin bir kopyasını fiilen edinme meselesiyse, hiç utanmadan tamamen korsan edinmenin de sorun olmadığını düşünüyorum
    • Ben de böyle yapıyorum; Kanada'da https://ca.7digital.com/ sıradan MP3 satın almaya imkân veren fiilen tek seçenekti ve şiddetle öneririm
      Yeni albümleri sorunsuz satın alabildim ama yeni single'lar konusunda emin değilim. ABD'de Amazon MP3 satın almaya izin veriyor gibi, ama emin değilim
      Spotify abonelik ücretiyle genelde her ay yeni bir albüm alabilmek güzel; albüm koleksiyonumun yavaş yavaş büyümesi hoşuma gidiyor
    • Bandcamp, 7Digital ve gerçekten istemeye istemeye Amazon. Plak şirketi büyüdükçe dijital müzik satın almak daha da zorlaşıyor
    • Qobuz'a bakın. Öncelikle burada yalnızca kayıpsız müzik dosyaları var, MP3 yok
      21. yüzyıla gireli neredeyse 25 yıl olacak; MP3 stream etmek zorunda kaldığımız Napster günleri geride kaldı
      Qobuz'da 44,1 kHz / 16-bit stereodan daha yüksek kalitede albümler de sıkça var. Farkı duyamıyor olabilirim ama daha yüksek örnekleme frekansı ya da bit derinliği sunacak kadar özen gösteren sanatçı/ses mühendisi genellikle iyi tınlayan müziğe de önem veriyor demektir
      Qobuz tam olarak istediğiniz şeyi yapıyor. Tek tek parçaları veya tüm albümleri satın alıp indirebilirsiniz ve DRM de yok
      Kendi satın aldığım CD'lerden %100 bit-perfect/kayıpsız şekilde rip'lediğim ses dosyası koleksiyonum da var; ayrıca Qobuz aboneliğini de kullanıyorum. Rip sonuçlarını aynı CD'yi rip'leyen kişilerin çevrimiçi veritabanıyla doğruladım
      Qobuz'un dezavantajı, müzik keşif özelliğinin en iyisi olmaması; arayüzü de epey kötü. Yine de kaliteye önem veren ve müziğine sahip olmak isteyenler için iyi
      Günümüzde çoğu ağ üzerinden streaming cihazı Qobuz'u destekliyor. Örneğin ben ağ streameri entegre Yamaha amfi (Yamaha R-N1000A) kullanıyorum; Yamaha'nın müzik streaming uygulaması MusicCast de Qobuz, Tidal ve Spotify'ı destekliyor
      Ayağınızın altından çekilebilecek ya da dinlediğiniz parçaları kaldırabilecek çevrimiçi bir hizmetten geçici erişim kiralamak yerine, tek tek parçaları gerçekten satın alıp sahip olabiliyorsunuz
      Tarifeleri inceleyin. Satın aldığınız parça sayısına göre daha iyi tarife değişebilir
      Anladığım kadarıyla Spotify da Tidal ve Qobuz'un baskısıyla kayıpsız streaminge geçeceğini açıkladı. Nihayet 2024'te
  • İlk denediğim iki parçada YouTube Music eşleştirmesi başarısız oldu
    Kanye West’in Two Words parçası: https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
    Milabel Ranque’in Two Words parçasına gitti: https://music.youtube.com/watch?v=Y64cFG9dfYo
    Kanye West’in Never Let Me Down parçası: https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
    Depeche Mode’un Never Let me Down parçasına gitti: https://music.youtube.com/watch?v=snILjFUkk_A
    Sitede doğru albüm kapağı görünmesine rağmen böyle oldu. Gerçekten denediğim hiçbir parça düzgün çalışmadı. Normalde böyle mi? Benzer başlıklı parçaları bulma yöntemi mi kullanıyor?

  • Sık sık Spotify bağlantısı almam gerektiği için bu iyi. Daha iyi bağlantı GitHub deposu değil, asıl servis sayfası olurdu
    https://idonthavespotify.donado.co/
    Firefox kullanıcıları için bir uzantı olarak da olsa gerçekten iyi olurdu. Umarım bir gün biri yapar

    • Sonuç sayfasındaki id parametresinin nereden geldiğini kolayca anlayabilirsek, muhtemelen bookmarklet olarak da yapılabilir
      Bağlantının basit bir hash’i gibi olduğunu tahmin ediyorum
    • Neden bu kadar sık Spotify bağlantısı alıyorsun?
  • Birden fazla müzik sağlayıcısının bağlantısını içeren sayfalar oluştururken bu sayfayı kullanıyorum: https://odesli.co
    Sanatçı, albüm ve parça düzeyinde çalışıyor
    Giriş yaparsanız URL’yi özelleştirebiliyorsunuz
    Sadece bir kullanıcıyım, herhangi bir çıkar ilişkim yok

    • Ben de Songlink/Odesli’yi gerçekten seviyorum. Arama, Spotify veya Apple Music aramasından da daha hızlı çalışıyor
    • 5 yıl önce songlinks API’sini kullanan bir Discord botu yapmıştım
      Ne yazık ki pek kullanılmadı ve artık bakımını yapmıyorum
    • Slack entegrasyonu da var: /songlink {url}
  • NAS’ın sağladığı en iyi özelliklerden biri, müziği orada saklayıp telefona stream edebilmek
    Abonelik servislerine bağlı kalmaktansa bazı müzikleri satın alıp kendim saklamayı tercih ediyorum

    • NAS ve telefona stream için yazılım tarafında nasıl bir kurulum kullandığını ya da ne önerdiğini paylaşabilir misin?
  • Eskiden bir Discord müzik botunun bakımını yaparken YouTube’dan stream ediyordum
    Spotify URL’lerinin çalışması için YouTube aramasının güvenilir biçimde eşleşmesi gerekiyordu; iyi işleyen bir püf noktası, parça adı, sanatçı adı vb. ile birlikte Spotify URL’sini de YouTube arama sorgusuna eklemekti
    Resmi YouTube videolarının açıklamalarında çoğu zaman Spotify bağlantısı bulunuyor ve YouTube araması açıklamaları da eşleştirdiği için “resmi” videoyu seçmeye epey yardımcı oluyor

  • Bu servis birkaç servisi daha birbirine bağlıyor, ama mevcut URL’yi doğrudan yapıştırmanıza izin vermiyor: https://odesli.co/
    Daha çok linktree türü bir servise benziyor, ama parça ve albüm arayabildiğiniz için bulması kolay
    Örnek: https://song.link/i/1051394215