Spotify'a Son! Navidrome ile Kendi Müzik Sunucunuzu Kurun!

Spotify, Deezer ve benzeri uygulamalardan sıkıldınız mı? Ücretleri uygun olsa da tamamen kendinize ve paylaşmayı dilediğiniz insanlara ait bir müzik sunucunuz olsun ister miydiniz?

Spotify'a Son! Navidrome ile Kendi Müzik Sunucunuzu Kurun!

Spotify, Deezer ve benzeri uygulamalardan sıkıldınız mı? Ücretleri uygun olsa da tamamen kendinize ve paylaşmayı dilediğiniz insanlara ait bir müzik sunucunuz olsun ister miydiniz? Dilediğiniz kadar müziği bir noktada toplayıp ister mobil uygulamasından ister tarayıcınızdan erişip reklam derdi olmadan sınırsızca ve hatta offline-mod seçeneği ile dinlemek ve bunlara hiçbir ücret ödememek. Kulağa harika geliyor değil mi?

Navidrome; açık kaynak bir müzik sunucusudur. İçinde birden çok tema barındırıyor ve bunlardan bir tanesi Spotify ile birebir aynı. Öte yandan tarayıcı ile açtığınızda ileri web uygulamasını kurabilirsiniz mobil cihazlarınıza. Bunun dışında herhangi bir müzik istemcisiyle -örneğin substreamer- sunucunuza bağlanıp müziklerinizi doya doya dinleyebilirsiniz. Mobil cihazınızın uygulama mağazanızda onlarca müzik istemcisi bulabilirsiniz. Benim tavsiyem Substreamer olacaktır.

Lafı çok uzatmadan kurulum adımına geçelim. Artık alıştığımızı sanıyorum, Portainer kullanacağız 😎

version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1000 # should be owner of volumes
    networks:
      - nginxproxymanager_default
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
    volumes:
      - "/home/navidrome/data:/data"
      - "/home/navidrome/music:/music:ro"


networks:
  nginxproxymanager_default:
    external: true
  • Proxy kullanıyorsanız kendi proxy network ayarlarınızı yapıp yukarıdaki network konfigürasyonunu değiştirmeyi unutmayın.
  • Sunucunuzda, navidrome uygulamasının müziklerini depolayacağı dizinin sahibi kimse onun UID ve GID bilgisini user parametresinde belirtin.
  • Volume bağlantılarını doğru yaptığınızdan emin olun.
    Diğer konfigürasyonlar için bu bağlantıyı kullanın.

Navidrome kurulduktan sonra tarayıcı yardımıcyla sunucunuza erişip admin kullanıcısını oluşturabilirsiniz. Buraya kadar her şey kolaydı 😁 şimdi zor kısmı geliyor 😐

Pardon, zor değil, zor(du). Çünkü işimizi kolaylaştıracak bir Python scripti yazdım. Peki ama zor olan neydi?

Müziklerimizi doğrudan bu uygulamaya atamayız. Çünkü müzik dosyalarımızın meta etiketlerinin doğru biçimde düzenlenmiş olması gerek. Eğer meta etiketler yoksa veya hatalıysa Navidrome içerisinde listelenmez veya hatalı gösterilir. Örneğin Tarkan'a ait bir parça bambaşka isimlerde ve sanatçı isminde görünebilir. Yani aradığımızı bulamayız. Peki bunu düzeltmenin bir yolu yok mu? Var elbette ama başka uygulamalar aracılığıyla sürekli indirdiğimiz müziklere erişip meta etiketlerini elimizle girmemiz lazım. Minimum düzeydeki meta etiketler nelerdir?

  • Parçanın sanatçısı
  • Parçanın dahil olduğu albüm adı
  • Parçanın adı

Her bir müzik dosyası için bu etiketleri oluşturmak ve müzik dosyasına eklemek bir zulüm. Ha bir de her parça için albüm kapağı çekilip eklenmeli 😟 Tabii telaşa gerek yok, çözdük o işleri 😃

Bu github sayfamda bulunan projeyi klonlayıp sunucumuza çekmemiz gerek. Elbette kodları siz de bir gözden geçirin. Casus bir şey yok içinde ama kimseye güvenmemek daha iyidir. Proje içinde Readme.md bulunuyor. Lütfen okuyun. Gereken yazılımları işletim sisteminize kurun. Ardından Python için gereken birkaç modül de requirements.txt dosyasında belirtiliyor. Onları da pip ile kurun lütfen.

Şimdi en önemli kısımdayız, bu script nasıl çalışıyor? Çok kolay. Önce boş bir dosya açıyorsunuz, adı önemli değil. Sonra çekmek istediğiniz albümleri https://music.youtube.com adresinden buluyor ve URL adreslerini bu boş dosyamıza alt alta kaydediyoruz. Sonra da scriptimizi düzenliyoruz. Çünkü main() fonksiyon içerisinde müziklerin bulunacağı PATH yer alıyor. Lütfen o değişkenleri kendi sunucunuzda nasıl yaptıysanız ona göre güncelleyin.

Gerisi çok kolay:

python3 main.py urls.txt

Script, bizim yerimize her bir URL'ye selenium ile erişip hem albüm kapağını hem albüme dahil olan tüm parçaları hem de bu parçaların meta etiketlerini alıp otomatik olarak müzik dosyasına ekliyor ve bu dosyaları da sizin belirlediğiniz navidrome kütüphanesine düzenli ve sıralı biçimde atıyor.

Script içerisinde multiprocesses kullandığım için ne kadar işlemciniz varsa müzik dosyalarının düzenlenmesi o kadar hızlı oluyor.

İşte bu kadar 🥳 🤖 👾 İyi eğlenceler!