Очень часто, скачав с торрентов очердную музыку, я вижу, что автор раздачи то ли не прописал тэги в 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 уже содержится информация об альбоме.
В результате работы скрипта получается что-то вроде (шапка писалась вручную):
Теперь названия треков и артистов можно подправлять, не затрагивая исходные mp3-шки.
Вот таким образом можно оставлять на раздаче даже те mp3-файлы, тэги в которых вас не устраивают.
Исправления, замечания и нормальные простые решения проблемы приветствуются.
Первые десять раз я создавал 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-файлы, тэги в которых вас не устраивают.
Исправления, замечания и нормальные простые решения проблемы приветствуются.