Thread iTunes: Coverfiles direkt in MP3s speichern?
(7 answers)
Opened by ~Br4inP4in~ at 2008-10-04 22:32
@nepos, Danke für den Link, wenn ich nochmal drüber nachdenke hatte meine Annahme sowieso recht wenig Sinn, ich ging schließlich davon aus, dass der Picture-Type etwas mit dem Mimetype zu tun hat.
Als Entschädigung ein kleines Skript, das vom aktuellen Verzeichnis aus allen .mp3-Dateien ein Cover gibt, falls es ein Cover im jeweiligen Verzeichnis findet: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #!/usr/bin/perl use strict; use warnings; use MP3::Tag; use File::Find; File::Find::find( \&wanted, '.' ); { my $cover; my @mp3; sub wanted { for ($File::Find::name) { -d && do { undef $cover; last; }; /\.(jpg|gif)$/ && do { $cover = [ $_, "image/$1" ]; if ( @mp3 ) { add_cover( $_, $cover ) for @mp3; @mp3 = (); } # if last; }; /\.mp3$/ && do { $cover ? add_cover( $_, $cover ) : push @mp3, $_; last; }; } # for } # wanted } sub add_cover { my( $file, $cover ) = @_; my $mp3 = MP3::Tag->new( $file ); $mp3->get_tags; my $id3v2 = exists $mp3->{'ID3v2'} ? $mp3->{'ID3v2'} : $mp3->new_tag('ID3v2'); open( my $in, '<', $cover->[0] ) or die "Cannot open file '$cover->[0]': $!"; binmode( $in ); my $data = do{ local $/=undef; <$in> }; unless ( $id3v2->get_frame('APIC') ) { $id3v2->add_frame( 'APIC', $cover->[1], 3, 'Cover Image', $data ); } # unless else { $id3v2->change_frame( 'APIC', $cover->[1], 3, 'Cover Image', $data ); } # else $id3v2->write_tag; close( $in ); $mp3->close; } # add_cover Noch ist es quick&dirty, wenn ich etwas Zeit finde schreibe ich noch eine GUI drum und mache es einfacher das Ganze an eigene Befürfnisse anzupassen. MfG perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
|