|
|
|
| вот возникла проблема: мне нужно просканировать папку, и занести в базу все файлы, когда я сканирую папку и смотрю файлы, то все получается, но когда я птыаюсь записать данные из этих файлов, то после просмотра одной папки, скрипт перестает работать:
<?php
require_once 'MP3/Id.php';
set_time_limit(1);
function read_dir($dir)
{
if ($path = opendir($dir)) //открываем папку
{
// echo "<table width=100% border=1 align=center>";
while ($file_name = readdir($path)) //смотрим содержимое папки
{
//нам не нужны папки "." и ".."
if (($file_name !== '.') && ($file_name !==".."))
{
//если "файл" - папка, то
if (is_dir($dir."/".$file_name))
{
read_dir ($dir."/".$file_name);
// echo "</table></td></tr>";
}
//а если не папка, то просто выводим его имя
else echo "$dir/[$file_name]<br>";
// Создаем объект, читаем файл
$id3 = &new MP3_Id();
$result = $id3->read($dir.'/'.$file_name);
if (PEAR::isError($result)) {
die($result->getMessage() );
}
// Ошибкаr "Tag not found" игнорируется
if (PEAR::isError($result) && $result->getCode() !== PEAR_MP3_ID_TNF) {
die($result->getMessage() );
}
$result = $id3->study();
if (PEAR::isError($result)) {
die($result->getMessage() );
}
$artist=$id3->getTag('artists');
$album=$id3->getTag('album');
$name=$id3->getTag('name');
$year=$id3->getTag('year');
$genre=$id3->getTag('genre');
$mode=$id3->getTag('mode');
$filesize=$id3->getTag('filesize');
//
$artist = str_replace("'","'",$artist);
$album = str_replace("'","'",$album);
$name = str_replace("'","'",$name);
$filemane = str_replace("'","'",$filemane);
$genre = str_replace("'","'",$genre);
print $artist.'<br>';
}
}
// echo "</table>";
}
}
read_dir('D:/music/Зарубежная музыка');
?>
|
я считываю с Mp3 idтэги
И еще: вот как идут папки:
D:/music/Зарубежная музыка/A/ABBA/abba.mp3 | |
|
|
|
|
|
|
|
для: FaStY
(07.03.2006 в 20:28)
| | А куда записываете и в какой строчке? | |
|
|
|
|
|
|
|
для: cheops
(08.03.2006 в 00:12)
| | ааа, :) да вот даже при незаписывании, а при выводе вот этого:
все равно отображается только одна папка, т.е. после того, как он прочитает все файлы из папки, в другую папку он не может перейти :( | |
|
|
|
|
|
|
|
для: FaStY
(08.03.2006 в 00:39)
| | Всё правильно, это из-за того, что он вынесен из цикла. | |
|
|
|
|
|
|
|
для: cheops
(08.03.2006 в 00:43)
| | а как мне сделать, чтобы все показывало? | |
|
|
|
|
|
|
|
для: FaStY
(08.03.2006 в 00:54)
| | Хотя у вас в принципе в цикле... попутал я... | |
|
|
|
|
|
|
|
для: cheops
(08.03.2006 в 02:02)
| | блин, так значит непонятно в чем ошибка... :( | |
|
|
|
|
|
|
|
для: FaStY
(08.03.2006 в 10:59)
| | Выделите блок
<?php
$id3 = &new MP3_Id();
$result = $id3->read($dir.'/'.$file_name);
if (PEAR::isError($result)) {
die($result->getMessage() );
}
// Ошибкаr "Tag not found" игнорируется
if (PEAR::isError($result) && $result->getCode() !== PEAR_MP3_ID_TNF) {
die($result->getMessage() );
}
$result = $id3->study();
if (PEAR::isError($result)) {
die($result->getMessage() );
}
$artist=$id3->getTag('artists');
$album=$id3->getTag('album');
$name=$id3->getTag('name');
$year=$id3->getTag('year');
$genre=$id3->getTag('genre');
$mode=$id3->getTag('mode');
$filesize=$id3->getTag('filesize');
//
$artist = str_replace("'","'",$artist);
$album = str_replace("'","'",$album);
$name = str_replace("'","'",$name);
$filemane = str_replace("'","'",$filemane);
$genre = str_replace("'","'",$genre);
print $artist.'<br>';
?>
|
В отдельную функцию - вам будет проще работать и локализовать ошибку. | |
|
|
|
|
|
|
|
для: cheops
(08.03.2006 в 13:34)
| | хм... чет мне и это не помогает :( | |
|
|
|
|
|
|
|
для: FaStY
(08.03.2006 в 14:47)
| | мне кажется все дело в "оформлении"....
а точнее вот здесь: (по-моему не надо закрывать таблицу...)
print $artist.'<br>';
}
}
// echo "</table>";
}
} | |
|
|
|
|
|
|
|
для: kasmanaft
(08.03.2006 в 19:07)
| | так она же закоментирована. она не влияет на вывод | |
|
|
|
|
|
|
|
для: FaStY
(08.03.2006 в 19:15)
| | :)) извиняюсь... не заметил :) | |
|
|
|
|
|
|
|
для: kasmanaft
(08.03.2006 в 19:21)
| | сразу скажу, что никогда не работал с PEAR... по-этому не знаю что произойдет когда он наткнется на папку и попробует обработать ее mp3 теги... может быть эшибка в этом???
попробуй вот так:
<?php
require_once 'MP3/Id.php';
set_time_limit(1);
function read_dir($dir)
{
if ($path = opendir($dir)) //открываем папку
{
// echo "<table width=100% border=1 align=center>";
while ($file_name = readdir($path)) //смотрим содержимое папки
{
//нам не нужны папки "." и ".."
if (($file_name !== '.') && ($file_name !==".."))
{
//если "файл" - папка, то
if (is_dir($dir."/".$file_name))
{
read_dir ($dir."/".$file_name);
// echo "</table></td></tr>";
}
//а если не папка, то просто выводим его имя
else { echo "$dir/[$file_name]<br>";
// Создаем объект, читаем файл
$id3 = &new MP3_Id();
$result = $id3->read($dir.'/'.$file_name);
if (PEAR::isError($result)) {
die($result->getMessage() );
}
// Ошибкаr "Tag not found" игнорируется
if (PEAR::isError($result) && $result->getCode() !== PEAR_MP3_ID_TNF) {
die($result->getMessage() );
}
$result = $id3->study();
if (PEAR::isError($result)) {
die($result->getMessage() );
}
$artist=$id3->getTag('artists');
$album=$id3->getTag('album');
$name=$id3->getTag('name');
$year=$id3->getTag('year');
$genre=$id3->getTag('genre');
$mode=$id3->getTag('mode');
$filesize=$id3->getTag('filesize');
//
$artist = str_replace("'","'",$artist);
$album = str_replace("'","'",$album);
$name = str_replace("'","'",$name);
$filemane = str_replace("'","'",$filemane);
$genre = str_replace("'","'",$genre);
print $artist.'<br>';
}
}
}
// echo "</table>";
}
}
read_dir('D:/music/Зарубежная музыка');
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(08.03.2006 в 19:32)
| | спасибо. | |
|
|
|