Mengatur tag judul ID3 agar sama dengan nama file MP3

14

Adakah yang punya skrip bash yang akan pergi melalui perpustakaan media dan mengatur tag judul id3 dari setiap file MP3 agar sama dengan nama file?

Saya juga terbuka untuk metode otomatis lainnya. Ini bisa berupa aplikasi GUI atau apa pun yang akan melakukan pekerjaan secara otomatis.

Metode EasyTag dicatat di sini: Cara mengganti nama tag judul massal dalam file mp3 ID3 - Sayangnya, saya tidak mengerti langkah-langkahnya.

MountainX
sumber
Anda dapat menjawab pertanyaan Anda sendiri. Buat daftar langkah-langkah yang Anda temukan ubuntuforums.orgdan kutip sumber Anda. :) Ini akan membantu pengunjung masa depan ke Superuser, jika ubuntuforums.orgtautannya tidak tersedia.
iglvzx
3
Berikut adalah beberapa tips: 1) Jangan mengacaukan pertanyaan Anda dengan "edit 1", "edit 2", dll. Selesaikan masalah menggunakan komentar. 2) Jika Anda menemukan solusi, posting itu sebagai jawaban, seolah-olah Anda sedang mencoba menjawab pertanyaan orang lain. Jangan berikan jawaban pada pertanyaan . Itu bukan tempat orang mencarinya :) Juga, gunakan blockquotes untuk apa pun yang Anda kutip dari tempat lain (lihat bantuan pemformatan).
slhck
Saya membuat skrip untuk menandai file MP3 dengan benar dalam format "Artis - Track.mp3" dan kemudian mengubah nama file menjadi " Track.mp3 ": gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 menggunakaneyed3
Zach Saucier

Jawaban:

17

EasyTAG memang alat yang hebat untuk masalah ini. Saya menemukan jawaban saya di sini . Dalam hal bagaimana menggunakannya, referensi terbaik ternyata adalah dokumentasi EasyTAG sendiri .

Buka EasyTag, arahkan ke folder dengan file musik di dalamnya, pilih semua file di folder, atau semua file yang ingin Anda tandai, klik tombol "Pindai File" (Anda harus mengarahkan kursor ke sana untuk mencari tahu yang mana).

Kemudian, pastikan dropdown pemindai diatur ke "Fill Tag," lalu di bidang Fill Tag, buat pengeditan yang sesuai sampai contoh di bawah bidang tampak seperti apa yang Anda cari. Jika Anda memerlukan bantuan lebih lanjut mengenai apa yang harus dimasukkan dalam bidang Tag Isi, klik "?" tombol untuk legenda (daftar kode apa yang mungkin berbeda untuk diterjemahkan) dan tekan tombol mask untuk mendaftar beberapa titik awal.

Saat Anda puas dengan hasilnya, klik tombol "Pindai File" (di kotak dialog Pindai File, bukan yang awalnya Anda klik untuk mencapai posisi Anda ... ikonnya terlihat sama) dan perubahan Anda akan diterapkan . Jika Anda tidak mendapatkan nama Artis atau Album, cukup pilih semua yang ingin Anda ubah, masukkan data dan klik tombol kecil di sebelah bidang itu dan semua file yang dipilih akan diisi atau diubah menjadi artis atau album itu. Ini berfungsi di sebagian besar bidang.

Setelah selesai, klik tombol simpan dan selesai.

PS: Pemindai CDDB sering bekerja dengan cukup baik, jika Anda memiliki album lengkap yang ingin Anda tandai, atau setidaknya file lagu yang tersedia secara komersial.

PPS: Saya masih setengah sadar. Menurut apa yang Anda tulis di posting asli Anda, coba ini di bidang Tag Isi:

%n. %a - %t

Inilah bagian yang relevan dengan pertanyaan ini:


1.2.2. Secara otomatis dengan pemindai "Fill Tag":

Beberapa kondisi untuk menggunakan mode ini:

  • file diurutkan berdasarkan album
  • nama file atau direktori induk berisi informasi tag (artis, album, judul, ...)
  • tag kosong atau tidak benar

Pemindai "Fill Tag" menggunakan pola untuk mengaitkan kata-kata dalam nama file dan direktori dengan entri tag. Dengan cara ini, bidang tag dapat diselesaikan secara otomatis dengan menekan tombol "hijau" di jendela pemindai atau bilah alat. Jika tag selesai sebagian, gunakan opsi "Timpa bidang saat memindai tag" di tab "Pemindai" pada jendela "Preferensi", untuk mengganti semua bidang dengan nilai baru.

Setiap kode sesuai dengan bidang, mengikuti aturan tesis ini:

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

Catatan: untuk menghindari kesalahan, disarankan untuk menggunakan kode hanya satu kali dalam pola. Tentu saja, seperti ketika memberi tag secara manual, hanya file yang dipilih yang diproses oleh pemindai. Anda dapat menggunakan pola yang ditentukan dalam daftar, atau menulis pola Anda sendiri untuk berhubungan dengan format nama file dan direktori Anda. Untuk menghindari kesalahan saat memilih pola yang tepat, atau menulisnya, pratinjau segera menunjukkan hasil sebelum menerapkan pola. Jika Anda memerlukan bantuan dengan kode yang berbeda, tekan tombol "Bantuan" (penyelamat) untuk menampilkan legenda setiap kode. Juga, jika Anda ingin menyimpan pola Anda sendiri, edit atau sortir kemudian, dengan menekan tombol "Mask" editor kecil akan ditampilkan di jendela pemindai.

Di bawah ini adalah contoh penggunaan pola:

a) nama file berikut:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under
MountainX
sumber
4

EasyTAG melakukan segala macam operasi batch tag / nama file pada file audio (dan beberapa video).

Ignacio Vazquez-Abrams
sumber
3

Saya telah menemukan berbagai alat baris perintah yang berguna:

id3v2

id3v2 adalah editor tag id3v2 baris perintah. Anda dapat menambahkan / memodifikasi / menghapus tag id3v2 dan mengonversi tag id3v1 menjadi tag id3v2. Ini menggunakan id3lib. Saya mencari rekan pengelola. Silakan kirim email ke myers_carpenter jika Anda tertarik.

eyeD3

eyeD3 adalah modul dan program Python untuk memproses tag ID3. Informasi tentang file mp3 (yaitu laju bit, frekuensi sampel, waktu putar, dll.) Juga disediakan. Format yang didukung adalah ID3 v1.0 / v1.1 dan v2.3 / v2.4.

ini sangat ideal ketika menulis sesuatu untuk memindai direktori.

Paul M.
sumber
2

Ini tidak selalu membuatnya benar-benar sempurna, tetapi saya telah menggunakannya untuk mendapatkan nama-nama file mp3 hanya menggunakan alat unix umum (termasuk versi busybox) Mungkin seseorang dengan lebih dari 6 mp3 Tom Petty dapat memberikan beberapa pengujian lebih lanjut.

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

Sunting: Saya salah membaca pertanyaan, tetapi mengetahui ini di atas kita dapat menggunakan sed untuk mengganti $ TITLE dengan nama file "$ x" dengan menggunakan sed untuk mengganti string di tempat

sed -i "s/$TITLE/$x/" "$x"

Saya hampir 100% yakin ini tidak memenuhi semua spesifikasi ID3, tetapi mungkin cukup untuk penggunaan pribadi dasar selama Anda membuat cadangan terlebih dahulu

technosaurus
sumber
Terima kasih. Saya menemukan cara untuk mencapai tujuan saya menggunakan EasyTAG, tetapi balasan Anda benar-benar menjawab pertanyaan awal saya yang terbaik. string adalah utilitas yang bagus untuk diketahui. (Saya belum pernah menggunakannya sebelumnya.) Bisakah Anda memposting solusi lengkap berdasarkan hasil edit Anda sehingga saya yakin saya memahami perubahan yang disarankan?
MountainX
2

Untuk Ubuntu 18.04 LTS (saya berasumsi semua rasa Debian akan berjalan dengan baik ini):

  • Instal eyeD3 dengan sudo apt install eyeD3

  • Buat file untuk skrip bash (saya menggunakan "sentuh"; Anda dapat menggunakan editor teks apa pun yang Anda suka)

  • Salin ini dan tempel ke file:

    Menyalin nama file dan menulisnya ke tag Judul

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    Jika Anda tidak peduli untuk melihat progresnya, abaikan baris di echo $a atas kata "selesai".

  • Jadikan file dapat dieksekusi:

    chmod +x filename
  • Salin skrip ke direktori tempat Anda ingin menjalankannya - yang berisi file media Anda; sebagai contoh:

    cp filename /music/directory
  • Arahkan ke direktori yang baru saja Anda salin skrip ke:

    cd /music/directory
  • Jalankan skrip:

    ./filename

    DIBUAT

Ini bekerja untuk saya di Ubuntu 18,04 LTS - istri saya menulis ini untuk saya dalam waktu sekitar 3 menit, jadi saya tidak bisa menjawab pertanyaan jika itu tidak berhasil untuk Anda; Saya bukan programmer yang mengerti, saya mengatur web ini, dns, ssh, sftp, ftp, AD / Domain, file, firewall, router / server agak cowok :-) Saya BENCI melakukan skrip, pemrograman dan hal-hal seperti itu. Saya suka mengambil keuntungan dari scripting, pemrograman dan hal-hal seperti itu :-)

John
sumber
1

Saya terkejut bahwa tidak ada yang menyarankan solusi termudah menggunakan ffmpegatau avconv:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;
shivams
sumber
0

Saya akan menginstal eyeD3 dalam virtualenv python dengan pip install eyeD3sehingga Anda mendapatkan versi yang paling baru dirilis. Setelah menjalankan itu:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Anthon
sumber