Willkommen in der Webstatt Zum Webstatt Blog und Stories
Wasili am 23.12.06 16:52

Ich wollte heute meine digitalisierte CD-Sammlung mal reinigen, da, wie ich gemerkt habe, der Dateiname einfach Mist ist. Leider liess sich das im CD-Ripper nicht umstellen, von Hand umzubennen war mir zu doof.
Deshalb dachte ich, ich lasse ein Script rüber rennen. Gesagt getan, getestet, bevor ich sie umbenannt habe, lief wunderbar. Ausser mit bestimmten Verzeichnisnamen, die [Bonus Tracks] im Namen hatte. Die Funktion glob() lieferte damit keine Ergebnisse. Ich hab deshalb einfach die Verzeichnise umbenannt... Die Dateien sind nun alle im "richtigen" Format, wie ich es wollte. Nur intressiert mich trotzdem, wie man das Problem umgehen könnte.

<?php
/**
* Benennt alle von Windows Media-Player kopierte Dateien im Format
* "{$Titelnummer} {$Bandname} {$Titel}"
* um in das Format:
* "{$Titelnummer} - {$Bandname} - {$Titel}"
*
* Wobei die Datei im Musikordner-Root liegen sollte, der Musikordner muss in Stil ./Bandname/Albumname aufgeteilt sein.
*/
$renamedirs = array(
"My Dying Bride" => array(
"A Line of Deathless Kings", // geht
"The Angel and the Dark River [Bonus Tracks]", // Geht so _nicht_
),
);

$i = 0;
foreach($renamedirs as $bandname => $subdirs) {
$i++;
print $bandname."\r\n";

foreach($subdirs as $albumname) {
print "\t".$albumname."\r\n";

$files = glob("D:/".$bandname."/".$albumname."/*.mp3");

$errors = 0;
foreach($files as $filename) {
$dirname = dirname($filename);
$filename = basename($filename);
$oldname = $filename;
$titlenum = substr($filename, 0, 2);
$titlename = substr($filename, strpos($filename, $bandname) + strlen($bandname) +1);
$titlename = str_replace("- ", "", $titlename);
$newname = $titlenum.' - '.$bandname.' - '.$titlename;

//echo "\t\t".$oldname.' => '.$newname."\r\n";
if(rename($dirname.'/'.$oldname, $dirname.'/'.$newname) === false) {
print "\t\tError: Cannot rename $oldname\r\n";
$errors++;
}
}
print "\t\tDone with $errors Errors.\r\n";

print "\r\n";
}

print "\r\n";

/*if($i === 3) {
exit;
}*/
}
?>


Und eine zweite Frage: Ist es Möglich, mit PHP die ID3-Tags auszulesen?

Edit: *selbsthau* Die Zweite Frage hat sich vorerst erledigt... http://de3.php.net/manual/de/ref.id3.php

netcup.de Warum gibt es hier Werbung?
sili sili am 23.12.06 17:25

Versuches so: "The Angel and the Dark River \[Bonus Tracks\]". Ich nehme an, die [ ] werden als Zeichenklassen interpretiert, daher musst du diese escapen.

Wasili am 23.12.06 19:36

Oh... Stimmt, das kann sein. Muss ja fast... Aua.
Gut, lass ich in Zukunft preg_quote drüber laufen, danke :)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt