da ich immer viele dateien von gewissen quellen bekomme, habe ich mir son php-dingen geschrieben, dass mir alle datein sortiert. alle mp3s liegen erst in einem ordner und werden dann von dem php-script ausgelesen (id3-tags) und dann in den ordner
MP3-Archiv/<ersten zwei buchstaben des artists>/<artist> - <titel>.mp3 verschoben.
und dann gibts noch so kleinigkeiten wie md5-vergleich und so..flass mal was doppelt ist. das ganze sieht so aus (ist aba unordnetlich gecodet.. schon sau alt!):
<?
set_time_limit(345345);
$von = 'U:\\Musik\\unsortiert\\';
$nach = 'U:\\Musik\\MP3-Archiv\\';
$spam = array('www.goldesel...', 'goldesel...', 'war...', '_', '.mp3', 'www.hotspot...', '*', '?', '<', '>';
// $spam hab ich mal son bissl zensiert für webstatt ^^
define('IN_ID',true);
include('id3tag-2005-07-26/modules/class/mp3_id3v11.php';
/*
include('modules/class/mp3_id3v11.php';
$mp3_id3v11 = new mp3_id3v11();
$mp3_id3v11->load_file('C:\Musik\unsortiert\farin_urlaub_racing_team_-_zehn.mp3';
print_r($mp3_id3v11->get_tag());
Array
(
[title] => Zehn
[artist] => Farin Urlaub Racing Team
[album] => Zehn CDM
[year] => 2006
[comment] => www.gold.... // zensiert ^^
[track] => 1
[genre] => Rock
)
*/
echo '<pre>';
$d = dir($von);
$unlinken = array();
while(false !== ($entry = $d->read())){
$array = pathinfo($entry);
$datei_endung = strtolower($array['extension']);
if(in_array($entry, array('..', '.') || is_dir($entry) || $datei_endung != 'mp3' continue;
$mp3_id3v11 = new mp3_id3v11();
$mp3_id3v11->load_file($von.$entry);
$tags = $mp3_id3v11->get_tag();
$tags['artist'] = trim($tags['artist']);
$tags['title'] = trim($tags['title']);
if(empty($tags['title']) && empty($tags['artist'])){
if(!is_array($tags)) $tags = array();
list($tags['artist'], $tags['title']) = explode(' - ', str_replace('_', ' ', $entry));
$tags['artist'] = trim($tags['artist']);
$tags['title'] = trim($tags['title']);
}
if(isset($tags) && !empty($tags['title']) && !empty($tags['artist'])){
$tags['artist'] = trim(str_replace($spam, ' ', $tags['artist']));
$tags['title'] = trim(str_replace($spam, ' ', $tags['title']));
$buchst = trim(substr($tags['artist'], 0, 2));
if(!is_dir($nach.$buchst)) mkdir($nach.$buchst);
$pfadneu = $nach.$buchst.'\\'.$tags['artist'].' - '.$tags['title'].'.mp3';
if(!file_exists($pfadneu)){
$copytrue = copy($von.$entry, $pfadneu);
if($copytrue){
$unlinken[] = $von.$entry;
echo '<span style="color:green">'.$entry.' verschoben ('.$tags['artist'].' - '.$tags['title'].'</span><br />';
}else{
echo '<span style="color:red">'.$entry.' konnte nicht verschoben werden (dateiname?)</span><br />';
}
}else{
echo '<span style="colorrange">'.$entry.' schon vorhanden</span>';
if($_GET['a'] == 'radikal' $unlinken[] = $von.$entry;
else{
$file1 = md5_file($von.$entry);
$file2 = md5_file($pfadneu);
if($file1 == $file2){
$unlinken[] = $von.$entry;
echo ' <span style="colorrange"><b>wird gelöscht</b></span>';
}
}
echo '<br />';
}
}else echo '<span style="color:red">'.$entry.' nicht verschoben (keine tags)</span><br />';
unset($mp3_id3v11);
flush();
}
$d->close();
$fp = fopen('del.bat', 'w';
foreach($unlinken as $f){
$f = str_replace(array('ä', 'ö', 'ü', 'Ä', 'Ü', 'Ö', 'ß', '´', '%', '?', $f);
fwrite($fp, 'del "'.$f."\"\r\n"
}
fwrite($fp, 'pause';
fclose($fp);
echo '<b>Löschdatei geschrieben</b>';
?></pre>
das löschen mit ner batchdatei daher, da ich mit meinem xampp keine rechte dazu habe und zu faul bin das umzustellen (wie auch immer das geh'n mag^^)
das id3-ding hab ich mal angehängt..
vll brauchts ja einer oder zumindest das system..
Franky