Editor tag dengan QT GUI dan antarmuka baris perintah. Mendukung MP4 (iTunes), ID3, Vorbis, Opus, FLAC dan Matroska.
Editor tag dapat membaca dan menulis format tag berikut:
Keterangan lebih lanjut:
Editor tag juga dapat menampilkan informasi teknis seperti ID, format, bahasa, bitrate, durasi, ukuran, cap waktu, frekuensi pengambilan sampel, FPS dan informasi trek lainnya.
Ini juga memungkinkan untuk memeriksa dan memvalidasi struktur elemen file MP4 dan Matroska.
Terkadang editor tag harus menulis ulang seluruh file untuk menerapkan perubahan. Ini mengarah pada pembuatan file sementara. Dengan pengaturan default GUI, ini bahkan diberlakukan untuk menjadi konservatif karena file sementara juga berfungsi sebagai cadangan jika terjadi kesalahan, misalnya komputer Anda macet saat menyimpan atau bug di dalam tag Editor memecah file terstruktur secara khusus. Saat menggunakan CLI, karenanya juga direkomendasikan untuk menggunakan --force-rewrite
.
Bagian selanjutnya menjelaskan cara mengubah pengaturan untuk menghindari penulisan ulang dengan biaya tidak memiliki cadangan, memiliki beberapa bantalan di dalam file dan/atau menyimpan tag di akhir file.
Namun demikian, tidak akan selalu mungkin untuk menghindari menulis ulang file dalam semua kasus. Anda dapat mengonfigurasi direktori untuk file sementara dalam pengaturan GUI atau opsi CLI --temp-dir
. Kemudian Anda dapat dengan mudah membersihkan semua file sementara di beberapa titik bersama -sama. Untuk efisiensi, direktori sementara harus pada sistem file yang sama dengan file yang Anda edit. Fitur untuk menghapus file sementara secara otomatis belum diimplementasikan.
Editor memungkinkan Anda untuk memilih apakah tag harus ditempatkan di awal atau di akhir file MP4/Matroska. Menempatkan tag di akhir file dapat menghindari keharusan menulis ulang seluruh file untuk menerapkan perubahan.
Di CLI, ini dikontrol melalui opsi --tag-pos
. Untuk menegakkan --tag-pos
tertentu, bahkan jika ini mengharuskan file ditulis ulang, kombinasikan dengan opsi --force
.
Tag ID3V2 dan komentar Vorbis/Opus hanya dapat ditempatkan di awal. Tag ID3V1 hanya dapat ditempatkan di akhir file. Oleh karena itu, konfigurasi ini tidak berpengaruh saat berhadapan dengan tag tersebut.
Dimungkinkan juga untuk mengontrol posisi indeks/isyarat. Namun, ini saat ini hanya didukung saat berhadapan dengan file Matroska.
Catatan: Ini tidak dapat diimplementasikan untuk MP4 karena tag dan indeks saling terkait. Saat berhadapan dengan file MP4, posisi indeks akan selalu sama dengan posisi tag.
Menempatkan indeks di awal file kadang -kadang disebut FastStart .
Untuk memaksa FastStart melalui CLI, opsi berikut diperlukan:
tageditor set --index-pos front --force
Padding memungkinkan menambahkan informasi tag tambahan tanpa menulis ulang seluruh file atau menambahkan tag. Penggunaan padding dapat dikonfigurasi:
Dimungkinkan juga untuk memaksa penulisan ulang seluruh file untuk menegakkan bantalan pilihan digunakan.
Opsi CLI yang relevan adalah --min-padding
, --max-padding
, --preferred-padding
dan --force-rewrite
.
Mengambil keuntungan dari padding saat ini tidak didukung saat berhadapan dengan OGG Streams (didukung saat berhadapan dengan aliran FLAC mentah).
Seperti yang dijelaskan di bagian "Cadangan/File Sementara", ini bukan ide yang baik sebagai file sementara yang dibuat saat menulis ulang seluruh file juga berfungsi sebagai cadangan. Namun, jika Anda tetap ingin menghindari menulis ulang file sebanyak mungkin, atur yang berikut dalam pengaturan "tata letak file" GUI:
Saat menggunakan CLI, Anda hanya perlu menambahkan --max-padding 429496729
ke argumen CLI (dan menghindari argumen lain yang disebutkan di bagian sebelumnya).
Mengedit file besar (terutama file Matroska) dapat memakan waktu. Untuk meningkatkan kinerja, letakkan indeks di akhir file (opsi CLI --index-pos back
) karena dengan begitu ukuran indeks tidak akan pernah dihitung ulang. Ikuti juga saran dari bagian "Cadangan/File Sementara" untuk memaksa penulisan ulang dan menempatkan direktori sementara pada sistem file yang sama dengan file yang Anda edit. Memaksa penulisan ulang dapat meningkatkan kinerja karena dengan demikian editor tag bahkan tidak akan mencoba untuk melihat apakah itu dapat dihindari dan dengan demikian dapat melewatkan perhitungan yang dapat memakan waktu penting untuk file matroska besar.
Tentu saja bisa menghindari penulisan ulang masih akan lebih optimal. Lihat bagian sebelumnya untuk cara mencapainya. Untuk meningkatkan kinerja lebih lanjut saat menghindari penulisan ulang, letakkan tag di akhir (opsi CLI --tag-pos back
). Kemudian editor tag bahkan tidak akan mencoba menempatkan tag di depan dan dengan demikian dapat melewatkan beberapa perhitungan. (Menghindari penulisan ulang masih bukan ide yang baik secara umum.)
Format wadah matroska (dan webm yang didasarkan pada matroska) pecah dengan konvensi umum. Oleh karena itu tidak semua contoh CLI yang disebutkan di bawah ini masuk akal untuk digunakan pada file tersebut.
Secara umum, satu file Matroska dapat memiliki banyak tag dan masing -masing tag memiliki "target" yang menentukan apa bidang tag yang berlaku untuk, misalnya lagu atau seluruh album. Jadi saat menggunakan CLI atau GUI, Anda harus mengetahui tag/target untuk menambahkan bidang apa.
Matroska juga tidak menggunakan satu bidang gabungan untuk nomor trek/disk dan total seperti format lainnya. Sebaliknya ia menggunakan part
bidang terpisah dan totalparts
yang lagi -lagi perlu ditambahkan ke tag target yang diinginkan (misalnya 50/"album" untuk nomor trek dan total).
Periksa dokumentasi Matroska resmi tentang penandaan untuk detailnya. Ini juga berisi contoh untuk konten audio dan konten video.
Perhatikan bahwa editor tag tidak mendukung format XML yang disebutkan pada dokumentasi Matroska. Di GUI Anda cukup menambahkan/menghapus/mengedit tag dan targetnya melalui kontrol di bagian atas editor. Dalam pengaturan Anda juga dapat menentukan bahwa tag target tertentu harus ditambahkan secara otomatis saat memuat file. Saat menggunakan CLI, Anda dapat menentukan bahwa bidang harus ditambahkan ke tag target tertentu dengan menentukan target sebelum bidang itu. Anda juga dapat secara eksplisit menghapus tag target tertentu. Contoh penggunaan CLI beton dapat ditemukan di bawah ini.
Lihat bagian rilis di GitHub.
tageditor-qt6
jika tersedia untuk OS Anda.tageditor
dari repositori resmilibopengl0
diinstal pada debian/ubuntu)QT_QPA_PLATFORM=xcb
untuk menonaktifkan dukungan wayland asli jika tidak berfungsi pada sistem Anda)B9E36A7275FC61B464B67907E06FE8F53CDC6A4C
.B9E36A7275FC61B464B67907E06FE8F53CDC6A4C
.Editor tag memiliki GUI berbasis QT dan antarmuka baris perintah. Untuk antarmuka perpustakaan C ++ Checkout perpustakaan tagparser yang mendasarinya.
GUI harus menjelaskan diri - banyak elemen UI memiliki tooltips dengan penjelasan lebih lanjut. Alur kerja dasarnya cukup sederhana:
Anda dapat mengatur perilaku editor untuk menjaga nilai -nilai sebelumnya, jadi Anda tidak perlu memasukkan informasi seperti nama album atau artis untuk semua file dalam album lagi dan lagi.
GUI tidak mendukung pengaturan beberapa nilai dari bidang yang sama (selain sampul jenis yang berbeda). Jika file sudah berisi bidang dengan beberapa nilai, nilai tambahan dibuang. Gunakan CLI jika dukungan untuk beberapa nilai per bidang diperlukan. Namun, tidak semua format tag mendukung hal ini.
GUI tidak mendukung pemrosesan batch. Saya sarankan menggunakan CLI untuk ini.
Tangkapan tangkapan layar ini menunjukkan pencarian Eksperimental MusicBrainz/Lyricwiki.
Lihat dialog Pengaturan. Anda bisa
Pengaturan GUI tidak mempengaruhi CLI.
Ada juga alat untuk mengganti nama file menggunakan informasi tag yang disimpan dalam file. Nama baru untuk setiap file dihasilkan oleh javascript kecil yang dapat disesuaikan. Contoh skrip disediakan. Sebelum perubahan aktual dilakukan, Anda akan melihat pratinjau dengan nama file yang dihasilkan. Seperti yang ditunjukkan pada skrip contoh, juga dimungkinkan untuk memindahkan file ke direktori lain.
Editor tag juga menampilkan MusicBrainz, Cover Art Archive dan Lyricwiki Search.
tageditor <operation> [options]
Lihat operasi dan opsi yang tersedia dengan --help
. Untuk daftar semua nama bidang yang tersedia, lacak nama atribut dan pengubah, gunakan opsi CLI --print-field-names
. Tidak semua bidang didukung oleh semua format tag/wadah. Terutama, format wadah Matroska tidak menggunakan track
/ disk
untuk menyimpan nomor trek / disk dan total dalam satu bidang. Sebaliknya, part
bidang dan totalparts
perlu digunakan pada target yang diinginkan.
Perhatikan bahwa pengguna Windows harus menggunakan tageditor-cli.exe
sebagai ganti tageditor.exe
atau menggunakan mintty sebagai terminal. Periksa bagian "Masalah Spesifik Windows" untuk detailnya.
Berikut adalah beberapa contoh bash yang menggambarkan mendapatkan dan mengatur informasi tag:
Menampilkan judul, album, dan artis semua file *.m4a di direktori yang ditentukan:
tageditor get title album artist --files /some/dir/*.m4a
Menampilkan semua bidang yang didukung dari semua file *.mkv di direktori yang ditentukan:
tageditor get --files /some/dir/*.mkv
Mengekstrak sampul file (opus) yang ditentukan:
tageditor extract cover --output-file the-cover.jpg --file some-file.opus
--attachment
.Menampilkan informasi teknis tentang semua file *.m4a di direktori yang ditentukan:
tageditor info --files /some/dir/*.m4a
Mengatur judul, album, artis, sampul, dan melacak nomor semua file *.m4a di direktori yang ditentukan:
tageditor set title="Title of "{1st,2nd,3rd}" file" title="Title of "{4..16}"th file"
album="The Album" artist="The Artist"
cover'=/path/to/image' lyrics'>=/path/to/lyrics' track'+=1/16' --files /some/dir/*.m4a
>
setelah lyrics
nama bidang menyebabkan editor tag membaca nilai dari file yang ditentukan. Ini berfungsi untuk bidang lain juga dan tersirat untuk cover
.+
setelah track
nama bidang menunjukkan bahwa nilai bidang harus ditingkatkan setelah file telah diproses./path/to/image
dan lirik dari file /path/to/lyrics
.Mengatur judul file yang ditentukan dan album file yang ditentukan kedua:
tageditor set title0="Title for both files" album1="Album for 2nd file"
--files file1.ogg file2.mp3
Nomor setelah nama bidang menentukan indeks file pertama untuk menggunakan nilai. Indeks pertama adalah 0.
Menetapkan judul khusus untuk trek dengan ID 3134325680
dan menghapus tag yang menargetkan lagu/trek dan album/film/episode secara umum:
tageditor set target-level=30 target-tracks=3134325680 title="Title for track 3134325680"
--remove-target target-level=50 --remove-target target-level=30
--files file.mka
Untuk informasi lebih lanjut, periksa spesifikasi Matroska.
Menetapkan bidang khusus:
tageditor set mkv:FOO=bar1 mp4:©foo=bar2 -f file.mkv file.m4a
FOO
diatur ke bar1
di file.mkv dan bidang khusus ©foo
diatur ke bar2
di file.m4a. Jadi awalan memberi tahu editor tag bahwa ID bidang yang ditentukan adalah ID bidang asli dari format tag tertentu daripada pengidentifikasi generik. Bidang asli hanya diterapkan pada format yang sesuai tentu saja.mp4
: ID MP4/M4A gaya Itune (harus tepat 4 karakter)mkv
: ID Matroskaid3
: ID3V2 ID (harus tepat 3 atau 4 karakter tergantung pada versi tag)vorbis
: ID Komentar Vorbis, juga berfungsi untuk Opus (yang juga menggunakan komentar Vorbis)Menghapus bendera "paksa" dari semua trek, bendera trek dengan ID 2 sebagai "default" dan menetapkan bahasanya menjadi "ger":
tageditor set track-id=all forced=no track-id=2 default=yes language=ger
Berikut adalah contoh lain, menunjukkan penggunaan array dan sintaks untuk meningkatkan bidang numerik seperti nomor trek:
cd some/dir
# create an empty array
titles=()
# iterate through all music files in the directory
for file in *.m4a; do
# truncate the first 10 characters
title="${file:10}";
# append the title truncating the extension
titles+=("title=${title%.*}");
done
# now set the titles and other tag information
tageditor set "${titles[@]}" album="Some Album" track+=1/25 disk=1/1 -f *.m4a
Mengatur sampul jenis khusus dengan deskripsi:
tageditor set cover=":front-cover" cover0="/path/to/back-cover.jpg:back-cover:The description" -f foo.mp3
path:cover-type:description
. Jenis dan deskripsi penutup adalah opsional. Pembatas dapat diubah melalui --cover-type-delimiter
yang berguna jika jalur termasuk :
.0
setelah cover
ke -2 diperlukan. Kalau tidak, sampul ke -2 hanya akan diatur dalam file ke -2 (yang bahkan tidak ditentukan dalam contoh ini).… cover= cover0="/path/to/back-cover.jpg:back-cover"
.:
tidak ada), semua sampul yang ada dari jenis yang ditentukan diganti dan sampul baru akan memiliki deskripsi kosong.:
.… cover=":back-cover"
.tageditor --print-field-names
.Mengatur bidang dengan menjalankan skrip untuk menghitung perubahan secara dinamis:
tageditor set --pedantic debug --script path/to/script.js -f foo.mp3
main()
. Fungsi ini dipanggil untuk setiap file dan lulus objek yang mewakili file saat ini sebagai argumen pertama. File hanya dimodifikasi jika main()
mengembalikan nilai kebenaran atau undefined
; Kalau tidak, file dilewati sepenuhnya (dan dengan demikian tidak dimodifikasi sama sekali, sehingga nilai yang dilewati melalui --values
tidak diterapkan).testfiles/set-tags.js
di repositori ini untuk contoh yang menerapkan perbaikan dasar dan mencoba mengambil lirik dan mencakup seni ketika pengaturan sesuai diteruskan (misalnya --script-settings addCover=1 addLyrics=1
).--pedantic debug
sangat berguna. Anda juga dapat menambahkan --script-settings dryRun=1
dan memeriksa pengaturan itu dalam skrip seperti yang ditunjukkan dalam testfiles/set-tags.js
.testfiles/set-tags.js
.ArrayBuffer
. Penggunaan juga harus menggunakan ArrayBuffer
untuk mengatur nilai bidang biner seperti penutup.String
atau Number
. Anda juga harus menggunakan salah satu jenis itu untuk menetapkan nilai bidang tersebut. Representasi string dari konten yang ditugaskan kemudian akan dikonversi secara otomatis ke apa yang dibutuhkan secara internal.utility
memperlihatkan metode yang bermanfaat, misalnya untuk mencatat dan mengendalikan loop peristiwa.testfiles/http.js
di repositori ini untuk contoh menggunakan XHR dan mengendalikan loop acara.--id3v1-usage
). Jadi tag yang ada selama eksekusi skrip tidak harus mewakili tag yang sebenarnya ada dalam file pada disk (melainkan tag yang akan hadir setelah menyimpan file).--values
) maka nilai -nilai ini memiliki prioritas atas nilai -nilai yang ditetapkan oleh skrip.file.rename(newPath)
). Ini akan dilakukan segera dan juga jika main()
mengembalikan nilai palsu (jadi dimungkinkan untuk hanya mengganti nama file tanpa memodifikasinya dengan mengembalikan nilai palsu). Jika jalur yang ditentukan relatif, itu ditafsirkan relatif terhadap direktori file saat ini (dan bukan ke direktori kerja saat ini dari editor tag).utility.openFile(path)
. Hal ini memungkinkan untuk menyalin tag dari file lain, misalnya untuk memasukkan tag kembali dari file asli yang telah hilang saat mengonversi ke format yang berbeda. Contoh skrip yang disebutkan set-tags.js
juga menunjukkan ini untuk sampul dan lirik ketika pengaturan skrip menurut dilewati (misalnya --script-settings addCover=1 originalDir=… originalExt=…
). Contoh: cd '/…/music'
find 'artist/album' -iname '*.m4a' -exec tageditor set
--pedantic debug
--script /…/tageditor/testfiles/set-tags.js
--script-settings dryRun=1 originalDir='../music-lossless' originalExt=.flac addCover=1 addLyrics=1
--temp-dir /…/tmp/tageditor
--files {} +
tageditor set ... --pedantic warning -f ...
tageditor info --pedantic warning --validate -f ...
--encoding
dan dalam pengaturan GUI.Aplikasi ini tergantung pada utilitas C ++ dan tagparser dan dibangun dengan cara yang sama seperti perpustakaan ini. Untuk instruksi dasar checkout file readme dari utilitas C ++. Ketika QT GUI diaktifkan, QT dan Qtutilitas juga diperlukan.
Untuk menghindari membangun utilitas c ++/tagparser/qtutilities secara terpisah, ikuti instruksi di bawah "membangun ini lurus". Ada juga dokumentasi tentang berbagai variabel build yang dapat diteruskan ke cmake untuk mempengaruhi build.
QT GUI diaktifkan secara default. Modul QT berikut diperlukan (hanya versi QT 5 dan QT 6 terbaru yang diuji): Core Concurrent GUI Widgets Widgets/Script WebengineWidgets/WebKitWidgets
Perhatikan bahwa versi QT lama tidak memiliki dukungan untuk fitur JavaScript modern. Untuk menggunakan alat ganti nama berbasis JavaScript, direkomendasikan untuk menggunakan setidaknya QT 5.12.
Untuk menentukan versi QT utama yang akan digunakan, atur QT_PACKAGE_PREFIX
(misalnya add -DQT_PACKAGE_PREFIX:STRING=Qt6
ke argumen cmake).
-DWEBVIEW_PROVIDER:STRING=webkit/webengine/none
ke Argumen CMake untuk menggunakan WebKit QT (berfungsi dengan versi 'dihidupkan kembali' juga), QT WebEngine atau tidak ada tampilan web sama sekali. Jika tidak ada tampilan web yang digunakan, informasi file hanya dapat ditampilkan menggunakan tampilan pohon biasa. Kalau tidak, pengguna dapat memilih antara halaman web dan tampilan pohon.-DJS_PROVIDER:STRING=script/qml/none
ke argumen cmake untuk menggunakan skrip qt, qt qml atau tidak ada mesin javascript sama sekali. Jika tidak ada mesin JavaScript yang digunakan, utilitas penggantian nama dinonaktifkan.Dimungkinkan untuk membangun tanpa GUI jika saja CLI diperlukan. Dalam hal ini tidak ada dependensi QT (termasuk qtutilities) yang diperlukan.
Untuk membangun tanpa GUI, tambahkan parameter berikut ke panggilan cmake:
-DWIDGETS_GUI=OFF -DQUICK_GUI=OFF
Sebagai demo kecil untuk Reflective RapidJson, editor tag menampilkan ekspor JSON opsional. Untuk mengaktifkannya, tambahkan -DENABLE_JSON_EXPORT=ON
ke argumen cmake.
Saat diaktifkan, dependensi tambahan berikut diperlukan (hanya pada waktu build): Rapidjson, Reflective-Rapidjson dan LLVM/Clang
cd "$SOURCES"
git config core.symlinks true # only required on Windows
git clone https://github.com/Martchus/cpp-utilities.git c++utilities
git clone https://github.com/Martchus/tagparser.git
git clone https://github.com/Martchus/qtutilities.git # only required for Qt GUI
git clone https://github.com/Martchus/reflective-rapidjson.git # only required for JSON export
git clone https://github.com/Martchus/tageditor.git
git clone https://github.com/Martchus/subdirs.git
git config core.symlinks=true
hanya diperlukan di bawah windows untuk menangani symlink dengan benar. Ini membutuhkan versi Git terbaru dan sistem file yang mendukung Symlinks (NTFS Works). Selain itu, Anda perlu mengaktifkan mode pengembang Windows. Jika Anda mengalami kesalahan "Tidak Ditemukan" pada pembuatan symlink, gunakan git reset --hard
dalam repositori untuk memperbaikinya. cd "$BUILD_DIR"
cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Release
-DLANGUAGE_FILE_ISO_639_2="/usr/share/iso-codes/json/iso_639-2.json"
-DCMAKE_INSTALL_PREFIX="/install/prefix"
"$SOURCES/subdirs/tageditor"
/install/prefix
dengan direktori tempat Anda ingin menginstal./usr/…/iso_639-2.json
dengan jalur untuk instalasi iso-codes Anda. cd "$BUILD_DIR"
ninja install
DESTDIR
ke lokasi yang dapat ditulis (misalnya DESTDIR="temporary/install/dir" ninja install
) dan pindahkan file dari sana ke lokasi yang diinginkan sesudahnya. Peringatan berikut dapat dikerjakan dengan menggunakan cli-wrapper alih-alih yang dapat dieksekusi utama. Ini adalah file yang diakhiri dengan -cli.exe
. Atau Anda dapat menggunakan Mintty (misalnya melalui MSYS2) yang juga tidak terpengaruh oleh masalah -masalah tersebut:
set ENABLE_CP_UTF8=0
jika ini tidak diinginkan.set ENABLE_CONSOLE=0
untuk menonaktifkan perilaku itu.Mode gelap harus bekerja di luar kotak di bawah Windows 11 dan sebaliknya dapat diaktifkan dengan memilih gaya fusi.
Editor Tag mendukung PMV2 di luar kotak pada QT 6. Anda dapat mengubah pengaturan sesuai dengan dokumentasi QT.
Hak Cipta © 2015-2024 Marius Kittler
Semua kode dilisensikan di bawah GPL-2-atau-Later.