#!/usr/bin/perl # Сортировщик MP3-файлов # по ссылкам из html-каталогов # Программа привязана к CD # "Romantic Collection: Золотая коллекция" # М.Ю.З., 2002 use File::Copy (); use MP3::Info (); # Модуль MP3::Info берётся из CPAN! $basedir = "/mnt/f/cd_src/rc_zk/data"; opendir HTDIR, $basedir; foreach (readdir(HTDIR)) { # Ищем все файлы с именами diskNN.htm if (m/disk..\.htm/) { print "Файл ", $_, ": "; $backup = $_; # HTML входной open(I_HT, "< $basedir/".$_); # HTML выходной open(O_HT, "> $basedir/_".$_); @in=; # Просматриваем файл, описывающий альбом foreach (@in){ # Извлекаем название альбома if (m/ROMANTIC COLLECTION\s+(.*)<\/TITLE>/) { $album = $1; print $album, "\n"; # Создаём отдельный каталог для альбома mkdir($basedir."/".$album); # Пихаем в него плейлист open(O_PL, "> $basedir/$album/$album.M3U"); }; # Извлекаем ссылку на песню if (m/<B><FONT size=-2>(.*)\.\s<A href="songs\/(.*)">(.*)\s"(.*)"/) { $songnum=$1; $songfile=$2; $artist=$3; $songname=$4; print " ",$songfile,":",$artist,":",$songname,"\n"; # Распихиваем файл в альбом под новым именем $newname="$artist - $songname.MP3"; File::Copy::copy("$basedir/songs/$songfile", "$basedir/$album/$newname"); MP3::Info::set_mp3tag("$basedir/$album/$newname", $songname, $artist, "ROMANTIC COLLECTION: ".$album, "", "tagged by Hobbit on Perl", "pop", $songnum); print O_HT "<B><FONT size=-2>$songnum. <A href=\"$album/$newname\">", "$artist \"$songname\"</A></FONT></B>","\n"; print O_PL $newname, "\n"; } else { print O_HT $_, "\n"; }; }; # Переходим к следующему файлу close(I_HT); close(O_HT); close(O_PL); $_ = $backup; }; }; closedir HTDIR;