Извлечение Mp3-тегов

Статус
Закрыто для дальнейших ответов.

faust

Well-Known Member
Регистрация
31.01.2006
Сообщения
115
В статье на вашем сайте (http://www.internet-technologies.ru/articles/article_493.html)

Даються примеры скриптов для извлечения мп3-тегов из записей.

У меня Денвер, библиотеку я поставил, единственное "но", я не понимаю откуда брать файл "Id.php", как обозначено в скрипте (первая строчка). В файлах копался - там такого нету. Помогите пожалуйста.

Код:
<?php
require_once 'MP3/Id.php';   // Где брать файл? Не понимаю. 

// Создаем объект, читаем файл
$id3 = &new MP3_Id();
$result = $id3->read('../data/Little-Big-Man.mp3');
if (PEAR::isError($result)) {
die($result->getMessage() . "n");
}

// Читаем поля и выводим информацию
echo 'Название: ' . $id3->getTag('name') . "n";
echo 'Исполнитель: ' . $id3->getTag('artists') . "n";
echo 'Альбом: ' . $id3->getTag('album') . "n";
echo 'Год: ' . $id3->getTag('year') . "n";
echo 'Комментарий: ' . $id3->getTag('comment') . "n";
echo 'Жанр: ' . $id3->getTag('genre') . "n";
echo 'Жанр (число): ' . $id3->getTag('genreno') . "n";
echo 'Трэк: ' . $id3->getTag('track') . "n";
?>
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
качай библу PEAR... она не входит в состав дистриба PHP ... всеж расширение!
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Я честно признаюсь: статью не читал и читать не буду, потому что сам уже давно отыскал тот PEAR класс и вытащил из него всё необходимое для определения ID3-тегов. Вот оно:

Код:
<?
	// Определение ID3 тегов

	$GLOBALS['genres']=array(
		0=>'Blues',
		1=>'Classic Rock',
		2=>'Country',
		3=>'Dance',
		4=>'Disco',
		5=>'Funk',
		6=>'Grunge',
		7=>'Hip-Hop',
		8=>'Jazz',
		9=>'Metal',
		10=>'New Age',
		11=>'Oldies',
		12=>'Other',
		13=>'Pop',
		14=>'R&B',
		15=>'Rap',
		16=>'Reggae',
		17=>'Rock',
		18=>'Techno',
		19=>'Industrial',
		20=>'Alternative',
		21=>'Ska',
		22=>'Death Metal',
		23=>'Pranks',
		24=>'Soundtrack',
		25=>'Euro-Techno',
		26=>'Ambient',
		27=>'Trip-Hop',
		28=>'Vocal',
		29=>'Jazz+Funk',
		30=>'Fusion',
		31=>'Trance',
		32=>'Classical',
		33=>'Instrumental',
		34=>'Acid',
		35=>'House',
		36=>'Game',
		37=>'Sound Clip',
		38=>'Gospel',
		39=>'Noise',
		40=>'Alternative Rock',
		41=>'Bass',
		42=>'Soul',
		43=>'Punk',
		44=>'Space',
		45=>'Meditative',
		46=>'Instrumental Pop',
		47=>'Instrumental Rock',
		48=>'Ethnic',
		49=>'Gothic',
		50=>'Darkwave',
		51=>'Techno-Industrial',
		52=>'Electronic',
		53=>'Pop-Folk',
		54=>'Eurodance',
		55=>'Dream',
		56=>'Southern Rock',
		57=>'Comedy',
		58=>'Cult',
		59=>'Gangsta',
		60=>'Top 40',
		61=>'Christian Rap',
		62=>'Pop/Funk',
		63=>'Jungle',
		64=>'Native US',
		65=>'Cabaret',
		66=>'New Wave',
		67=>'Psychadelic',
		68=>'Rave',
		69=>'Showtunes',
		70=>'Trailer',
		71=>'Lo-Fi',
		72=>'Tribal',
		73=>'Acid Punk',
		74=>'Acid Jazz',
		75=>'Polka',
		76=>'Retro',
		77=>'Musical',
		78=>'Rock & Roll',
		79=>'Hard Rock',
		80=>'Folk',
		81=>'Folk-Rock',
		82=>'National Folk',
		83=>'Swing',
		84=>'Fast Fusion',
		85=>'Bebob',
		86=>'Latin',
		87=>'Revival',
		88=>'Celtic',
		89=>'Bluegrass',
		90=>'Avantgarde',
		91=>'Gothic Rock',
		92=>'Progressive Rock',
		93=>'Psychedelic Rock',
		94=>'Symphonic Rock',
		95=>'Slow Rock',
		96=>'Big Band',
		97=>'Chorus',
		98=>'Easy Listening',
		99=>'Acoustic',
		100=>'Humour',
		101=>'Speech',
		102=>'Chanson',
		103=>'Opera',
		104=>'Chamber Music',
		105=>'Sonata',
		106=>'Symphony',
		107=>'Booty Bass',
		108=>'Primus',
		109=>'Porn Groove',
		110=>'Satire',
		111=>'Slow Jam',
		112=>'Club',
		113=>'Tango',
		114=>'Samba',
		115=>'Folklore',
		116=>'Ballad',
		117=>'Power Ballad',
		118=>'Rhytmic Soul',
		119=>'Freestyle',
		120=>'Duet',
		121=>'Punk Rock',
		122=>'Drum Solo',
		123=>'Acapella',
		124=>'Euro-House',
		125=>'Dance Hall',
		126=>'Goa',
		127=>'Drum & Bass',
		128=>'Club-House',
		129=>'Hardcore',
		130=>'Terror',
		131=>'Indie',
		132=>'BritPop',
		133=>'Negerpunk',
		134=>'Polsk Punk',
		135=>'Beat',
		136=>'Christian Gangsta Rap',
		137=>'Heavy Metal',
		138=>'Black Metal',
		139=>'Crossover',
		140=>'Contemporary Christian',
		141=>'Christian Rock',
		142=>'Merengue',
		143=>'Salsa',
		144=>'Trash Metal',
		145=>'Anime',
		146=>'Jpop',
		147=>'Synthpop'
	);

	function getID3($file) {
		$f=@fopen($file, 'rb');
		@fseek($f, -128, SEEK_END);
		$r=fread($f, 128);
		fclose($f);

		if ($r[125]==Chr(0) and $r[126]!=Chr(0)) {
			$format='a3TAG/a30NAME/a30ARTISTS/a30ALBUM/a4YEAR/a28COMMENT/x1/C1TRACK/C1GENRENO';
		} else {
			$format='a3TAG/a30NAME/a30ARTISTS/a30ALBUM/a4YEAR/a30COMMENT/C1GENRENO';
		}

		$id3tag=unpack($format, $r);

		if ($id3tag['TAG']=='TAG') {
			$id3tag['GENRE']=$GLOBALS['genres'][$id3tag['GENRENO']];
		} else {
			return FALSE;
		}

		$tmp=explode(Chr(0), $id3tag['NAME']);
		$tag['name']=$tmp[0];

		$tmp=explode(Chr(0), $id3tag['ARTISTS']);
		$tag['artists']=$tmp[0];

		$tmp=explode(Chr(0), $id3tag['ALBUM']);
		$tag['album']=$tmp[0];

		$tmp=explode(Chr(0), $id3tag['YEAR']);
		$tag['year']=$tmp[0];

		$tmp=explode(Chr(0), $id3tag['COMMENT']);
		$tag['comment']=$tmp[0];

		if (isset($id3tag['TRACK'])) {
			$tag['track']=$id3tag['TRACK'];
		}

		$tag['genreno']=$id3tag['GENRENO'];
		$tag['genre']=$id3tag['GENRE'];

		return $tag;
	}
?>
Скопироваете себе в папочку файл с кодом, require() и используйте функцию getID3($имя_mp3_файла); которая возвращает массив с необходимыми данными.
 

faust

Well-Known Member
Регистрация
31.01.2006
Сообщения
115
качай библу PEAR... она не входит в состав дистриба PHP ... всеж расширение!
>>>библиотеку я поставил, единственное "но", я не понимаю откуда брать файл "Id.php"

Может будем хоть чуть-чуть внимание включать?

Скопироваете себе в папочку файл с кодом
То есть использовать данный код как файл "Id.php"?

getID3($имя_mp3_файла); которая возвращает массив с необходимыми данными.
То есть скрипт, который из статьи, нужно переписать? Можете набросать пример?
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Просто возьми мой код и используй функцию в своих целях. Ничего больше не требуется.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ