Geçen ay kendi arşivimde (yaklaşık 1800 parça) çalma listesi önerileri üretirken bir sorunla karşılaştım: önerilen parçaların albüm kapağı bazen gri kutu olarak geliyordu. Müzik dinlerken bu görsel tutarlılığı bozuyor. Önce Spotify API’sinden cover URL’lerini çekip önbelleğe aldım, ama ağ gecikmesi ve rate limit yüzünden öneri akışı yavaşladı. Ben de tamamen yerel bir çözüm denedim: parçaların yerel dosyalarındaki ID3 etiketlerinden albüm adı ve sanatçıyı okuyup, arşivdeki diğer parçalarla eşleştirerek kapak bulma.
Önce tüm parçaların etiketlerini bir SQLite veritabanına aktardım. Python’da mutagen kullandım:
from mutagen.id3 import ID3
import sqlite3, os
conn = sqlite3.connect('muzik.db')
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS parcalar (yol TEXT, sanatci TEXT, album TEXT, kapak BLOB)')
for root, _, files in os.walk('/muzik'):
for f in files:
if f.endswith('.mp3'):
yol = os.path.join(root, f)
try:
tags = ID3(yol)
sanatci = str(tags.get('TPE1', ''))
album = str(tags.get('TALB', ''))
kapak = tags.get('APIC:')
kapak_data = kapak.data if kapak else None
c.execute('INSERT INTO parcalar VALUES (?,?,?,?)', (yol, sanatci, album, kapak_data))
except Exception as e:
print(f'Hata: {yol} - {e}')
conn.commit()
Sonra öneri üretirken, her parça için önce veritabanında aynı albüm ve sanatçıya sahip başka bir parçanın kapağını aradım. Bulamazsam, albüm adına göre bulanık eşleştirme (rapidfuzz) yaptım. Bu şekilde %92 oranında kapak bulabildim. Kalan %8 için gri kutu yerine varsayılan bir yerel görsel kullandım.
Bu yöntemin avantajı tamamen çevrimdışı çalışması ve öneri akışını yavaşlatmaması. Ancak hafıza kullanımı arttı: 1800 parçanın kapakları BLOB olarak yaklaşık 120 MB yer kapladı. Ayrıca etiketleri eksik olan parçalar (özellikle eski MP3’ler) eşleşmeyi zorlaştırıyor. Bir de albüm kapağı olmayan ama albüm adı aynı olan farklı sürümler (remastered, deluxe) yanlış eşleşebiliyor. Bunu engellemek için albüm adının yanına yıl bilgisini de ekledim, ama yıl etiketi her zaman doğru olmuyor.
Sizce çalma listesi önerilerinde kapak tutarlılığı ne kadar önemli? Yerel arşivde bu tür bir eşleştirme yapan var mı, hangi yöntemi kullanıyorsunuz?


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