Format C Опубликовано 8 августа, 2007 Жалоба Поделиться Опубликовано 8 августа, 2007 Необходим пример не большого скрипта отображающего на странице листинг mp3 файлов находящихся в папке со скриптом. В принципе не столько необходим сам листинг как чтение id3 тэгов и отображение их рядом с mp3 файлами. Слышал что можно это сделать с помощью PHP классов или при помощи скрипта getID3() но как ими пользоваться я так и не разобрался :) Прошу знающих людей привести пример данного скрипта. На данном скриношоте http://www.tvhotu.ru/script.jpg вы можете посмотреть что именно мне необходимо. Заранее спасибо всем кто откликнется !!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 8 августа, 2007 Жалоба Поделиться Опубликовано 8 августа, 2007 Нашел этот скрипт... сам не пробувал <?class ID3v1x { var $file_name; //--- Tag Vars. var $tag; var $title; var $artist; var $album; var $year; var $comm; var $track; var $genre; function ID3v1x($inputfile) {$this->file_name = $inputfile; } //--- ID3v1.x Read Tag Function function read_tag() {$file = fopen($this->file_name, "rb");if($file == false) { return false;}else { fseek($file, -128, SEEK_END); $this->tag = fgets($file, 4); if($this->tag == 'TAG') { $this->title = fgets($file, 31); $this->artist = fgets($file, 31); $this->album = fgets($file, 31); $this->year = fgets($file, 5); $this->comm = fgets($file, 29); $this->temp = fgets($file, 2); $this->track = fgets($file, 2); $this->track = hexdec(bin2hex($this->track)); $this->genre = fgets($file, 2); $this->genre = hexdec(bin2hex($this->genre)); $genre_list = array("Blues","ClassicRock","Country","Dance","Disco","Funk","Grunge","HipHop","Jazz", "Metal","NewAge","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno", "Industrial","Alternative","Ska","DeathMetal","Pranks","Soundtrack","Euro-Techno", "Ambient","TripHop","Vocal","Jazz-Funk","Fusion","Trance","Classical","Instrumental", "Acid", "House", "Game", "SoundClip", "Gospel", "Noise", "Alt.Rock", "Bass", "Soul", "Punk", "Space", "Meditative", "InstrumentalPop", "InstrumentalRock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", "Electronic", "Pop/Folk", "Eurodance", "Dream", "SouthernRock", "Comedy", "Cult", "GangstaRap", "Top40", "ChristianRap", "Pop/Funk", "Jungle", "NativeAmerican", "Cabaret", "NewWave", "Psychedelic", "Rave", "Showtunes", "Trailer", "Lo-fi", "Tribal", "AcidPunk", "AcidJazz", "Polka", "Retro", "Musical", "Rock'n'Roll", "HardRock", "Folk", "Folk/Rock", "NationalFolk","Swing", "FastFusion", "Bebob", "Latin", "Revival", "Celtic", "BlueGrass", "AvantGarde", "GothicRock", "ProgressiveRock", "PsychedelicRock", "SymphonicRock", "SlowRock", "BigBand", "Chorus", "EasyListening", "Acoustic", "Humour", "Speech", "Chanson", "Opera", "ChamberMusic", "Sonata", "Symphony", "BootyBass", "Primus", "PornGroove", "Satire", "SlowJam", "Club", "Tango", "Samba", "Folklore", "Ballad", "PowerBallad", "RhythmicSoul", "Freestyle", "Duet", "PunkRock", "DrumSolo", "Euro-House", "DanceHall", "Goa", "Drum&Bass", "Club-House", "Hardcore", "Terror", "Indie", "BritPop", "Negerpunk", "PolskPunk", "Beat", "ChristianGangstaRap", "HeavyMetal", "BlackMetal", "Crossover", "ContemporaryChristian", "ChristianRock", "Merengue", "Salsa", "ThrashMetal","Anime","JPop","SynthPop"); $this->genre = @$genre_list[$this->genre]; return true; } else { $this->tag = 'Not found tag informations!'; return true; }}fclose($file); } //--- End : ID3v1.x Read Tag Function //--- ID3v1.x Write Tag Function function write_tag($tip=1, $wtitle, $wartist, $walbum, $wyear, $wcomm, $wtrack, $wgenre) {$file = fopen($this->file_name, "r+b");if($file == false) { return false;}else { if($tip == 1) { fseek($file, -128, SEEK_END); fputs($file, 'TAG', 3); fputs($file, str_pad($wtitle, 30), 30); fputs($file, str_pad($wartist, 30), 30); fputs($file, str_pad($walbum, 30), 30); fputs($file, str_pad($wyear, 4), 4); fputs($file, str_pad($wcomm, 28), 28); fputs($file, str_pad(chr('null'), 1), 1); fputs($file, str_pad(chr($wtrack), 1), 1); fputs($file, str_pad(chr($wgenre), 1), 1); return true; } else if($tip == 2) { fseek($file, -128, SEEK_END); $empty = chr('null') . chr('null') . chr('null'); fputs($file, $empty, 3); return true; }}fclose($file); } //--- End : ID3v1.x Write Tag Function}//--- ID3v1.x Read/Write Class ---///--- Example ---//$mp3_file = "Baris Manco - Hal Hal.mp3";$ID3 = new ID3v1x($mp3_file);if($ID3->read_tag() == true) { echo "-] : File : $mp3_file<br>"; echo "-] : ----------------------------------<br>"; echo "-] : ID3v1 : $ID3->tag<br>"; echo "-] : Title : $ID3->title<br>"; echo "-] : Artist : $ID3->artist<br>"; echo "-] : Album : $ID3->album<br>"; echo "-] : Year : $ID3->year<br>"; echo "-] : Comment : $ID3->comm<br>"; echo "-] : Track : $ID3->track<br>"; echo "-] : Genre : $ID3->genre<br>"; echo "-] : ----------------------------------<br>";}else { echo "Error!";}//--- Example ---//?> P.S. Встроенная функция getID3() у PHP нету.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Format C Опубликовано 8 августа, 2007 Автор Жалоба Поделиться Опубликовано 8 августа, 2007 В данном скрипте не реализован листинг mp3 файлов, имена файлов указываются вручную прямо в коде скрипта $mp3_file = "Baris Manco - Hal Hal.mp3"; К тому же он работает только с тэгами id3v1. Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 8 августа, 2007 Жалоба Поделиться Опубликовано 8 августа, 2007 вы сказали что сам листинг для вас не проблем, так что я просто поискал скрипт для вывода ID3 тэгов... Да, работаеть с id3v1 Ладно, нашел еще изходники ( опять на phpclasses.org ), надеюсь помогуть http://www.phpclasses.org/browse/file/2185.html http://www.phpclasses.org/browse/file/5754.html Ссылка на комментарий Поделиться на другие сайты Поделиться
Format C Опубликовано 9 августа, 2007 Автор Жалоба Поделиться Опубликовано 9 августа, 2007 Я всё таки остановил свой выбор на скрипте getid3. Сделал всё что нужно: листинг, тэги. Но теперь возникла проблема с кодировкой :D При смене в файле getid3/getid3.php кодировки c 'ISO-8859-1' на 'Windows-1251' var $encoding = 'Windows-1251'; // CASE SENSITIVE! - i.e. (must be supported by iconv()) // Examples: ISO-8859-1 UTF-8 UTF-16 UTF-16BEvar $encoding_id3v1 = 'Windows-1251'; // Should always be 'ISO-8859-1', but some tags may be written in other encodings such as 'EUC-CN' получаю сообщение "Processing . . . .PHP does not have iconv() support - cannot convert from Windows-1251 to UTF-8" Подскажите пожалуйста как это можно исправить. Забыл указать версию скрипта getid3() v1.7.7 http://getid3.sourceforge.net Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 9 августа, 2007 Жалоба Поделиться Опубликовано 9 августа, 2007 (изменено) Вместо Windows-1251 попробуйте cp1251 P.S. под какой ОС работаете ВОзможно нужно установить libiconv InstallationTo use functions provided by this module, the PHP binary must be built with the following configure line: --with-iconv[=DIR]. Note to Windows® Users: In order to enable this module on a Windows® environment, you need to put a DLL file named iconv.dll or iconv-1.3.dll (prior to 4.2.1) which is bundled with the PHP/Win32 binary package into a directory specified by the PATH environment variable or one of the system directories of your Windows® installation. This module is part of PHP as of PHP 5 thus iconv.dll and php_iconv.dll is not needed anymore. Изменено 9 августа, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Format C Опубликовано 10 августа, 2007 Автор Жалоба Поделиться Опубликовано 10 августа, 2007 Вместо Windows-1251 попробуйте cp1251 P.S. под какой ОС работаете ВОзможно нужно установить libiconv Вместо Windows-1251 попробуйте cp1251 P.S. под какой ОС работаете ВОзможно нужно установить libiconv Сменил Windows-1251 на CP1251, результат тот же. Судя по информации с phpinfo библиотека iconv установлена. iconv iconv support enabled iconv implementation libiconv iconv library version 1.9 Directive Local Value Master Value iconv.input_encoding ISO-8859-1 ISO-8859-1 iconv.internal_encoding ISO-8859-1 ISO-8859-1 iconv.output_encoding ISO-8859-1 ISO-8859-1 Операционная система Unix, какая именно не знаю, скорее всего FreeBSD. В принципе если сменить во всех файлах скрипта ISO-8859-1, UTF-8, и UTF-16 на CP1251, то вся информация извлекаемая из id3 тэгов отображается нормально а вот названия самих файлов криво "Áàñòà - Ìàìà.mp3" http://www.tvhotu.ru/id3.jpg Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Fallout Опубликовано 14 декабря, 2007 Жалоба Поделиться Опубликовано 14 декабря, 2007 Сменил Windows-1251 на CP1251, результат тот же. Судя по информации с phpinfo библиотека iconv установлена. iconv iconv support enabled iconv implementation libiconv iconv library version 1.9 Directive Local Value Master Value iconv.input_encoding ISO-8859-1 ISO-8859-1 iconv.internal_encoding ISO-8859-1 ISO-8859-1 iconv.output_encoding ISO-8859-1 ISO-8859-1 Операционная система Unix, какая именно не знаю, скорее всего FreeBSD. В принципе если сменить во всех файлах скрипта ISO-8859-1, UTF-8, и UTF-16 на CP1251, то вся информация извлекаемая из id3 тэгов отображается нормально а вот названия самих файлов криво "Áàñòà - Ìàìà.mp3" http://www.tvhotu.ru/id3.jpg Я попробовал, как ты сказал “сменить во всех файлах скрипта ISO-8859-1, UTF-8, и UTF-16 на CP1251” у меня скрипт перестал работать. Может ты поделишься своим переделанным? Или может есть другой способ? Заранее большое спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти