Geçen hafta arşivdeki 4.200 parçalık listeyi M3U’dan CSV’ye taşıdım; hedef, albüm içi parça sırasını bozmadan yeni bir oynatıcıya aktarmaktı. İlk denemede tüm şarkılar alfabetik geldi, çünkü dışa aktarımda yalnızca dosya yolu ve başlık vardı; albüm ve parça numarası alanları boştu. Bunu fark ettiğimde listeyi yeniden taramak yerine etiketlerden sıra bilgisini çektim.
Önce mevcut etiketleri kontrol ettim:
ffprobe -v error -show_entries format_tags=album,track \
-of default=noprint_wrappers=1 "$dosya"
Çoğu dosyada track alanı 3/12 biçimindeydi, bir kısmında ise hiç yoktu. Eksik olanları dosya adındaki 01 - ön ekine göre doldurdum; ama bunu yalnızca albüm adı aynı olan klasörlerde yaptım, çünkü farklı albümlerde aynı parça numarası tekrar ediyor. Ardından M3U’yu şu Python parçasıyla CSV’ye çevirdim:
import csv, os, mutagen
rows = []
for line in open('liste.m3u', encoding='utf-8'):
p = line.strip()
if not p or p.startswith('#'):
continue
a = mutagen.File(p, easy=True)
rows.append((a.get('album', [''])[0],
a.get('tracknumber', [''])[0],
a.get('title', [''])[0], p))
rows.sort(key=lambda r: (r[0], int(r[1].split('/')[0] or 0)))
with open('cikti.csv', 'w', newline='', encoding='utf-8') as f:
csv.writer(f).writerows(rows)
Bunu yapmamın nedeni, oynatıcıların çoğunun listedeki satır sırasını değil, etiketlerdeki albüm ve parça numarasını esas alması. Sıralamayı dosya adına bırakmak, yeniden adlandırma sonrası kırılgan hale geliyor. Bedeli şu: albüm etiketi tutarsızsa gruplama yanlış oluyor ve tüm listeyi gözden geçirmek gerekiyor; 4.200 parçada bu yaklaşık yarım saat sürdü.
Nerede işe yaramıyor: canlı kayıtlarda ve derleme albümlerde parça numarası çoğu zaman anlamsız; aynı albüm adını taşıyan farklı sürümler (remaster, deluxe) tek gruba düşüyor. Kendi hatam, bazı dosyalarda track alanına A1 gibi plak numarası yazıldığını fark etmemek oldu; int() o satırlarda patladı. Artık önce sayı olup olmadığını kontrol ediyorum.
Sizin arşivinizde albüm sırasını hangi alan taşıyor: etiket mi, dosya adı mı, yoksa listeyi elle mi düzeltiyorsunuz?


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