Çalma listesi önerisinde sıra bozulunca dosya adına güvenmeyi bıraktım

这篇内容暂时只有 Türkçe 版本,以下是原文。

Geçen ay bir arkadaşın düğünü için 3 saatlik bir set hazırladım. Kütüphanede 1.400 parça vardı, bunların 600’ü son iki yılda eklenmişti. Öneri motoru olarak basit bir etiket + tempo sıralaması kullanıyorum, ayrı bir servis yok. Sorun şurada patladı: set dışa aktarıldığında parçaların bir kısmı albüm sırasına göre değil, dosya adının alfabetik sırasına göre dizildi. Yani “03 - …” ile başlayan bir parça, albümünün ikinci parçasından önce geldi.

Önce dosya adına güvenmeyi bıraktım. Etiketlerdeki tracknumber alanını okuyup, albüm içi sırayı oradan çıkardım. Ama tek başına bu da yetmedi; bazı dosyalarda tracknumber “3/12” gibi yazılmış, bazılarında boş. Şu betiği kullandım:

import mutagen
def track_no(path):
    try:
        t = mutagen.File(path, easy=True)
        raw = (t.get('tracknumber') or [''])[0]
        return int(raw.split('/')[0]) if raw.split('/')[0].isdigit() else 9999
    except Exception:
        return 9999

Sonra sıralamayı (album, disk_no, track_no, path) anahtarına bağladım. Düğün setinde işe yaradı, çünkü seti zaten albüm blokları halinde kuruyorum. Ama burada bir bedel var: albüm dışı tek parçalar (single’lar, derlemeler) hep sona düşüyor. Derleme albümlerde ise album etiketi aynı ama sanatçı farklı olduğu için bloklar karışabiliyor.

Nerede bozulduğunu da söyleyeyim: geçen hafta 200 parçalık bir indie listesinde aynı albümden iki parça arasına başka bir albüm girdi. Sebep, o iki parçanın albumartist alanının boş olmasıydı; sıralama anahtarım album üzerinden gidince aynı isimli iki farklı albümü birbirine karıştırdı. Çözüm olarak anahtara albumartist ekledim, boşsa dosya adındaki klasör adını kullandım. Yani sıralama artık tamamen etikete bağlı değil, etiket + klasör yolu karışımı. Bu da taşınabilirliği azaltıyor: kütüphaneyi başka bir diske kopyalayınca yol değişirse eski sıra garanti değil.

Bir de tempo tarafı var. Öneri motoru parçaları BPM’e göre sıralarken albüm içi sırayı tamamen ezebiliyor. Düğünde bunu istemedim, o yüzden öneri aşamasında albüm bloğunu kırmamak için “aynı albümden gelen parçaları ardışık tut” kuralı ekledim. Ama bu kural 40 dakikalık bir sette işe yararken, 3 saatlik sette listeyi tekdüze yapıyor; aynı albümden üç parça üst üste gelince enerji düşüyor.

Şu an aradığım denge şu: albüm sırasını koruyan ama setin enerji eğrisini bozmayan bir sıralama. Sizin kütüphanenizde albüm dışı parçaları ve derlemeleri bu denkleme nasıl katıyorsunuz?

0
赞同度 100% · 0 条评论 · 2 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。