Memperbaiki penyandian tag ID3

12

Saya telah mewarisi sekitar 2000 file MP3. Bagi sebagian besar dari mereka, tampilan tag ID3 mereka kacau di Amarok. Saya memerlukan perangkat lunak yang meningkatkan tag ID3 ke tipe v2.4 $03(yaitu pengkodean UTF-8), menghapus semua tag v1, dan juga pintar mencari tahu pengodean asli berdasarkan kasus per kasus (kemungkinan besar salah satu dari Windows-1252, BOM-kurang UTF-16 atau GB18030).

Sebelum saya mulai memprogram ini sendiri di atas TagLib, apakah sudah ada solusi lengkap yang bisa saya gunakan?

Jangan rekomendasikan Musicbrainz - ini sangat bias terhadap musik yang diterbitkan Amerika Serikat dan hampir tidak berguna bagi saya. Jangan rekomendasikan perangkat lunak penandaan ID3 umum tanpa mengujinya terlebih dahulu terhadap persyaratan saya - kebanyakan dari mereka

  • tidak mendukung v2.4
  • terus terang mengatakan, ide terbelakang tenang tentang pengkodean karakter
  • tidak memiliki fitur otomasi (saya tidak ingin menghabiskan waktu mengedit secara manual).

Saya juga belum (belum) tertarik pada pembersihan tag, penggantian nama massal atau perangkat lunak kategorisasi saja; Saya pertama kali harus melakukan langkah normalisasi yang disebutkan sebelumnya.

Daxim
sumber

Jawaban:

9

Anda ingin Ex Falso, editor tag yang termasuk dalam proyek Quod Libet . Picard (tagger MusicBrainz) dapat menggunakan perpustakaan pemberian tag yang sama, tetapi QL yang membuatnya.

Secara khusus, Anda ingin perpustakaan penandaan Mutagen , yang mendukung id3v2.4 (dan dengan "mendukung" maksud saya "menegakkan" ... secara militer ...). Ini juga sangat baik dengan pengkodean karakter, dan termasuk tagger commandline scriptable dasar ( mid3v2). Sejauh langkah normalisasi Anda berjalan, Mutagen hanya menyimpan tag di ID3v2.4. Ini tentu saja mampu mengubah semua teks menjadi UTF-8, tetapi Anda mungkin perlu membuat skrip sendiri (saya percaya bahwa standar mid3v2alat ini adalah menjaga penyandian saat ini di mana mungkin, dan saya tidak tahu apakah itu bisa diperintahkan untuk menyimpan semuanya dalam pengkodean tertentu). Mutagen ditulis dalam Python.

Ex Falso adalah GUI yang bagus dan bersih, dan mendukung sebagian besar fitur retag-multiple-file utama yang Anda harapkan. Saya tidak berpikir itu banyak menghalangi pencarian internet dan saya tidak tahu bagaimana dengan artwork album - Quod Libet mungkin mendukungnya; Ex Falso dapat melakukannya dengan sebuah plugin, jika ada, meskipun mungkin tidak ada. Saya tidak pernah membutuhkan fungsionalitas itu - saya menggunakan EF dan mid3v2dalam konser untuk menangani kebutuhan retagging saya.

Ex Falso, bagian dari proyek Quod Libet

quack quixote
sumber
mid3v2hanya setengah dari solusi. Setelah mencobanya, jelas tidak baik dengan penyandian yang salah identifikasi yang saya alami, yaitu tag ID3 yang ditingkatkan masih menampilkan kesalahan di Amarok. Mutagen gagal persyaratan saya tentang »pintar mencari tahu pengkodean asli«; itu dengan asyik mengasumsikan Latin1/ Windows-1252, yang merupakan konforman standar, tetapi tidak berguna untuk dunia nyata yang berantakan. Saya cenderung tidak menerima jawaban ini sekarang; Saya akan memberikan beberapa hari lagi kesempatan untuk jawaban lain. Jika tidak ada yang baik datang, Anda diterima.
daxim
sangat bisa diterima. jika Anda adalah pembuat kode python, Anda dapat mempertimbangkan untuk menulis skrip yang menggunakan Mutagen untuk a) membaca di tag yang ada, b) melakukan beberapa langkah konversi yang cerdas (berdasarkan apa yang Anda curigai atau tahu sumber pengkodean menjadi), dan c ) menulis tag baru. sepertinya itu terutama langkah konversi yang mid3v2tidak terlalu terang, dan itu tidak mengejutkan saya ... tapi saya pikir python memiliki beberapa modul pengkodean karakter (mungkin iconvatau serupa) yang lebih pintar dan mungkin berguna untuk DIY- er.
quack quixote
Saya sendiri tidak begitu suka python coder atau saya punya beberapa saran yang lebih berguna. mungkin seseorang di stackoverflow akan memiliki ide yang lebih baik jika Anda akhirnya menulis skrip Anda sendiri.
quack quixote
9

Saya tidak berpikir Anda akan menemukan aplikasi mandiri yang akan memperbaiki pilihan pengkodean pilihan Anda yang salah. Memiliki campuran cp1252, UTF-16 dan GB-18030 sangat tidak biasa dan saya tidak berpikir perangkat lunak yang ada akan dapat menyelesaikannya secara otomatis.

Jadi saya akan mengunduh Mutagen dan menulis skrip Python khusus untuk mengotomatisasi keputusan Anda sendiri tentang cara memperbaiki penyandian yang tidak dikenal. Sebagai contoh:

musicroot= ur'C:\music\wonky'
tryencodings= 'gb18030', 'cp1252'

import os
import mutagen.id3

def findMP3s(path):
    for child in os.listdir(path):
        child= os.path.join(path, child)
        if os.path.isdir(child):
            for mp3 in findMP3s(child):
                yield mp3
        elif child.lower().endswith(u'.mp3'):
            yield child

for path in findMP3s(musicroot):
    id3= mutagen.id3.ID3(path)
    for key, value in id3.items():
        if value.encoding!=3 and isinstance(getattr(value, 'text', [None])[0], unicode):

            if value.encoding==0:
                bytes= '\n'.join(value.text).encode('iso-8859-1')
                for encoding in tryencodings:
                    try:
                        bytes.decode(encoding)
                    except UnicodeError:
                        pass
                    else:
                        break
                else:
                    raise ValueError('None of the tryencodings work for %r key %r' % (path, key))
                for i in range(len(value.text)):
                    value.text[i]= value.text[i].encode('iso-8859-1').decode(encoding)

            value.encoding= 3
    id3.save()

Script di atas membuat beberapa asumsi:

  1. Hanya tag yang ditandai sebagai dalam pengkodean 0 yang salah. (Pengkodean 0 adalah ISO-8859-1, tetapi dalam praktiknya sering merupakan halaman kode default Windows.)

  2. Jika sebuah tag ditandai sebagai dalam pengkodean UTF-8 atau UTF-16 itu dianggap benar, dan hanya dikonversi ke UTF-8 jika belum. Secara pribadi saya belum pernah melihat ID3 ditandai sebagai UTF (penyandian 1-3) dalam kesalahan sebelumnya. Untungnya, pengkodean 0 mudah untuk dipulihkan ke dalam byte aslinya karena ISO-8859-1 adalah pemetaan langsung 1-ke-1 dari nilai byte ordinal.

Ketika tag pengkodean 0 terpenuhi, skrip mencoba untuk menyusunnya kembali sebagai GB18030 terlebih dahulu, kemudian jika tidak valid kembali ke kode halaman 1252. Pengodean byte tunggal seperti cp1252 akan cenderung cocok dengan urutan byte paling banyak, jadi yang terbaik adalah menempatkannya di akhir daftar penyandian untuk dicoba.

Jika Anda memiliki penyandian lain seperti cp1251 Cyrillic, atau banyak nama file cp1252 dengan beberapa karakter beraksen berturut-turut, yang keliru dengan GB18030, Anda akan memerlukan semacam algoritma tebakan yang lebih pintar. Mungkin melihat nama file untuk menebak karakter seperti apa yang mungkin ada?

bobince
sumber
+1, skrip contoh yang bagus, dan penjelasan yang baik tentang apa yang dilakukannya dan asumsi apa yang dibuatnya. saya membagi mereka untuk membuatnya lebih jelas; harap kamu tidak keberatan.
quack quixote
0

Bagaimana dengan Mp3Tag dengan Wine ?

Fitur (antara lain):

Pengeditan Tag Batch Tulis ID3v1.1, ID3v2.3, ID3v2.4 , MP4, WMA, APEv2 Tags, dan Vorbis Comments ke beberapa file sekaligus.

Impor dari Amazon, discog, freedb, MusicBrainz Simpan pengetikan dan impor tag dari database online seperti Amazon, discogs, freedb, MusicBrainz, dan banyak lagi.

Ganti karakter atau kata-kata Ganti string dalam tag dan nama file (dengan dukungan untuk Ekspresi Reguler).

Dukungan Unicode Penuh Antarmuka pengguna dan penandaan sepenuhnya sesuai dengan Unicode.

cschol
sumber
-1

ada juga EasyTag

EasyTAG adalah utilitas untuk melihat dan mengedit tag untuk file MP3, MP2, MP4 / AAC, FLAC, Ogg Vorbis, MusePack, Audio Monkey, dan WavPack. Antarmuka GTK + yang sederhana dan bagus membuat penandaan lebih mudah di bawah GNU / Linux atau Windows.

Anda juga mungkin ingin tahu bahwa id3v2.3 biasanya format yang lebih disukai, karena windows media player tidak mendukung 2.4

Alexey Yakovenko
sumber
orang-orang yang bersikeras mengikuti spesifikasi v2.4 umumnya tidak tertarik pada apa yang Windows Media Player lakukan atau tidak mendukung ...
quack quixote