Установка тега заголовка ID3 равным имени файла MP3


14

Кто-нибудь получил сценарий bash, который пройдет через библиотеку мультимедиа и установит тег заголовка id3 каждого файла MP3 равным имени файла?

Я открыт для других автоматизированных методов тоже. Это может быть приложение с графическим интерфейсом или все, что будет делать работу автоматически.

Здесь описан метод EasyTag: Как переименовать тег большого заголовка в файлах mp3 ID3 - К сожалению, я не понимаю шаги.


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

3
Вот несколько советов: 1) Не загромождайте свой вопрос «редактировать 1», «редактировать 2» и т. Д. Решайте проблемы, используя комментарии. 2) Если вы найдете решение, опубликуйте его как ответ, как если бы вы пытались ответить на чужой вопрос. Не ставьте ответ на вопрос . Это не то, где люди ищут это :) Кроме того, используйте цитаты для всего, что вы цитируете откуда-то еще (см. Справку по форматированию).
Slhck

Я сделал скрипт для правильной маркировки файлов MP3 в формате «Artist - Track.mp3», а затем переименовал файл в «Track.mp3»: gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0, используяeyed3
Zach Saucier

Ответы:


17

EasyTAG действительно отличный инструмент для решения этой проблемы. Я нашел свой ответ здесь . С точки зрения того, как его использовать, лучшим справочным документом будет собственная документация EasyTAG .

Откройте EasyTag, перейдите к папке с музыкальными файлами в ней, выберите все файлы в папке или все файлы, которые вы хотите пометить, нажмите кнопку «Сканировать файлы» (вам придется навести на них курсор, чтобы выяснить, какой это).

Затем убедитесь, что в раскрывающемся списке сканера установлено значение «Заполнить тег», затем в поле «Заполнить тег» внесите необходимые изменения, пока приведенный ниже пример поля не будет выглядеть так, как вы ищете. Если вам нужна дополнительная помощь в отношении того, что нужно указать в поле «Заполнить тег», нажмите «?» нажмите кнопку с легендой (список возможных переводимых кодов) и нажмите кнопку маски, чтобы получить список начальных точек.

Когда вы довольны результатами, нажмите кнопку «Сканировать файлы» (в диалоговом окне «Сканировать файлы», а не на то, которое вы изначально щелкнули, чтобы получить то, где вы находитесь ... значки выглядят одинаково), и ваши изменения будут применены , Если вы не получаете имя исполнителя или альбома, просто выберите все, что вы хотите изменить, введите данные и нажмите небольшую кнопку рядом с этим полем, и все выбранные файлы будут заполнены или изменены для этого исполнителя или альбома. Это работает в большинстве областей.

Когда вы закончите, нажмите кнопку Сохранить, и все готово.

PS: сканер CDDB часто работает довольно хорошо, если у вас есть полные альбомы, которые вы хотите пометить, или, по крайней мере, коммерчески доступные файлы песен.

PPS: Я, видимо, еще наполовину проснулся. Согласно тому, что вы написали в своем оригинальном сообщении, попробуйте это в поле Fill Tag:

%n. %a - %t

Вот раздел, который имеет отношение к этому вопросу:


1.2.2. Автоматически со сканером «Fill Tag»:

Некоторые условия для использования этого режима:

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

Сканер «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 (включая версии busybox). Возможно, кто-то с более чем 6 файлами Tom Petty mp3 может провести дополнительное тестирование.

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 (я использовал «touch»; вы можете использовать любой текстовый редактор, который вам нравится)

  • Скопируйте это и вставьте в файл:

    Копирует имя файла и записывает его в тег Title

    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.