(perl) problem mit script (+ rename)

stephan01

Erfahrenes Mitglied
mp3-dateien eines ordners aufzeigt und mich bei jeder nach ihrere nummer in der playlist fragt. diese sollte dann vor dem bisherigen namen der datei stehen....soweit (abfrage usw) funktioniert alles, nur nachher sind die datein noch genau wie vorher und in der erstellten Playlist stehen die alten (in der falschen reihenfolge)

hier der code:
Code:
#!/perl/

$target_file = shift() || "playlist.m3u";
open(WRITE,">> $target_file") or die "Falschgeschrieben - NANANANANAAAA!";

@filelist = <*.mp3>;
foreach $filename (@filelist) {
print $filename."\n";
print "\# in Playlist:\n";
$nr = <STDIN>;
rename($filename, $nr.$filename);   #<--- hier hab ich irgendwie probleme....hab schon viele möglichkeiten, "'s einzufügen probiert
}
print "Alle Dateien durch - schreiben in Playlist\n";
@filelist2 = <*.mp3>;
foreach $filename2 (@filelist2){ print WRITE $filename2."\n"}
print "DONE.\n";
close(WRITE);
kill;

danke für jede hilfe :)
 
hi stephan01,

ich würde dir gerne helfen nur weiss ich nicht ganz was du willst.
daß dein file immer so aussieht wie vorher ist logisch
denn du schreibst ja immer nur die mp3's rein die in dem
ordner sind:
Code:
@filelist2 = <*.mp3>;
foreach $filename2 (@filelist2){ print WRITE $filename2."\n"}

das mit dem rename verstehe ich auch nicht.

beispiel:
$filename = music.mp3
$nr = 34
willst du $filename 43music.mp3 zuweisen??
dann würde es so aussehen:
$filename= ($nr . $filename);

beschreib es ein bisschen genauer
villeicht kann ich dir dann weiterhelfen.

mfg barney
 
also: stell dir vor, ich habe einen ordner voller mp3's vor mir. sie heißen alle einheitlich und gehören alle zu ein und demselben album. nun habe ich neben diesem ordner im borwser die cddb.com query für *das* ablum. nun wollte ich erreichen, dass mich das script zu jeder file nach deren nummer in der (zur cd gehörenden) playlist frag und dann diese zahl vorn "ranhängt". sodass sie dann alle geordnet sind und dann wollte ich sie so geordnet in'ne playlist einfügen lassen....

danke schonmal für deine bisherige hilfe :)


daß dein file immer so aussieht wie vorher ist logisch
denn du schreibst ja immer nur die mp3's rein die in dem
ordner sind:

das wollt ich ja auch. aber die files sollten vorher (siehe oben) alle umbenannt worden sein, sodass sie in der richtigen reihenfolge dadrinnen stehen....


TSCHAU
 
hi stephan01,

probier das mal:

Code:
#!/usr/bin/perl

$target_file = shift() || "playlist.m3u";
print "$target_file\n";
open(WRITE,">> $target_file") or die "Falschgeschrieben - NANANANANAAAA!";
@filelist = <*.mp3>;
foreach(@filelist)
{
print $_."\n";
print "\# in Playlist:";
chomp($nr = <STDIN>);
$filelist2[$nr] = $_;
}
print "Alle Dateien durch - schreiben in Playlist\n";
foreach(@filelist2)
{
 if($_ ne "")
 {
 print WRITE $_."\n";
 }
}
close(WRITE);
print "DONE\n";

ist zwar nicht perfekt aber funktioniert.

mfg barney
 
hi ich nochmal :)

wenn du die files auch gleich umbenennen willst musst du das:
Code:
rename ("$_", "$nr"."$_") or die "Error in rename: $!\n";

noch unter diese:
Code:
$filelist2[$nr] = $_;
zeile setzen.

(tut mir leid hab dich am anfang nicht ganz verstanden ;)
mfg barney
 
....

:) tausend dank, es funktioniert!! das ohne rename ist sogar noch viel besser, ich kam bloß nicht auf die idee, es so zu machen (und es liegt garnich im bereich meiner perl-fähigkeiten *g* :))...

also nochmal vielen vielen dank :)

tschau
 
Zuletzt bearbeitet:
Zurück