PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wer kann Perl?



Stefan Zemlicka
23.09.2005, 18:48:38
Irgendwie bin ich zu blöde.

Aufgabenstellung:
Ich möchte gern ein Script welches meinen MP3 Ordner durchsucht, dann mit convert ein ths File erzeugt welches gleich heißt wie das MP3 File und dort die ID3 TAG infos reinschreibt und ein cover.jpg einfügt.

Das Bild habe ich ja noch hinbekommen, aber leider hapert es am Perl.

convert -font fonts/1900805.ttf -fill white -pointsize 24 -draw 'text 10,30 "
Interpret: '${ID3INTERPRET}'
Album: '${ID3ALBUM}'
Track: '${ID3TRACK}'
Titel: '${ID3TITLE}'
Jahr: '${ID3JEAR}'
Kommentar: '${ID3COMMENT}'
\n\nFile Information:
Datei: '${MP3FILE}'
Dauer: '${MP3TIME}'
Version: '${MP3VERSION}'
Bitrate: '${MP3BITRATE}'
Frequenz: '${MP3FREQ}'
Mode: '${MP3MODE}'
"' hintergrund.png hintergrund2.png

Vielleicht hat ja jemand Lust das zu machen :D

dino
24.09.2005, 19:45:41
Mhh, ich bin mir nicht sicher wo genau Dein Problem anfängt, aber vielleicht hilft Dir das kleine Script unten.

Man muss dem Script als Parameter ein Verzeichnis mitgeben, in dem die MP3 Dateien liegen. Statt des `dir` kannst Du dann Dein `convert` einbauen.

Ansonsten formulier Dein Problem nochmal etwas genauer.

Nochwas: Du brauchst natürlich die beiden MP3 Libraries, die mit use eingebunden sind. Getestet hab ich das Script nur unter Win. Für Linux muss wahrscheinlich der \ im $filepath durch ein / ersetzt werden.

Gruss

Dino



#!/perl/bin/perl

use MP3::Tag;
use MP3::Info qw(:all);
use Data::Dumper;


opendir(DIR,$ARGV[0]);
@dir=sort readdir(DIR); # Sortieren muss nicht unbedingt sein
closedir(DIR);

foreach $file (@dir) {
if($file=~/\.mp3$/i) { # Nur bei MP3 Dateien machen wir was

$filepath=$ARGV[0]."\\".$file; # Das ist der Dateiname + Pfad, bei Windows ist "\" oder "/" egal!

print `dir "$filepath"`; # hier kann man ein shell kommando in die `` einbauen

print "-------------------------------\n";
print "Datei: $filepath\n";
print "-------------------------------\n";

$mp3 = MP3::Info::get_mp3info($filepath);

print "Read MP3Info:\n"; # Jetzt kommen alle Informationen, die uns MP3::Info bietet

foreach $key (keys(%{$mp3})) {
print "$key $mp3->{$key}\n";
}

$tag=MP3::Tag->new($filepath);

print "Read Tags:\n";

$autoinfo = $tag->autoinfo(); # Jetzt lesen wir autoinfo. Mehr dazu in der Doku zum Modul

foreach $key (keys(%{$autoinfo})) {
print "$key $autoinfo->{$key}\n";
}

}
}