На сайте prostopleer.com есть, вроде бы, возможность скачать целиком музыкальный альбом. Но потом — сюрприз! — скачавшийся zip-файл вовсе не является ZIP-архивом: ни unzip, ни 7z не желают его открывать. Лишь всемогущий mplayer спокойно играет одну пьесу за другой.
Анализ содержимого показал: в начале архива идёт стандартная сигнатура PK♥♦ (50 4B 03 04), но за ней — имена файлов вместе с мусором и сами файлы, без какого-либо сжатия. Достать музыку из такого файла при наличии перла — легко!
#!/usr/bin/perl -0777 -n
=head1 DESCRIPTION
Split big pseudo zip-archive from prostopleer.com into small mp3 files.
=head1 USAGE
./split.pl big-pseudo.zip
=head1 SEE ALSO
L<< https://gist.github.com/shoorick/7785185 >>
=head1 AUTHOR
Alexander Sapozhnikov
L<< http://shoorick.ru/ >>
L<lt>shoorick@cpan.orgE<gt>
=cut
binmode(STDIN);
my $divisor = "ID3\x04\x00";
my @chunks = split $divisor;
shift @chunks;
my $i = 1;
foreach my $chunk ( @chunks ) {
open(my $fh, '<', sprintf('%02d.mp3', $i++))
or die "cannot open for writing: $!";
print $fh $divisor, $chunk;
close $fh;
}
Оно же — на гитхабе: https://gist.github.com/shoorick/7785185