Çalma listesi karıştırma sırasını sabitlemek için küçük bir araç

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

Bir albüm tanıtımı için 38 parçalık bir çalma listesi hazırlıyordum; toplam süre 2 saat 41 dakika, dosyalar FLAC ve bir kısmı 24-bit/96 kHz. Sunum provasında fark ettim: aynı listeyi masaüstünde açtığımda sıra tutarlı, telefonda açtığımda iki parça yer değiştiriyor, arabanın USB’sinde ise tamamen alfabetik sıraya düşüyor. Sorun parçalarda değil, sıralama bilgisinin taşınma biçimindeydi.

Önce her dosyanın etiketlerine baktım. Çalma listesi dosyası M3U8 olarak dışa aktarılıyordu, ama parçaların tracknumber alanı boştu; oynatıcı da bu durumda kendi sıralama kuralını uyguluyordu. Şu komutla eksik olanları çıkardım:

for f in *.flac; do
  n=$(metaflac --show-tag=TRACKNUMBER "$f")
  [ -z "$n" ] && echo "eksik: $f"
done

Ardından sırayı tek bir kaynaktan üretmeye karar verdim: bir metin dosyası, her satırda göreli yol. Sıra numarasını dosya adına değil, listedeki konuma yazdım ve M3U8’i bu dosyadan ürettim:

awk '{printf "%s\n", $0}' sira.txt > liste.m3u8

Etiketlere de aynı numarayı yazdım (tracknumber ve disctotal), böylece etiket okuyan oynatıcılar da aynı sırayı görüyor. Toplu etiketleme için metaflac --set-tag=TRACKNUMBER=07 dosya.flac yeterliydi; 38 dosyada tek tek çalıştırmak yerine listeyi döngüye verdim.

Bunu neden böyle yaptım: çalma listesi sırası aslında bir meta veri, ama hiçbir oynatıcı bunu tek başına taşımıyor. M3U8 yolu taşır, etiket numarası ise dosyanın kendisini. İkisini aynı kaynaktan üretince çakışma kalmıyor. Bedeli şu: parça ekleyip çıkardığımda numaraları yeniden yazmam gerekiyor, yani sıra artık otomatik değil, elle yönetilen bir şey. 38 parça için kabul edilebilir, 300 parçada değil.

Nerede işe yaramıyor: dosya adında Türkçe karakter varsa bazı araçlar M3U8 yolunu bozuyor; ş ve ğ içeren iki parçada bunu yaşadım, yolları ASCII’ye çevirince düzeldi. Ayrıca akış servisleri bu etiketleri yok sayıyor, orada sıra yalnızca servisin kendi listesinde duruyor. Bir de 24-bit dosyalarda bazı eski oynatıcılar tracknumber alanını okuyup yine de kendi sırasını uyguluyor; o cihazlarda M3U8 tek çözüm.

Sizin listenizde sıra hangi katmanda tutuluyor: dosya adı, etiket mi, yoksa dışa aktarılan liste mi? Hangi oynatıcıda hangisi bozuldu, merak ediyorum.

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

0 条评论

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

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