5

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

Я пробовал 'mp3rename' из репозитория Debian apt, но он не обрабатывает mp3-файлы без автоматической пометки id3. Есть ли работоспособная альтернатива?

5 ответов5

3

Если вам нравится Perl, простой способ получить теги таков:

#!/usr/bin/env perl
use File::Find;
use MP3::Tag;
use Cwd;

$dir = ".";
open(OUTFILE,">tags.txt") || die "Can't open: $!\n";
print OUTFILE 'Output for "'.getcwd().'"'." and subdirectories\n";
print OUTFILE "Path;Artist;Title;Track;Album;Year;Genre;File Size\n";

find(\&edits, $dir);
close(OUTFILE);
print "Done\n";

sub edits() 
{
    $fn=$_;
    $not_shown=1;
    if ( -f and $fn=~m/.+\.mp3$/ig)
        {
        $mp3 = MP3::Tag->new($fn);
        ($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo();
        $fs= -s $fn;
        print OUTFILE "$File::Find::name\\$fn;$artist;$title;$track;$album;$year;$genre;$fs\n";
        }
    if ( -f and $fn=~m/.+\.wav$|\.m4a$/ig)
        {
        $fs= -s $fn;
        print OUTFILE "$File::Find::name\\$fn;;;;;;;$fs\n";
        }
}

Оттуда немного сценариев, и вы получаете то, что хотите.

2

id3v2 и некоторые сценарии должны сделать это возможным. Я посмотрю справочные страницы и попытаюсь написать пример, но в id3v2 -l file будут перечислены теги из этого файла. Оттуда вы можете передать через awk/sed/what, чтобы получить команду переименования файла.

1

Взгляните на exiftool , а точнее, на раздел руководства под названием RENAMING EXAMPLES.

Это не ограничено только файлами MP3.

1

Вы можете попробовать команду инструмента kid3-cli из Kid3

Пример :

kid3-cli -c 'fromtag "%{track}__%{album}__%{title}" 1' *.mp3
1

Это не командная строка, но я всегда использовал EasyTag. Это позволяет мне добавлять обложки и обложки CD к файлам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .