Встановити тег заголовка ID3, який дорівнює назві файлу MP3


14

Хтось отримав скрипт bash, який пройде через медіатеку і встановить тег заголовка id3 кожного файлу MP3 рівним імені файлу?

Я також відкритий до інших автоматизованих методів. Це може бути програма GUI або все, що виконає роботу автоматично.

Тут зазначається метод EasyTag: Як перейменувати тег масового заголовка у файли mp3 ID3 - На жаль, я не розумію кроків.


Ви можете відповісти на власне запитання. Перелічіть кроки, які ви знайшли, ubuntuforums.orgі наведіть джерело. :) Це допоможе майбутнім відвідувачам Superuser, якщо ubuntuforums.orgпосилання стане недоступним.
iglvzx

3
Ось кілька порад: 1) Не захаращуйте своє питання "редагувати 1", "редагувати 2" тощо. Вирішуйте проблеми, використовуючи коментарі. 2) Якщо ви знайшли рішення, опублікуйте його як відповідь, як ніби ви намагаєтесь відповісти на чуже питання. Не ставте відповіді на запитання . Це не де люди шукають його :) Крім того, використовуйте блок- котирування для всього, що ви цитуєте звідкись іншого (див. Довідку щодо форматування).
slhck

Я створив сценарій, щоб правильно позначити MP3-файли у форматі "Виконавець - Track.mp3", а потім перейменував файл на "Track.mp3": gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0, використовуючиeyed3
Zach

Відповіді:


17

EasyTAG - це справді чудовий інструмент для вирішення цієї проблеми. Я знайшов мою відповідь тут . Щодо того, як ним користуватися, найкращим посиланням виявляється власна документація EasyTAG .

Відкрийте EasyTag, перейдіть до папки з музичними файлами в ній, виберіть усі файли в папці або всі файли, які ви хочете позначити, натисніть кнопку "Сканувати файли" (вам доведеться навести курсор на них, щоб розібратися яка вона).

Потім переконайтесь, що для випадаючого сканера встановлено значення "Заповнити тег", а потім у полі Заповнити тег внесіть відповідні зміни, поки приклад нижче поля не буде схожим на те, що ви шукаєте. Якщо вам потрібна додаткова допомога щодо того, що розмістити в полі Заповнити тег, натисніть на "?" кнопка для легенди (перелік того, що можна перекласти різні можливі коди) та натисніть кнопку маски, щоб перелічити деякі початкові точки.

Коли ви задоволені результатами, натисніть кнопку "Сканувати файли" (у діалоговому вікні "Сканувати файли", а не на той, який ви спочатку натискали, щоб потрапити там, де ви знаходитесь ... піктограми виглядають однаково), і ваші зміни будуть застосовані . Якщо ви не отримуєте ім'я виконавця чи альбому, просто виберіть все, що ви хочете змінити, введіть дані та натисніть на маленьку кнопку поруч із цим полем, і всі вибрані файли заповнить або змінять цього виконавця чи альбому. Це працює в більшості сфер.

Закінчивши, натисніть кнопку збереження і закінчите.

PS: Сканер CDDB часто працює досить добре, якщо у вас є повноцінні альбоми, які ви намагаєтеся позначити, або принаймні комерційно доступні файли пісень.

PPS: Я, мабуть, ще не прокинувся. Відповідно до того, що ви написали у своєму початковому дописі, спробуйте це у полі Заповнити тег:

%n. %a - %t

Ось розділ, який стосується цього питання:


1.2.2. Автоматично за допомогою сканера "Fill Tag":

Деякі умови використання цього режиму:

  • файли, відсортовані за альбомами
  • імена файлів або батьківський каталог містять інформацію про теги (виконавця, альбому, назви,…)
  • порожні або неправильні теги

Сканер "Заповнити тег" використовує шаблон для асоціації слів із ім'ям файлів та каталогів із записами тегів. Таким чином, поля тегів можна автоматично заповнити натисканням кнопки «зеленого кольору» у вікні сканера або на панелі інструментів. Якщо тег частково заповнений, використовуйте опцію "Перезаписати поля при скануванні тегу" на вкладці "Сканер" вікна "Налаштування", щоб замінити всі поля новими значеннями.

Кожному коду відповідає поле, дотримуючись цих правил:

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

Примітка: щоб уникнути помилок, рекомендується використовувати код лише один раз у шаблоні. Звичайно, як і при тегуванні вручну, сканером обробляються лише вибрані файли. Ви можете використовувати визначені шаблони у списку або написати власні шаблони, щоб відповідати формату ваших імен файлів та каталогів. Щоб уникнути помилок під час вибору потрібного шаблону чи його написання, попередній перегляд показує негайно результати, перш ніж застосувати шаблон. Якщо вам потрібна допомога щодо різних кодів, натисніть кнопку «Довідка» (рятувальний круг), щоб відобразити легенду кожного коду. Крім того, якщо ви хочете зберегти власні шаблони, відредагуйте або сортуйте їх, натиснувши кнопку «Маска», у вікні сканера відобразиться невеликий редактор.

Нижче наведено приклад використання шаблонів:

а) таке ім'я файлу:

“/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


3

Я знайшов корисні різні інструменти командного рядка:

id3v2

id3v2 - командний рядок редактора тегів id3v2. Ви можете додавати / модифікувати / видаляти теги id3v2 та конвертувати теги id3v1 у теги id3v2. Він використовує id3lib. Я шукаю співавтора. Будь ласка, надішліть електронну пошту myers_carpenter, якщо вас цікавить.

eyeD3

eyeD3 - це модуль Python та програма для обробки тегів ID3. Також надається інформація про mp3-файли (тобто швидкість передачі даних, частота вибірки, час відтворення тощо). Підтримувані формати: ID3 v1.0 / v1.1 та v2.3 / v2.4.

вони ідеальні, коли щось сценарійне для сканування каталогів.


2

Це не завжди є ідеально ідеальним, але я використовував його для отримання назв mp3-файлів, використовуючи лише загальні інструменти Unix (включаючи версії для зайнятих файлів).

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

Редагувати: я неправильно прочитав питання, але знаючи це вище, ми можемо використовувати sed для заміни $ TITLE на ім'я файлу "$ x", використовуючи sed для заміни рядка на місці

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

Я майже на 100% впевнений, що це не відповідає всім специфікаціям ID3, але це може бути достатньо для основного особистого використання, доки ви спершу зробите резервну копію.


Спасибі. Я знайшов спосіб досягти своєї мети за допомогою EasyTAG, але ваша відповідь найкраще відповідає моєму оригінальному запитанню. рядки - це корисна утиліта, про яку потрібно знати. (Я не використовував його раніше.) Чи можете ви опублікувати повне рішення на основі вашої редагування, щоб я був впевнений, що я розумію запропоновані зміни?
MountainX

2

Для Ubuntu 18.04 LTS (я припускаю, що всі аромати Debian працюватимуть це чудово):

  • Встановіть eyeD3 за допомогою sudo apt install eyeD3

  • Створіть файл для bash script (я використовував "touch"; ви можете використовувати будь-який текстовий редактор)

  • Скопіюйте це та вставте його у файл:

    Копіює ім'я файлу і записує його в тег заголовка

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

    Якщо ви не бачите перегляду прогресу, опустіть рядок echo $a над словом "зроблено".

  • Зробіть файл виконуваним:

    chmod +x filename
  • Скопіюйте скрипт у каталог, у який ви хочете, щоб він запускався - у той, що містить ваші медіа-файли; наприклад:

    cp filename /music/directory
  • Перейдіть до каталогу, в який ви щойно скопіювали сценарій:

    cd /music/directory
  • Запустіть сценарій:

    ./filename

    Зроблено

Це працювало для мене на Ubuntu 18.04 LTS - моя дружина написала це мені приблизно за 3 хвилини, тому я не можу відповісти на будь-які запитання, якщо це не працює для вас; Я не кмітливий програміст, я налаштовую цю мережу, dns, ssh, sftp, ftp, AD / Domain, файл, брандмауер, маршрутизатор / сервер. Я люблю скористатися сценаріями, програмуванням і всім подібним :-)


1

Я здивований, що ніхто не запропонував найпростішого рішення з використанням ffmpegабо avconv:

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

0

Я б встановив eyeD3 в python virtualenv, pip install eyeD3щоб ви отримали останню версію. Після цього запустіть:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.