Leser: 2
8 Einträge, 1 Seite |
1 2 3 4 5
$tag->add_frame( "APIC", -picture_type => 0, -file => "happy_little_song.gif" );
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
#!/usr/bin/perl use strict; use warnings; use MP3::Tag; my $mp3 = MP3::Tag->new( 'test.mp3' ); $mp3->get_tags; my $id3v2 = exists $mp3->{'ID3v2'} ? $mp3->{'ID3v2'} : $mp3->new_tag('ID3v2'); { open( my $in, '<', 'test.jpg' ) or die "Cannot open file 'test.jpg': $!"; binmode( $in ); my $data = do{ local $/=undef; <$in> }; unless ( $id3v2->get_frame('APIC') ) { $id3v2->add_frame( 'APIC', 'image/jpg', 3, 'Cover Image', $data ); } # unless else { $id3v2->change_frame( 'APIC', 'image/jpg', 3, 'Cover Image', $data ); } # else $id3v2->write_tag; }
1
2
3
4
5
6
unless ( move( $tempfile, $mp3obj->{'filename'} ) )
{
unlink($tempfile);
warn "Couldn't File::Copy::move temporary file $tempfile to $mp3obj->{'filename'}\n";
return -1;
}
QuoteLeider konnte ich bisher nicht herausbekommen, wann man welchen Picture-Type(im Skript die 3 in der add_frame/change_frame Methode) verwenden muss.
Nach der Doku von MPEG::ID3v2Tag ist es eine 0 für image/gif und nach einer kurzen google-Suche eine 3 für image/jpg. Andere hab ich noch nicht gefunden.
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
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
my @cover = ( 'image/', '' ); for my $ext (qw' jpg gif ') { if ( exists $files->{$ext} ) { $cover[0] .= $ext; $cover[1] = $files->{$ext}->[0]; last; } # if } # for open( my $in, '<', $cover[1] ) or die "Cannot open file '$cover[1]': $!"; binmode( $in ); my $data = do{ local $/ = undef; <$in> }; close( $in ); for my $file ( @{ $files->{'mp3'} } ) { my $mp3 = $self->open_mp3( $file ); my $id3v2 = $self->get_id3v2( $mp3 ); $self->set_id3v2( $id3v2, 'APIC', $cover[0], 3, 'Cover Image', $data ); } # for
8 Einträge, 1 Seite |