(Gloomy @ Вторник, 15 Июня 2004, 10:30) писал(а):[мысли вслух] ИМХО было бы лучше к XMMS патч прикрутить чтобы он cp-1251 понимал вместо того чтобы конвертировать теги [/мысли вслух]
Дык есть такая штука. У тебя же сейчас gentoo? Там этот патч даже по дефолту ставится.
Добавил @ 18.06.2004 03:08
(madskull @ Вторник, 15 Июня 2004, 13:23) писал(а):Mitya-ncc прости, что вмешиваюсь.
Помогите пожалуйста улучшить скрипт: нужно чтобы он переименовывал не только файлы но еще и находящиеся в текущем каталоге каталоги. А если получится переименовывать рекурсивно тогда вообще отлично будет.
find ./ | grep -v '^\./$'| sort -r | while read f; do
if [ ! -d "$f" ]; then
eval `id3info "$f" | grep '===' | iconv -f windows-1251 -t koi8-r | sed -e 's/^=* //;s/\(["\$]\)/\\\\\1/g;s/ (.*: \(.*\)/="\1"/'`
id3tag -s"$TIT2" -a"$TPE1" -c"$COMM" -A"$TALB" "$f"
fi
fn="$(dirname "$f")/$(basename "$f" | perl rcd.pl -koi2lat | sed -e 's/ /_/g')"
[ "$f" == "$fn" ] || mv "$f" "$fn"
done
Перекодируются не только файлы, но и каталоги. Вложенность не ограниченна.
Используется поиск всех файлов, а не по маске *mp3 для того, чтобы "зацепить" не только файлы, но и каталоги.
Отработку со скриптом rcd.pl не проверял.
#!/usr/bin/perl -w
use Getopt::Std;
$fromenc=$opts{'f'} if defined $opts{'f'};
$toenc=$opts{'t'} if defined $opts{'t'};
if($toenc){}else{$toenc="utf-8"};
if($fromenc){}else{$fromenc="koi8-r"};
$filename=$ARGV[0];
$tags=`id3v2 -l "$filename"`;
($artist)=$tags=~/TIT2.+?:(.*)/;
($title)=$tags=~/TPE1.+?:(.*)/;
($album)=$tags=~/TALB.+?:(.*)/;
chomp($artist);
chomp($album);
chomp($title);
if($artist){$newartist=(`echo "$artist" | iconv -f $fromenc -t $toenc`)}else{$newartist=""};
if($title){$newtitle=(`echo "$title" | iconv -f $fromenc -t $toenc`)}else{$newtitle=""};
if($album){$newalbum=(`echo "$album" | iconv -f $fromenc -t $toenc`)}else{$newalbum=""};
`id3v2 -a "$newartist" -A "$newalbum" -t "$newtitle" "$filename"`;
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания. И восемь строк матом...(бесплатно)
Подожди чуть-чуть. Я-таки надеюсь что к этому скрипту снизойдет madskull, вот тогда мы скрипт в "проекты" и перенесем.
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания. И восемь строк матом...(бесплатно)
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
use Text::Iconv;
my %opts;
getopts('f:t:', \%opts);
my ($fromenc,$toenc) = ("koi8-r","utf-8");
$fromenc=$opts{'f'} if defined $opts{'f'};
$toenc=$opts{'t'} if defined $opts{'t'};
my $filename=$ARGV[0] or die "Usage: bla-bla-bla";
my $tags=`id3v2 -l "$filename"`;
my ($artist)=$tags=~/TIT2.+?:\s*(.*)/;
my ($title)=$tags=~/TPE1.+?:\s*(.*)/;
my ($album)=$tags=~/TALB.+?:\s*(.*)/;
my $iconv = new Text::Iconv($fromenc, $toenc);
my ($newartist,$newtitle,$newalbum) = (
$artist? '-a "'.$iconv->convert($artist).'"': "",
$title? '-t "'.$iconv->convert($title).'"': "",
$album? '-A "'.$iconv->convert($album).'"': "",
);
`id3v2 $newartist $newalbum $newtitle "$filename"`;
Не проверял!!!
Хотя, по большому счету, надо было добавить только забытый getopts('f:t:', \%opts)
Вспомнил тут, как сам в свое время мучался с кодировками mp3. Тоже писал всякие гадости Правда потом узнал, что MusicPD все и сам умеет и плюнул. Но потом меня кое чего не устроило, и я написал вот эту гадость (мож пригодится кому):
На всякий случай - оно раскидывает mp3'шки по каталогам. Когда-то там была еще одна строчечка с id3v2, но потом за ненадобностью отмерла. Гадость родилась быстро и использовалась всего однажды. Как следствие - поле для усовершенствования имеется.
2.6.14-gentoo-r5 kde-3.5.0 | openbox-3.2 Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
а для переименования convmv совсем не катит?
тема-то вроде начиналась про перекодировку тегов, а продолжилась уже в переименовании...
Анализ подозрительных файлов тут
Все что вы скажете может быть использовано как баян. Jabber-конференция: sysadmins.ru на conference.jabber.ru - всем добро пожаловать!