Как стать автором
Обновить

Создание cue-плэйлистов для списка mp3-файлов из папки

Время на прочтение 2 мин
Количество просмотров 2.7K
Очень часто, скачав с торрентов очердную музыку, я вижу, что автор раздачи то ли не прописал тэги в mp3, то ли прописал их не правильно. Если исправить эти mp3-файлы и прописать в них нормальные тэги, то я не смогу сидировать только что скачанное. Что не очень хорошо. С другой стороны, я собираю свою музыкальную статистику в last.fm и хочется тэги поддерживать в актуальном состоянии. Есть, конечно, вариант скопировать только что скачанную музыку в отдельное место и исправить тэги там, но это как-то неспортивно.

Первые десять раз я создавал cue-плэйлист вручную, но потом вспомнил, что всё-таки имею отношение к программированию и написал небольшой скрипт на Perl, который по списку mp3 файлов создаёт cue-плэйлист. Теперь менять информацию об исполнителе, альбоме, названиях песен можно менять в нём, никак физически не трогая mp3-шки. Эти плейлисты прекрасно читаются foobar'ом.

У скрипта один параметр: pattern — код, который выполняется для каждого файла. В этом фрагменте кода должны устанавливаться переменные $track, $title и $performer — это соответственно номер трека, название песни и исполнитель.
Например, для имён файлов типа «22. Baby I Need Your Loving — Four Tops.mp3» скрипт нужно вызывать так:
perl c:\util\playlist_cue.pl "--pattern=($track,$title,$performer)= $f=~ /(\d\d)\. (.+) — (.+)\.mp3/;" >> playlist.cue
Считается, что в файле playlist.cue уже содержится информация об альбоме.


use strict;
use warnings;
use Getopt::Long;

my ($track,$performer,$title);
my $pattern = '($track,$title) = $f =~ /(\d*) - (.+)\.mp3/';
GetOptions ("pattern=s" => \$pattern);

for my $f (<*.mp3>) {
eval($pattern);
print<<ITEM;
  FILE "$f" MP3
	TRACK $track AUDIO
	TITLE "$title"
ITEM
if (defined $performer) {
	print "\tPERFORMER \"$performer\"\n";
}
print <<ITEMEND
	INDEX 01 00:00:00
ITEMEND
}


В результате работы скрипта получается что-то вроде (шапка писалась вручную):
REM GENRE Motown
REM DATE 1992
PERFORMER "Various Artists"
TITLE "Hitsville USA: The Motown Singles Collection 1959-1971 (disc 1)"  
   FILE "01. Money (That's What I Want) - Barrett Strong.mp3" MP3
	TRACK 01 AUDIO
	TITLE "Money (That's What I Want)"
	PERFORMER "Barrett Strong"
	INDEX 01 00:00:00
  FILE "02. Shop Around - The Miracles.mp3" MP3
	TRACK 02 AUDIO
	TITLE "Shop Around"
	PERFORMER "The Miracles"
	INDEX 01 00:00:00
  FILE "03. Please Mr. Postman - The Marvelettes.mp3" MP3
	TRACK 03 AUDIO
	TITLE "Please Mr. Postman"
	PERFORMER "The Marvelettes"
	INDEX 01 00:00:00
  FILE "04. Jamie - Eddie Holland.mp3" MP3
	TRACK 04 AUDIO
	TITLE "Jamie"
	PERFORMER "Eddie Holland"
	INDEX 01 00:00:00


Теперь названия треков и артистов можно подправлять, не затрагивая исходные mp3-шки.

Вот таким образом можно оставлять на раздаче даже те mp3-файлы, тэги в которых вас не устраивают.

Исправления, замечания и нормальные простые решения проблемы приветствуются.
Теги:
Хабы:
+1
Комментарии 3
Комментарии Комментарии 3

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн