Перекодирование аудиокниг
Здесь собрал несколько полезных скриптов для работы с mp3-файлами
Перевод имени файла в транслит
#!/bin/bash
# totranslit.sh
# Из русского в транслит
name="$1"
newname=`echo ${name} | tr "абвгдезийклмнопрстуфхцьыАБВГДЕЗИЙКЛМНОПРСТУФХЦЬЫ" "abvgdezijklmnoprstufhc'yABVGDEZIJKLMNOPRSTUFHC'Y" | \
sed -e 's/ё/io/g; s/ж/zh/g; s/ч/ch/g; s/ш/sh/g; s/щ/sch/g; s/э/\`e/g; s/ю/yu/g; s/я/ya/g; s/ъ/"/g; s/Ё/Io/g; s/Ж/Zh/g; s/Ч/Ch/g; s/Ш/Sh/g; s/Щ/Sch/g; s/Э/\`Е/g; s/Ю/Yu/g; s/Я/Ya/g; s/Ъ/"/g;'`
if [ "${name}" -ne "${newname}" ]
then
mv "${name}" "${newname}"
fi
Пережатие mp3
Есть аудиокнига в стерео-варианте с высоким битрейтом, нужен моно 32kbps.
Для этого устанавливаем lame, id3tool и id3v2. Последние два нужны для сохранения оригинальных id3-тегов - lame при пережатии их уничтожает, о чём выводит предупреждение.
#!/bin/sh
read mp3name
while [ -n "$mp3name" ]
do
newmp3name="32kbps/"`basename "$mp3name"`
lame -b 32 -h -m m --mp3input "$mp3name" "$newmp3name"
echo "Set ID-tags for \"$newmp3name\""
perl rec5.pl "$mp3name"
if [ $? -ne 0 ]
then
exit
fi
echo "Move \"$newmp3name\" to \"$mp3name\""
mv "$newmp3name" "$mp3name"
echo "$mp3name" >> done-list.txt
read mp3name
done
for i in `seq 1 3` ; do echo -en "\a" ; sleep 0.1 ; done
И здесь же нам необходима программа, которая будет корректировать ID3-теги:
#!/usr/bin/perl
$ifile = $ARGV[0];
$ifile =~ /\/([-A-Za-z0-9\x80-\xff.!)"(,_ ]+)$/;
$bname = $1;
print "Try to read data from file - call for id3v2 ($ifile => $bname)\n";
open(INFILE, "id3v2 -l \"$ifile\" |");
while(defined($_ = <INFILE>)) {
chomp;
if(/^Title/) { $title = substr($_, 9, 30); $title =~ s/ +$//g;
$artist = substr($_, 49); $artist =~ s/ +$//g; }
if(/^Album/) { $album = substr($_, 9, 30); $album =~ s/ +$//g;
$year = substr($_, 47, 4);
# Speech (101)
}
if(/^Comment/) { $comm = substr($_, 9, 30); $comm =~ s/ +$//g;; }
if(/^TIT2/) { $title2 = substr($_, 43); }
if(/^TPE1/) { $artist2 = substr($_, 37); }
if(/^TALB/) { $album2 = substr($_, 31); }
if(/^TYER/) { $year2 = substr($_, 13); }
#if(/^TCON/) { $_ =~ /\(([0-9]+)\)$/; $genre2 = $1; }
if(/^TCON/) { $genre2 = substr($_, 21, 10); }
if(/^TCOP/) { $cpr = substr($_, 26); }
if(/^WXXX/) { $wl = substr($_, 34); }
#if(/^COMM/) { $comm2 = substr($_, 26); }
if(/^COMM/) { $comm2 = substr($_, 26); }
}
close(INFILE);
print "Try to set data - call for id3v2 (32kbps/$bname)\n";
$cmd1 = "/usr/bin/id3v2";
@args1 = ("--TIT2", $title2, "--TPE1", $artist2,
"--TALB", $album2, "--TYER", $year2,
"--TCON", $genre2, "--TCOP", $cpr,
"--WXXX", "[$wl]", "--COMM", ":$comm2:eng",
"32kbps/$bname");
system($cmd1, @args1) == 0
or die "system $cmd1 @args1 failed: $?";
print "Try to set data - call for id3tool (32kbps/$bname)\n";
$cmd2 = "/usr/bin/id3tool";
@args2 = ("--set-artist", $artist, "--set-album", $album,
"--set-title", $title, "--set-year", $year,
"--set-genre", "101", "--set-note", $comm,
"32kbps/$bname");
system($cmd2, @args2) == 0
or die "system $cmd2 @args2 failed: $?";
книги, аудио, mp3, lame |