Делать было нечего, вспомнил что есть много музыки с названием из VK.com
Решил переименовать, конечно же не руками. Нашел дополнение для php под названием id3, которое получает данные из тегов файла, к сожалению сборка древняя и новее нету. В общем пришлось пользоваться простыми библиотеками(php) для того чтобы вытащить данные из файлов. Ну и небольшая рекурсивная функция чтобы собрать список файлов из всех папок с музыкой.
Собственно весь код за исключением библиотеки для чтения id3 тегов.
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 |
<?php require_once('./getid3/getid3.php'); $getID3 = new getID3; function directoryToArray($directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '') { $arrayItems = array(); $skipByExclude = false; $handle = opendir($directory); if ($handle) { while (false !== ($file = readdir($handle))) { preg_match("/(^(([\.]){1,2})$|(\.(svn|git|md))|(Thumbs\.db|\.DS_STORE))$/iu", $file, $skip); if($exclude){ preg_match($exclude, $file, $skipByExclude); } if (!$skip && !$skipByExclude) { if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) { if($recursive) { $arrayItems = array_merge($arrayItems, directoryToArray($directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude)); } if($listDirs){ $file = $directory . DIRECTORY_SEPARATOR . $file; $arrayItems[] = $file; } } else { if($listFiles){ $file = $directory . DIRECTORY_SEPARATOR . $file; $arrayItems[] = $file; } } } } closedir($handle); } return $arrayItems; } //echo "<pre>"; //print_r(directoryToArray("lib")); $i=0; foreach(directoryToArray("lib") as $file) { $array = explode("\\", $file); $name = end($array); $extt = explode(".", $name); $ext = end($extt); if($ext == "mp3") { $i++; $info = $getID3->analyze($file); if($info['tags']['id3v1']['artist'][0]) { rename($file, implode("\\",array_slice($array, 0, -1))."\\".$info['tags']['id3v1']['artist'][0]." - ".$info['tags']['id3v1']['title'][0].".mp3"); echo "<p>$i. Renamed ".$file." - ".implode("\\",array_slice($array, 0, -1))."\\".$info['tags']['id3v1']['artist'][0]." - ".$info['tags']['id3v1']['title'][0].".mp3</p>"; } } } ?> |
По умолчанию читает все файлы из папки lib и переименовывает mp3 файлы по шаблону ARTIST — SONG NAME
Все коды включая код библиотеки id3 доступны