Це команда mp3info2p, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
mp3info2 - отримати/встановити теги MP3; використовує тег MP3:: для отримання значень за замовчуванням.
СИНТАКСИС
# Роздрукуйте інформацію в тегах і автоматично виведену інформацію
інформація про mp3 *.mp2
# Крім того, встановіть для поля рік 1981
mp3info2 -y 1981 *.mp3
# Те саме без роздруківки інформації, рекурсивно в поточному каталозі
mp3info2 -R -p "" -y 1981 .
# Не виводьте жодного поля, друкуйте (нормалізовану) інформацію лише з тегів
mp3info2 -C autoinfo=ID3v2,ID3v1 *.mp3
# Як і вище, але без нормалізації/автозаповнення, необроблена інформація в тегах
mp3info2 -N *.mp3
# Як і вище, але тільки з тегом ID2v1
mp3info2 -NC autoinfo=ID3v1 *.mp3
# Отримати виконавця з CDDB_File, автоматично вивести іншу інформацію, записати її в теги
mp3info2 -C виконавець=CDDB_файл -u *.mp3
# Для заголовка віддавайте перевагу інформації з файлу .inf; автовиведення відпочинок, оновлення
mp3info2 -C title=Inf,ID3v2,ID3v1,ім'я файлу -u *.mp3
# Те саме, і отримати виконавця з файлу CDDB
mp3info2 -C title=Inf,ID3v2,ID3v1,ім'я файлу -C виконавець=CDDB_File -u *.mp3
# Напишіть сценарій для перетворення .wav в .mp3, автоматично виводячи теги
mp3info2 -p "lame -h --vbr-new --tt '%t' --tn %n --ta '%a' --tc '%c' --tl '%l' --ty '% y' '%f'\n" *.wav >xxx.sh
ОПИС
Програма друкує повідомлення з підсумковою інформацією про тег (отриману через модуль MP3::Tag) для
вказані файли.
Він також може оновлювати інформацію в тегах ID3. Це відбувається в трьох різних випадках.
· Якщо інформація, подана в параметрах командного рядка "talygcn", відрізняється від
вміст відповідних тегів ID3 (або немає відповідних тегів ID3).
· Якщо були задані параметри «-d» або «-F».
· якщо "MP3::Tag" отримує інформацію не з тегів MP3, а "-u" змушує
оновлення тегів ID3.
(Усі ці способи вимкнені опцією "-D".) Тег ID3v2 записується, якщо потрібно, або якщо "-2"
надається варіант. (Автоматичне заповнення виведених полів (через метод
id3v2_frames_autofill()) виконується, якщо не вказано параметри "-d" або "-N".)
Параметр "-u" записує ("u"pdates) отриману інформацію в теги MP3 ID3. Це
Параметр передбачається, якщо є параметри командного рядка, які явно встановлюють елементи тегу
("-a", "-t" тощо, і "-F", "-d"). (Ефект від цієї опції може бути відмінений шляхом надання
Параметр "-D".) Якщо також вказано параметр "-2", змушує записувати тег ID3v2, навіть якщо інформація
відповідає тегу ID3v1 (окрім того, ця опція дозволяє автоматично оновлювати "особисте ім'я"
поля та відповідні назви відповідно до значень "translate_person",
"person_frames" тощо налаштування конфігурації; див. «Нормалізація полів»). Цей варіант
ігнорується, якщо не виявлено жодних змін до тегів; однак, можна примусово оновити, повторивши
цей параметр (корисний, якщо ви очікуєте зміни «формату» тегу, на відміну від його
«вміст»).
Параметр "-p" друкує повідомлення, використовуючи наступний аргумент як формат (за замовчуванням "\\", "\t",
«\n» замінюються на зворотну косу риску, табуляцію та новий рядок; регулюється значенням опції "-E");
див. "interpolate" в тегу MP3:: для отримання детальної інформації про формат sprintf ()- як втечі. Якщо ні
задано параметр "-p", буде випущено повідомлення у форматі за замовчуванням. Значення параметра "-e"
– кодування, що використовується для виведення; якщо значення є числом, специфічне для системи кодування
вгадується (і використовується для виведення, якщо встановлено біт 0x1); якщо встановлено біт 0x2, то командний рядок
припускається, що параметри знаходяться у вгаданому кодуванні; якщо встановлено біт 0x4, то командний рядок
Передбачається, що аргументи містяться в кодуванні, що вгадується. Використовуйте значення "binary", щоб зробити двійковий
вихід.
З опцією "-D" (сухий запуск) оновлення не виконується, незалежно від інших параметрів.
За допомогою цього параметра аналіз тегів не виконується, якщо це не потрібно.
Використовуйте параметри
talygcn
щоб перезаписати отриману інформацію (назва альбому виконавця рік жанр коментар коментар трек-номер).
за допомогою евристики "MP3::Tag" (перемикач "-u" мається на увазі, якщо будь-який з цих аргументів відрізняється
від того, що було б знайдено інакше; використовуйте перемикач "-D", щоб вимкнути автоматичне оновлення). За замовчуванням,
значення цих параметрів не «%»-інтерполюються; це можна змінити опцією "-E".
Параметр "-d" має містити розділений комами список кадрів ID3v2, які потрібно видалити. А
специфікація кадру така ж, як і для інтерполяції кадру "%{...}".
команда, наприклад, "TIT3", "COMM03", "COMM(fra)[коротка назва]"; різниця з модифікацією-
доступ це ALL (а не перший of) відповідні кадри видаляються. (Варіант -d може бути
повторюється.)
Наприклад, "-d APIC" видалить усі рамки зображень. Крім того, якщо список містить
"ID3v1" або "ID3v2", цілі теги будуть видалені.
Так само, опція "-F" дозволяє встановити довільні кадри "ID3v2": якщо потрібно встановити
один кадр, використовуйте директиву "FRAME_spec=VALUE":
-F TIT2=Новий_заголовок
Знову при зміні, ALL відповідні кадри видаляються першими, тому будьте обережні
-F COMM=Мій коментар
Опцію "-F" можна повторити, щоб встановити більше одного кадру. Якщо змінна конфігурації
"empty-F-deletes" має значення TRUE (за замовчуванням), порожні аргументи видалить кадр.
Можна замінити "FRAME_spec=VALUE" на "FRAME_spec < FILE"; у цьому випадку значення, яке потрібно встановити
зчитується з файлу з ім'ям Фото; якщо фрейм лише текстовий (що означає: максимум
"[encoded] Text URL Language Description" присутні поля), файл читається у вигляді тексту
режим (і з очищеними початковими/кінцевими пробілами), інакше він читається у двійковому вигляді
режим. (Пробіли потрібні біля знаків «<».) Якщо «<» замінено на «?<»,
значення встановлюється лише в тому випадку, якщо кадр ще відсутній, і якщо файл існує; якщо замінено на ">",
значення (якщо є) записується Фото (створення проміжних каталогів є
керується параметром конфігурації "frames_write_creates_dirs", за замовчуванням є FALSE).
Крім того, "FRAME_spec" може бути одним із "ID3v1", "ID3v2" або "TAGS"; в даному випадку ціла
теги записуються або читаються. Наприклад, для "TAGS < FILE", "тип альбому виконавця, рік жанру
доріжка коментарів" розраховується з Фото, які можуть бути необробленими тегами, створеними за допомогою ">",
або дійсний файл MP3; якщо Image::ExifTool присутній, дані можуть бути прочитані з довільного
мультимедійний файл. (Також для "ID3v1 < FILE" та сама інформація витягується з "ID3v1"
тільки тег.) Після цього, у випадку "ID3v2" або "TAGS", кадри "ID3v2" копіюються з
Тег "ID3v2" один за одним. (З відповідними змінами для "?<".)
За замовчуванням "ЗНАЧЕННЯ" для "-F" є "%"-інтерполованим; це можна змінити за допомогою параметра "-E".
Для зручності користувача зручніші для людини форми "композитор, text_by, оркестр, диригент,
disk_n" можна використовувати замість "TCOM, TEXT, TPE2, TPE3, TPOS".
Параметр "-P RECIPE" є дуже потужним узагальненням того, що можна зробити за допомогою параметрів
"-F", "-d" і "-t -a -l -y -g -c -n". Може повторюватися; значення повинні містити
розібрати рецепти. Вони стають елементом конфігурації "parse_data" для "MP3::Tag"; зрештою
ця інформація обробляється модулем MP3::Tag::ParseData (якщо останній присутній у
ланцюжок евристики; див. опцію "-C"). "РЕЦЕПТ" розділений на "$flags, $string,
@patterns" на першому символі, що не є буквено-цифровим; перший з @patterns, який відповідає
$string буде виконано (для побічних ефектів). (Дивіться приклади: "ПРИКЛАДИ: аналізувати
правила".)
Якщо вказано параметр "-G", імена файлів у командному рядку розглядаються як glob
візерунки. Це може бути корисно, якщо максимальна довжина командного рядка занадто мала. З
Аргументи параметра "-R" можуть бути каталогами, в яких рекурсивно шукається аудіо
(за замовчуванням * .mp3) файли для обробки; використовуйте параметр "-r", щоб скинути регулярний вираз до вигляду
for (за замовчуванням є "(?i:\.mp3$)").
Параметр "-E" керує розширенням escape-символів. Він повинен містити літери
параметри командного рядка, де інтерполюються "\\, \n, \t"; можна додавати літери
параметрів "talygcn F", які потребують інтерполяції "%" після роздільника "/i:" (для
"-F", інтерполюються лише значення). Значенням за замовчуванням є "p/i:Fp": тільки "-p".
"\"-інтерполюється, і лише "-F" і "-p" підлягають інтерполяції "%". Якщо всі один
хоче це додавати до значень за замовчуванням, перед значенням "-E" (містить додані параметри) на
«+». (Деякі частини значення параметра "-P" інтерполюються, але це повинно бути
керується прапорами, а не «-E»; робити $NOT помістіть "P" в "%"-інтерполовану частину "-E".)
Якщо вказано параметр «-@», усі символи «@» в параметрах замінюються на «%». Це
може бути зручно, якщо оболонка спеціально обробляє "%" (наприклад, оболонки DOSISH).
Якщо вказано опцію "-I", не потрібно гадати художник поле виконується при наборі.
Параметр "-C CONFIG_OPT=VALUE1,VALUE2..." встановлює однакові дані конфігурації "MP3::Tag"
як "MP3::Tag-"config()> підійде (нагадаємо, що значення є масивом; окремі елементи
через кому, якщо їх більше однієї). Опцію можна повторити, щоб встановити більше одного значення. Примітка
що, оскільки "ParseData" використовується для обробки рецептів аналізу "-P", його краще зберегти
у конфігурації «автоінформація» (і пов'язані поля «автор» тощо) за наявності «-P».
Якщо вказано параметр «-x», роздруковується технічна інформація про аудіофайл
(Рівень MP3, тривалість, кількість кадрів, заповнення, авторські права та список кадрів ID3v2
імена у форматі, придатному для екранування "%{...}"). Якщо "-x" повторюється, вміст кадрів є
також роздрукований (може виводити недруковані символи, якщо це повторюється більше двох разів).
Якщо вказано опцію «-N», усі «розумні» вимкнені — нормалізація полів відсутня
відбувається, і (за замовчуванням) не намагаються вивести значення полів з не-ID3
інформація виконана. Ця опція (наразі) еквівалентна наявності "-C
autoinfo=ParseData,ID3v2,ID3v1" як перша директива, щоб не мати
Нормалізація::Текст::Music_Fields.pm присутні на шляху @INC і не викликає автозаповнення() метод.
Нормалізація of поля
(Завантаження модуля нормалізації та всі наступні операції можуть бути вимкнені
параметр "-N", або встановивши для змінної середовища "MP3TAG_NORMALIZE_FIELDS" значення FALSE.
Якщо не заборонено, модуль намагається завантажити каталог if ~/.music_fields is
присутній, або для параметра "MP3TAG_NORMALIZE_FIELDS" встановлено значення TRUE.)
Якщо завантаження модуля "Normalize::Text::Music_Fields" пройшло успішно, наступне
застосовується:
Якщо значення "MP3TAG_NORMALIZE_FIELDS" визначено, а не 1, це значення розбивається на
каталогів як PATH, а шлях завантаження "Normalize::Text::Music_Fields" має бути таким
список каталогів. Потім передається тег MP3:: (через відповідну конфігурацію
settings), щоб використовувати методи "normalize_artist" (і т. д.), визначені цим модулем. Ці методи
може нормалізувати певні дані тегів. Поточна версія визначає методи для "нормалізації"
особистих імен та титулів (на основі композитора). Ця нормалізація зумовлена
через таблиці конфігурації, які можна редагувати.
На додаток до автоматичної нормалізації даних тегів MP3, можна використовувати «підроблені файли MP3».
вручну отримати доступ до деяких функцій цього модуля. Для цього використовуйте порожнє ім’я файлу та «-D»
варіант. наприклад,
mp3info2 -D -a beethoven -p "%a\n" ""
mp3info2 -D -a beethoven -p "%{shP[%a]}\n" ""
mp3info2 -D -a beethoven -t "соната №28" -p "%t\n" ""
mp3info2 -D -a beethoven -t "allegretto, Bes" -@p "@t\n" ""
mp3info2 -D -a beethoven -t "op93" -@p "@t\n" ""
надрукує нормалізоване ім'я особи для "beethoven", відповідне нормалізоване скорочення
ім’я особи та нормована назва для «сонати №28» композитора «Бетховена». наприклад,
з наданими таблицями нормалізації, він буде надрукований
Людвіг ван Бетховен (1770-1827)
Л. ван Бетховен
Соната для фортепіано № 28 ля мажор; Op. 101 (1816)
Allegretto для фортепіанного тріо си-бемоль мажор; WoO 39 (1812)
Симфонія № 8 фа мажор; Op. 93 (зр. 1812, ф.п. Відень, 1814-02-27, конд. Бетховен; опуб. 1816)
Команда порядок of операція
На даний момент операції проводяться в наступному порядку
· Видалення ID3v1 або ID3v2 в цілому за допомогою параметра "-d";
· Встановлюються рецепти опції «-P» (що запускаються інтерполяцією);
· Налаштування за допомогою параметрів "-a/-t/-l/-y/-g/-c/-n";
· Налаштування за допомогою опції "-F";
· Видалення окремих кадрів за допомогою опції «-d»;
· автозаповнення кадрів ID3v2 (id);
· Видавати інформацію на основі параметрів "-p" і "-x";
· Ініціювати рецепти «-P» (якщо вони не викликані інтерполяцією);
· За потреби оновіть теги.
Використання стратегія: ескалація of складність
Метою цього скрипту є зробити роботу з тегами ID3 максимально простою as це можливо.
На одному кінці шкали можна виконувати довільно складні маніпуляції з використанням тегів
Модуль Perl "MP3::Tag".
З іншого боку, набагато зручніше обробляти найпростіші маніпуляції з тегами
використовуючи параметри цього сценарію "-t -a -l -y -g -c -n" і "-p -F -d". Трохи більше
складних завдань, можливо, доведеться використовувати більш складний метод розбору Правила, за умови
до цього сценарію за допомогою параметра "-P"; правила сильно залежать від інтерполяціяСм.
"interpolate" в MP3::Tag, "interpolate_with_flags" в MP3::Tag.
Щоб спростити перехід від «найпростіших маніпуляцій» до «більш складних», ми
надати "правило розбору" синоніми до найпростіших варіантів. Отже, якщо почати з "-t -a -l -y
-g -c -n" і "-p -F -d", які "майже працюють" для вас, у вас є хороші шанси бути
Ви зможете повністю досягти своєї мети, змінивши синоніми, описані нижче.
(Нижче ми припускаємо, що для параметра "-E" встановлено значення за замовчуванням, отже, для параметра "-F -p".
"%"-інтерполюється, інші параметри ні. Зауважте також, що якщо кодування вашого TTY є
розпізнаний Perl, настійно рекомендується встановити параметр "-e 3"; на снарядах DOSISH,
краще використовувати "-@" і замінити "%" на "@" нижче.)
"-t VALUE"
-P "mz/VALUE/%t"
"-a -l -y -g -c -n"
Так само.
"-F" "TIT2=ЗНАЧЕННЯ"
-P "mzi/VALUE/%{TIT2}"
"-F" "APIC[myDescr] < FILE"
-F "APIC[myDescr]=%{I(fimbB)FILE}"
or
-P "mzi/%{I(fimbB)FILE}/%{APIC[myDescr]}"
(вилучіть «bB» для текстових кадрів).
"-F" "APIC[myDescr] > FILE"
-P "bOi,%{APIC[myDescr]},FILE"
(вилучити «b» для текстових фреймів); або використовуйте "-e binary -p "%{APIC[myDescr]}""
з переспрямуванням, див. «ПРИКЛАДИ: правила аналізу».
"-d" TIT2
-P "m//%{TIT2}"
"-F" "TIT2 ?< ФАЙЛ"
Дуже складно. Це не встановить розрізнення порожнього файлу та неіснуючого:
-P "mzi/%{TIT2:1}0%{I(fFim)FILE}/10/10%{TIT2}/0%{U1}"
(додайте «bB» до «fFim» для кадрів, які не містять лише текст); останню частину можна пропустити
якщо опустити прапорець "m" - він присутній лише для виявлення помилок.
Щоб отримати докладнішу інформацію про "правила аналізу", див. "ПРИКЛАДИ: правила аналізу" та "ОПИС" у
MP3::Tag::ParseData.
ПРИКЛАДИ: розбору Правила
Лише опція "-P" досить складна, щоб заслуговувати коментарів... Детальніше на
розбору Правила, див. «ОПИС» у MP3::Tag::ParseData; для отримання повної інформації про інтерполяцію,
див. "interpolate" в тегу MP3::, "interpolate_with_flags" в тегу MP3::.
Для (дурного) прикладу можна замінити «-a Homer -t Iliad» на
-P mz=Гомер=%a -P mz=Іліада=%t
Менш безглуздим прикладом є використання певного способу розбору імені файлу через
-P "im=%{d0}/%f=%a/%n %t.%e"
Він розбитий
шаблон рядка прапорів1
"im" "%{d0}/%f" "%a/%n %t.%e"
Літери прапора означають інтерполювати, повинні відповідати. Це інтерполює рядок
"%{d0}/%f" і аналізує результат (це ім'я файлу з одним рівнем каталогу
частина збережена) з використанням заданого шаблону; таким чином ім'я каталогу стає виконавцем, the
провідна числова частина - номер треку, а решта ім'я файлу (без розширення)
- заголовок. Зауважте, що, оскільки допускається кілька шаблонів, можна також дозволити
кілька форматів імен, напр
-P "im=%{d0}/%f=%a/%n %t.%e=%a/%t (%y).%e"
дозволяє також використовувати базову назву файлу у формі "TITLE (YEAR)". Альтернативний спосіб
отримати ті самі результати
-P "im=%{d0}=%a" -P "im=%f=%n %t.%e=%t (%y).%e"
що відповідає двом рецептам:
прапори рядок шаблон1 шаблон2
"im" "%{d0}" "%a"
"im" "%f" "%n %t.%e" "%t (%y).%e"
Звичайно, можна було б скористатися
"im" "%B" "%n %t" "%t (%y)"
як заміна другому.
Зауважте, що це може бути більш читабельним для налаштування художник до "%{d0}" явним призначенням, з
аргументи, подібні до
-E "p/i:Fpa" -a "%{d0}"
(це значення "-E" вимагає "%"-інтерполяцію параметра "-a" на додаток до
за замовчуванням "\"-інтерполяція "-p", і "%"-інтерполяція "-F" і "-p"; можна
скористайтеся ярликом "-E +/i:a").
Щоб навести більше прикладів,
-P "if=%D/.comment=%c"
прочитає коментар із файлу .коментар в каталозі аудіофайлу;
-P "ifn=%D/.comment=%c"
має подібний ефект, якщо файл .коментар має коментарі в один рядок, по одному на трек (це припускає
номер треку можна знайти іншим способом).
Припустимо, що файл Частини у каталозі файлів MP3 має такий формат: він має a
преамбула, потім містить короткий абзац інформації для кожного аудіофайлу, перед яким йде композиція
число і точка:
...
12. Резитатів.
(Пісарро, Рокко)
13. Duett: jetzt, Alter, jetzt hat es Eile, (Пісарро, Рокко)
...
Наступна команда поміщає цю інформацію в заголовок тегу ID3 (за умови аудіо
назви файлів достатньо інформативні, щоб MP3::Tag міг визначити номер треку):
mp3info2 -u -C parse_split='\n(?=\d+\.)' -P 'fl;Частини;%=n. %t'
Якщо цей абзац інформації має форму «ЗАГОЛОВКА (КОМЕНТАР)» із частиною «КОМЕНТАР».
будучи необов’язковим, то використовуйте
mp3info2 -u -C parse_split='\n(?=\d+\.)' -P 'fl;Частини;%=n. %t (%c);%=n. %t'
Якщо ви хочете видалити крапку або кому в кінці заголовка, використовуйте
mp3info2 -u -C parse_split='\n(?=\d+\.)' \
-P 'fl;Частини;%=n. %t (%c);%=n. %t' -P 'iR;%t;%t[.,]$'
Другий шаблон цього виклику перетворюється на
['iR', '%t' => '%t[.,]$']
який по суті застосовує заміну "s/(.*)[.,]$/$1/s" до назви.
Тепер припустимо, що на додаток до Частини, у нас є текстовий файл коментар з додатковою інформацією;
ми хочемо помістити цю інформацію в поле для коментарів після що витягується з "TITLE
(КОМЕНТАР)"; розділіть ці дві частини коментаря порожнім рядком:
mp3info2 -EC -C 'parse_split=\n(?=\d+\.)' -C 'parse_join=\n\n' \
-P 'f;Коментар;%c' -P 'fl;Частини;%=n. %t' \
-P 'i;%t///%c;%t (%c)///%c' -P 'iR;%t;%t[.,]$'
Це передбачає, що заголовок і коментар не містять '///' як підрядок.
Пояснення: перший шаблон "-P",
['f', 'Коментар' => '%c'],
читає коментар із файлу «Коментар» у поле коментаря; секунда,
['fl', 'Parts' => '%=n. %t'],
читає фрагмент «Частини» в поле заголовка. Третій
['i', '%t///%c' => '%t (%c)///%c']
змінює порядок заголовка та коментаря за умови заголовок має вигляд "ЗАГОЛОВКА (КОМЕНТАР)".
(Параметр конфігурації "parse_join" подбає про розділення двох шматків коментарів
що відповідає двом входженням %c у правій частині.)
Нарешті, четвертий шаблон такий самий, як і в попередньому прикладі; він видаляє помилкові
розділові знаки в кінці заголовка.
Інші приклади: видалення струни "зі скрипкою" з початку поля коментаря (видалення
прокоментуйте взагалі, якщо нічого не залишилося):
mp3info2 -u -P 'iz;%c;зі скрипкою%c' *.mp3
встановлення поля виконавця, не дозволяючи функції автоматичного оновлення виводити інші поля
інші джерела;
mp3info2 -C autoinfo=ParseData -a "AU Thor" *.mp3
встановлення поля коментаря, якщо воно вже не є:
mp3info2 -u -P 'i;%c///з фортепіано;///%c' *.mp3
Останній приклад показує, як насправді писати "програми" мовою "-P"
варіант: приклад дає умовне присвоєння. З користувацькими змінними (як у "%{U8}")
для тимчасових, а також можливість використовувати регулярні вирази, можна надати довільні
програмна логіка. Звичайно, на певному рівні складності краще переключитися
прямий інтерфейс із модулем Perl "MP3::Tag" (використовуйте код цього сценарію Perl як
приклад!).
Ось типове завдання налаштування "розширених" кадрів id3v2: композитор ("TCOM"), оркестр
("TPE2"), провідник ("TPE3"). Ми припускаємо дерево каталогів, яке містить файли MP3 з тегами
з такими умовностями: «художник» насправді є композитором; "коментар" є одним із
дві форми:
Виконавці; оркестр; Диригент
оркестр; Диригент
Щоб встановити конкретні MP3-кадри за допомогою правил "-P", використовуйте
mp3info2 -@P "mi/@a/@{TCOM}" \
-P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
З параметрами "-F" це можна спростити як
mp3info2 -@F "TCOM=@a" -P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
or
mp3info2 -@F "composer=@a" -P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
Щоб скопіювати ID3-теги файлів MP3 у поточному каталозі до файлів у каталозі /tmp/mp3 з
розширення .tag (і роздрукувати «звіт про хід виконання»), використати
mp3info2 -p "@N@E\n" -@P "bODi,@{ID3v2}@{ID3v1},/tmp/mp3/@N.tag" -DNR .
Оскільки ми не використовували прапор "z", файли MP3 без тегів пропускаються.
Тепер припустимо, що існують дві паралельні ієрархії файлів аудіофайлів і текстів:
аудіофайли audio/dir_name/audio_name.mp3 з відповідним файлом пісень
text/dir_name/audio_name.mp3. Щоб прикріпити текст до файлів MP3 (у кадрі "COMM" за допомогою
опис "лірика" мовою "eng" - це is a нестандартний Місцезнаходження, побачити нижче!),
call
mp3info2 -@P "fim;../text/@{d0}/@B.txt;@{COMM(eng)[лірика]}" -Ru .
всередині каталогу аудіо. (Змініть «fim» на «Ffim», щоб ігнорувати аудіофайли, для яких
відповідний текстовий файл не існує.) (Звичайно, щоб слідувати специфікаціям,
слід було використати поле "%{USLT(eng)[]}" замість "%{COMM(eng)[lyrics]}"; подивитися
нижче для варіацій).
Завершіть на дуже простому прикладі: все, що за шаблоном
-P 'i;%t;%t'
робить – це видалення кінцевих та початкових пробілів із заголовка (що виводиться іншими
засоби).
більше Приклади
З опцією "-F" можна встановити кадр "USLT" як
mp3info2 -@F "USLT(eng)[] < ../text/@{d0}/@B.txt" -Ru .
Роздрукуйте таку рамку (будь-якою мовою) с
mp3info2 -@p "@{USLT[]}\n" файл.mp3
Аналогічно, щоб роздрукувати кадр APIC з порожнім описом, використовуйте
mp3info2 -e binary -@p "@{APIC[]}" file.mp3 > вихідний_файл_зображення
або (з описом "обкладинка")
mp3info2 -@P "bOi,@{APIC[cover]},output_picture_file.jpg" loading="lazy" audio_07.mp3
Щоб встановити такий кадр з файлу xxx.gif (за замовчуванням "Тип зображення", "Обкладинка (передня)",
і порожній опис), виконайте одну з
mp3info2 -F "APIC < xxx.gif" файл.mp3
mp3info2 -@F "APIC[]=@{I(fimbB)xxx.gif}" file.mp3
Різниця між "APIC" і "APIC[]" полягає в тому, що перший видаляє всі кадри "APIC" спочатку,
а другий видаляє лише всі кадри "APIC" з порожнім описом - але довільним зображенням
типу. Тому може бути більш прийнятним використовувати повну специфікацію, як у "APIC(Cover
(спереду))[]".
Щоб видалити кадри "APIC" з пустими описами, довільні "Тип зображення" (і "MIME
типи, які можуть бути правильно розраховані за mp3info2, наприклад, "TIFF/JPEG/GIF/PNG"), використовуйте
mp3info2 -d "APIC[]" файл.mp3
(зауважте, що це не звільнить дисковий простір, якщо конфігурація не змусить «згорнути».
змінні). Щоб зробити те ж саме з типом зображення «Провідник», виконайте
mp3info2 -d "APIC(Conductor)[]" файл.mp3
Щоб просканувати підкаталоги та додати файл cover.jpg з каталогу файлу як a
"за замовчуванням" кадр "APIC", але лише якщо кадру "APIC" немає, а файл існує, зробіть
mp3info2 -@F "APIC ?< @D/cover.jpg" loading="lazy" -R .
Це видаляє порожні кадри для дати, "TCOP, TENC, WXXX[], COMM(eng)[]", і видаляє
провідний 0 від номера треку з файлу MP3 у поточному каталозі:
mp3info2 -@ -E +/i:y -F "TCOP=@{TCOP}" -F "TENC=@{TENC}"
-F "WXXX[]=@{WXXX[]}" -F "COMM(eng)[]=@{COMM(eng)[]}"
-y "@y" -P "mi/@n/0@n/@n" *.mp3
прикладів on справу з зламаний кодування
Однією з основних недоліків специфікації ID3 було те, що вона вимагала, щоб дані були
надано в кодуванні "latin-1". Оскільки більшість мов світу не можна виразити
"latin-1", це призводить до того, що (більшість?) тегів ID3 не відповідають стандарту. Новіший
версії специфікацій виправили цей недолік, але пошкодження вже було завдано.
На щастя, цей скрипт може використовувати можливості "MP3::Tag" для перетворення з невідповідного
зміст до відповідного.
Наступний приклад перетворює теги ID3v2, які були записані (невідповідні стандарту)
кодування "cp1251" має бути у стандартному кодуванні. Для цілей цього прикладу,
припустимо, що теги ID3v1 мають однакове кодування (і що потрібно залишити їх у
кодування «cp1251»); файли для обробки знаходяться в поточному каталозі та
(рекурсивно) у своїх підкаталогах (синтаксис «встановити» для оболонок DOSISH):
встановити MP3TAG_DECODE_V1_DEFAULT=cp1251
встановити MP3TAG_DECODE_V2_DEFAULT=cp1251
mp3info2 -C id3v2_fix_encoding_on_write=1 -u2R .
Для отримання додаткової інформації див. «СЕРЕДОВИЩЕ» в тегу MP3::, «config» у тегу MP3:: та
"НАСТРОЮВАННЯ" у тег MP3::.
НЕСУМІСНІСТЬ з інформація про mp3
Цей інструмент вільно змодельований за програмою інформація про mp3; він «в основному» зворотно сумісний
(особливо в «наївному» режимі через «-N») і дозволяє дуже значний наднабір
функціональність. Відомі зворотні несумісності:
-G -h -r -d -x
Відсутня функція:
-f -F -i
Несумісний "%"-втечі:
%e %E - зовсім інша семантика
%v - не має кінцевих нулів
%q - має дробову частину
%r - це число, а не слово "Змінна" для VBR
%u - на один менше (тільки за наявності кадру дескриптора?)
Відсутній "%"-втечі:
%b %G
Екранування зворотної косої риски: підтримуються лише "\\", "\n", "\t".
"-x" друкує дані в іншому форматі, присутні не всі поля, а назви тегів ID3v2
виводяться.
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
З "-e" 1, 2 або 3, цей сценарій може звертатися до змінних середовища "LC_CTYPE, LC_ALL,
LANG", щоб визначити поточне кодування. Жодні інші змінні середовища не зчитуються безпосередньо
цей сценарій.
Однак зауважте, що модуль MP3::Tag має багатий набір параметрів за замовчуванням для налаштувань кодування
встановлюється змінними середовища; див. «СЕРЕДОВИЩЕ» у тегу MP3::. Отже, ці змінні
впливати (опосередковано) на роботу цього сценарію.
ЗАБАВЛЕННЯ ІНТЕРФЕЙС
Якщо ви не розумієте, про що йдеться, сміливо проігноруйте це оголошення:
Старий спосіб попередньої версії = 1.05 (потроюванням роздільника, без повторення
options) для надання кількох команд параметрам "-F" і <-P> все ще підтримується, але є
рішуче не рекомендується. (Це не конфліктує з поточним інтерфейсом.)
Використовуйте mp3info2p онлайн за допомогою служб onworks.net
