Безголовый музыкальный конвертер с именем файла на основе тегов

У меня есть музыкальная коллекция, состоящая из нескольких саундтреков к фильмам в Apple Lossless, и я хотел бы преобразовать ее в OGG Vorbis со скоростью 48 кбит / с в совершенно другой структуре папок с именами файлов в следующем формате:

/music folder/{album artist}/{album name}/{track number} {track title} - {track artist}.ogg

Я также хотел бы извлечь обложки альбомов в отдельный файл под названием "AlbumArt.jpg" в той же папке.

Проблема в том, что я хочу сделать это на моем безголовом сервере Ubuntu - только на терминале.

Есть ли способ сделать это без какого-либо обширного написания сценария?

1 ответ

Решение

Вот пример сценария и как его использовать.

Сначала установите эти пакеты: libav-tools mediainfo ubuntu-restricted-extras

  • avconv (ранее известный как ffmpeg) выполняет фактическое преобразование
  • mediainfo предоставляет информацию тега для создания структуры папок и имени файла.

Сценарий:

#! / Bin / Баш 
OUTPUTBASE=convert-oggs #path к базовой папке для вывода ALBUMARTIST = `mediainfo --Inform =" General;% Album / Performer% "" $ 1 "` ALBUM = `mediainfo --Inform =" General;% Album% "" $ 1 "` TNUMBER = `mediainfo --Inform =" General;% Track / Position% "" $ 1 "` TTITLE = `mediainfo --Inform =" General;% Track% "" $ 1 "` TARTIST = `mediainfo --Inform =" General;% Performer% "" $ 1 "` mkdir -p "$ OUTPUTBASE / $ ALBUMARTIST / $ ALBUM" mediainfo --Inform = "General;% Cover_Data%" "$ 1" | base64 -d> "$ OUTPUTBASE / $ ALBUMARTIST / $ ALBUM / AlbumArt.jpg" avconv -i "$ 1" -acodec libvorbis -b 48k "$ OUTPUTBASE / $ ALBUMARTIST / $ ALBUM / $ TNUMBER $ TTITLE - $ TARTIST.ogg"

Предположим, мы назовем сценарий ~/silexcvt.sh, тогда вы все переделаете m4a треки в ~/soundtracks папка, вы бы имели find а также xargs вызвать скрипт как:

найти саундтреки -regex '.*m4a$' | xargs -I '{}' ./silexcvt.sh "{}"
Другие вопросы по тегам