12

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

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

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

7 ответов7

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
4

EasyTAG выполняет все виды общих операций с тегами / именами файлов для аудио (и некоторых видео) файлов.

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 mp3 Tom Petty, может провести дополнительное тестирование.

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, но этого может быть достаточно для базового личного использования, если вы сначала делаете резервную копию

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 над словом "done".

  • Сделайте файл исполняемым:

    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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .