Я ищу функцию, которая получает метаданные файла .mp3 из URL-адреса (НЕ локального файла .mp3 на моем сервере).
Кроме того, я не хочу устанавливать http://php.net/manual/en/id3.installation.php или что-нибудь похожее на мой сервер.
Я ищу автономную функцию.PHP: получить метаданные удаленного файла .mp3
Сейчас я использую эту функцию:
<?php
function getfileinfo($remoteFile)
{
$url=$remoteFile;
$uuid=uniqid("designaeon_", true);
$file="../temp/".$uuid.".mp3";
$size=0;
$ch = curl_init($remoteFile);
//==============================Get Size==========================//
$contentLength = 'unknown';
$ch1 = curl_init($remoteFile);
curl_setopt($ch1, CURLOPT_NOBODY, true);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_HEADER, true);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true); //not necessary unless the file redirects (like the PHP example we're using here)
$data = curl_exec($ch1);
curl_close($ch1);
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
$contentLength = (int)$matches[1];
$size=$contentLength;
}
//==============================Get Size==========================//
if (!$fp = fopen($file, "wb")) {
echo 'Error opening temp file for binary writing';
return false;
} else if (!$urlp = fopen($url, "r")) {
echo 'Error opening URL for reading';
return false;
}
try {
$to_get = 65536; // 64 KB
$chunk_size = 4096; // Haven't bothered to tune this, maybe other values would work better??
$got = 0; $data = null;
// Grab the first 64 KB of the file
while(!feof($urlp) && $got < $to_get) { $data = $data . fgets($urlp, $chunk_size); $got += $chunk_size; } fwrite($fp, $data); // Grab the last 64 KB of the file, if we know how big it is. if ($size > 0) {
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RESUME_FROM, $size - $to_get);
curl_exec($ch);
// Now $fp should be the first and last 64KB of the file!!
@fclose($fp);
@fclose($urlp);
} catch (Exception $e) {
@fclose($fp);
@fclose($urlp);
echo 'Error transfering file using fopen and cURL !!';
return false;
}
$getID3 = new getID3;
$filename=$file;
$ThisFileInfo = $getID3->analyze($filename);
getid3_lib::CopyTagsToComments($ThisFileInfo);
unlink($file);
return $ThisFileInfo;
}
?>
Эта функция загрузки 64KB из URL-файла .mp3, а затем возвращает массив с метаданными, используя getID3
функцию (которая работает на local .mp3 files only
) и затем удаляет ранее загруженную 64 КБ. Проблема с этой функцией является то, что она слишком медленно от его природы
Для того, чтобы мой вопрос ясно (загрузки 64KB на душу .mp3, вообразите 1000 mp3 файлов.): мне нужен быстрый автономный функцию, которая считывает метаданные удаленного файла .mp3.
Так что вы говорите, вы не хотите использовать библиотеку, построенную специально для этого и вместо этого надеется что какой-то пользователь где-то перестроил библиотеку без необходимости установки дополнительных пакетов? – Ohgodwhy
Спрашивая вопросы снова ??? http://stackoverflow.com/questions/25955180/php-get-metadata-of-remote-mp3-file-from-url –
Эта библиотека требует установки на каждом сервере, не так ли? это означает, что если я сменил сервер, мне нужно будет установить эту библиотеку с самого начала. Допустим, я создал веб-сайт .php, который должен использовать эту библиотеку, а затем я хотел его продать. Я должен был бы обучить каждого отдельного покупателя индивидуально, как установить эту библиотеку на своем сервере, чтобы мой .php работал на их сервере? Вы видите мою мысль? – dimitris93