• ARCHIVES 
  • » [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

Pages: 1

[quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

[quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

[quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini threat[/b][/color] gak usah lama lama aku akan terangin tutorialnya..... ada beberapa tahapan..... [hr][hr] [color=magenta][b]:arrow: STEP PERTAMA[/b][/color] Kita hanya butuh hostingan yan kompatible ama file php... [b]ingat hosting yang kompatible sama php[/b] aku gak perlu nerangin hosting mana yang kompatible aku rasa para member di sini sudah tahu akan hal itu.... [hr][hr] [color=magenta][b]:arrow: STEP KE DUA[/b][/color] Didalam Hosting kita bikin [b]folder baru[/b] beri nama folder tersebut dengan nama [b]flashmp3player[/b] [hr][hr] [color=magenta][b]:arrow: STEP KE TIGA[/b][/color] Di dalam folder [b]flashmp3player[/b] upload file JS di bawah ini dan jangan lupa kasih nama [b]swfobject.js[/b] [hr] [spoiler][color=blue]/** * SWFObject v1.4.4: Flash Player detection and embed by Dewi kunthi * Dewi kunthi at : http://profiles.friendster.com/kuntil4n4k * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for * legal reasons. */[/color] if(typeof deconcept=="undefined"){var deconcept=new Object();} if(typeof deconcept.util=="undefined"){deconcept.util=new Object();} if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();} deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;} this.DETECT_KEY=_b?_b:"detectflash"; this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY); this.params=new Object(); this.variables=new Object(); this.attributes=new Array(); if(_1){this.setAttribute("swf",_1);} if(id){this.setAttribute("id",id);} if(w){this.setAttribute("width",w);} if(h){this.setAttribute("height",h);} if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));} this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion(); if(c){this.addParam("bgcolor",c);} var q=_8?_8:"high"; this.addParam("quality",q); this.setAttribute("useExpressInstall",_7); this.setAttribute("doExpressInstall",false); var _d=(_9)?_9:window.location; this.setAttribute("xiRedirectUrl",_d); this.setAttribute("redirectUrl",""); if(_a){this.setAttribute("redirectUrl",_a);}}; deconcept.SWFObject.prototype={setAttribute:function(_e,_f){ this.attributes[_e]=_f; },getAttribute:function(_10){ return this.attributes[_10]; },addParam:function(_11,_12){ this.params[_11]=_12; },getParams:function(){ return this.params; },addVariable:function(_13,_14){ this.variables[_13]=_14; },getVariable:function(_15){ return this.variables[_15]; },getVariables:function(){ return this.variables; },getVariablePairs:function(){ var _16=new Array(); var key; var _18=this.getVariables(); for(key in _18){_16.push(key+"="+_18[key]);} return _16;},getSWFHTML:function(){var _19=""; if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){ if(this.getAttribute("doExpressInstall")){ this.addVariable("MMplayerType","PlugIn");} _19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\""; _19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" "; var _1a=this.getParams(); for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";} var _1c=this.getVariablePairs().join("&"); if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>"; }else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");} _19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">"; _19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />"; var _1d=this.getParams(); for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";} var _1f=this.getVariablePairs().join("&"); if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";} return _19; },write:function(_20){ if(this.getAttribute("useExpressInstall")){ var _21=new deconcept.PlayerVersion([6,0,65]); if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){ this.setAttribute("doExpressInstall",true); this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl"))); document.title=document.title.slice(0,47)+" - Flash Player Installation"; this.addVariable("MMdoctitle",document.title);}} if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){ var n=(typeof _20=="string")?document.getElementById(_20):_20; n.innerHTML=this.getSWFHTML();return true; }else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}} return false;}}; deconcept.SWFObjectUtil.getPlayerVersion=function(){ var _23=new deconcept.PlayerVersion([0,0,0]); if(navigator.plugins&&navigator.mimeTypes.length){ var x=navigator.plugins["Shockwave Flash"]; if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));} }else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");} catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); _23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";} catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");} catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}} return _23;}; deconcept.PlayerVersion=function(_27){ this.major=_27[0]!=null?parseInt(_27[0]):0; this.minor=_27[1]!=null?parseInt(_27[1]):0; this.rev=_27[2]!=null?parseInt(_27[2]):0; }; deconcept.PlayerVersion.prototype.versionIsValid=function(fv){ if(this.major<fv.major){return false;} if(this.major>fv.major){return true;} if(this.minor<fv.minor){return false;} if(this.minor>fv.minor){return true;} if(this.rev<fv.rev){ return false; }return true;}; deconcept.util={getRequestParameter:function(_29){ var q=document.location.search||document.location.hash; if(q){var _2b=q.substring(1).split("&"); for(var i=0;i<_2b.length;i++){ if(_2b[i].substring(0,_2b[i].indexOf("="))==_29){ return _2b[i].substring((_2b[i].indexOf("=")+1));}}} return "";}}; deconcept.SWFObjectUtil.cleanupSWFs=function(){if(window.opera||!document.all){return;} var _2d=document.getElementsByTagName("OBJECT"); for(var i=0;i<_2d.length;i++){_2d[i].style.display="none";for(var x in _2d[i]){ if(typeof _2d[i][x]=="function"){_2d[i][x]=function(){};}}}}; deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){}; __flash_savedUnloadHandler=function(){}; if(typeof window.onunload=="function"){ var _30=window.onunload; window.onunload=function(){ deconcept.SWFObjectUtil.cleanupSWFs();_30();}; }else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}}; if(typeof window.onbeforeunload=="function"){ var oldBeforeUnload=window.onbeforeunload; window.onbeforeunload=function(){ deconcept.SWFObjectUtil.prepUnload(); oldBeforeUnload();}; }else{window.onbeforeunload=deconcept.SWFObjectUtil.prepUnload;} if(Array.prototype.push==null){ Array.prototype.push=function(_31){ this[this.length]=_31; return this.length;};} var getQueryParamValue=deconcept.util.getRequestParameter; var FlashObject=deconcept.SWFObject; var SWFObject=deconcept.SWFObject;[/spoiler] [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE EMPAT[/b][/color] Di dalam folder [b]flashmp3player[/b] upload file PHP di bawah ini dan jangan lupa kasih nama [b]flashmp3player.php[/b] [hr] [spoiler]<?php //player will not scan this folders $exclude_files = array( "_derived", "_private", "_vti_cnf", "_vti_pvt", "vti_script", "_vti_txt" ); //READING ID3 TAGS // id3 tags converting to utf-8 function conv($str) { for ( $i = 0, $length = strlen($str); $i < $length; $i++ ) { if((ord($str[$i])=='0'||ord($str[$i])=='4')){ $str1 = $str1; }else{ $str1 = $str1.$str[$i];} } if( ( strpos($str1,chr(209).chr(143).chr(209).chr(142)) === 0) ) { $str2 = substr($str1, 4); $str1 = $str2;}else{$str1 = $str1;} return $str1; } function detectUTF8($string) { return preg_match('%(?: [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte |\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs |[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte |\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates |\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 |[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 |\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )+%xs', $string); } function cp1251_utf8( $sInput ) { $sOutput = ""; for ( $i = 0; $i < strlen( $sInput ); $i++ ) { $iAscii = ord( $sInput[$i] ); if ( $iAscii >= 192 && $iAscii <= 255 ) $sOutput .= "&#".( 1040 + ( $iAscii - 192 ) ).";"; else if ( $iAscii == 168 ) $sOutput .= "&#".( 1025 ).";"; else if ( $iAscii == 184 ) $sOutput .= "&#".( 1105 ).";"; else $sOutput .= $sInput[$i]; } return $sOutput; } function encoding($string){ if (function_exists('iconv')) { if (@!iconv('utf-8', 'cp1251', $string)) { $string = iconv('cp1251', 'utf-8', $string); } return $string; } else { if (detectUTF8($string)) { return $string; } else { return cp1251_utf8($string); } } } error_reporting(0); //errors $errors[0] = '';//means no error. (Change it and things can become very strange) $errors[1] = 'File Name not set'; $errors[2] = 'Unable to open MP3 file'; $errors[3] = 'ID3v2 Tag not found on this file'; $errors[4] = 'TAG not Supported'; $errors[5] = 'Tag not found(maybe you need to call getInfo() first?)'; //pear define('PEAR_ERROR_RETURN', 1); define('PEAR_ERROR_PRINT', 2); define('PEAR_ERROR_TRIGGER', 4); define('PEAR_ERROR_DIE', 8); define('PEAR_ERROR_CALLBACK', 16); define('PEAR_ERROR_EXCEPTION', 32); define('PEAR_ZE2', (function_exists('version_compare') && version_compare(zend_version(), "2-dev", "ge"))); if (substr(PHP_OS, 0, 3) == 'WIN') { define('OS_WINDOWS', true); define('OS_UNIX', false); define('PEAR_OS', 'Windows'); } else { define('OS_WINDOWS', false); define('OS_UNIX', true); define('PEAR_OS', 'Unix'); } if (!defined('PATH_SEPARATOR')) { if (OS_WINDOWS) { define('PATH_SEPARATOR', ';'); } else { define('PATH_SEPARATOR', ':'); } } $GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; $GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; $GLOBALS['_PEAR_destructor_object_list'] = array(); $GLOBALS['_PEAR_shutdown_funcs'] = array(); $GLOBALS['_PEAR_error_handler_stack'] = array(); @ini_set('track_errors', true); class PEAR { var $_debug = false; var $_default_error_mode = null; var $_default_error_options = null; var $_default_error_handler = ''; var $_error_class = 'PEAR_Error'; var $_expected_errors = array(); function PEAR($error_class = null) { $classname = strtolower(get_class($this)); if ($this->_debug) { print "PEAR constructor called, class=$classname\n"; } if ($error_class !== null) { $this->_error_class = $error_class; } while ($classname && strcasecmp($classname, "pear")) { $destructor = "_$classname"; if (method_exists($this, $destructor)) { global $_PEAR_destructor_object_list; $_PEAR_destructor_object_list[] = &$this; if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { register_shutdown_function("_PEAR_call_destructors"); $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; } break; } else { $classname = get_parent_class($classname); } } } function _PEAR() { if ($this->_debug) { printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); } } function &getStaticProperty($class, $var) { static $properties; return $properties[$class][$var]; } function registerShutdownFunc($func, $args = array()) { if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { register_shutdown_function("_PEAR_call_destructors"); $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; } $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); } function isError($data, $code = null) { if (is_a($data, 'PEAR_Error')) { if (is_null($code)) { return true; } elseif (is_string($code)) { return $data->getMessage() == $code; } else { return $data->getCode() == $code; } } return false; } function setErrorHandling($mode = null, $options = null) { if (isset($this) && is_a($this, 'PEAR')) { $setmode = &$this->_default_error_mode; $setoptions = &$this->_default_error_options; } else { $setmode = &$GLOBALS['_PEAR_default_error_mode']; $setoptions = &$GLOBALS['_PEAR_default_error_options']; } switch ($mode) { case PEAR_ERROR_EXCEPTION: case PEAR_ERROR_RETURN: case PEAR_ERROR_PRINT: case PEAR_ERROR_TRIGGER: case PEAR_ERROR_DIE: case null: $setmode = $mode; $setoptions = $options; break; case PEAR_ERROR_CALLBACK: $setmode = $mode; if (is_callable($options)) { $setoptions = $options; } else { trigger_error("invalid error callback", E_USER_WARNING); } break; default: trigger_error("invalid error mode", E_USER_WARNING); break; } } function expectError($code = '*') { if (is_array($code)) { array_push($this->_expected_errors, $code); } else { array_push($this->_expected_errors, array($code)); } return sizeof($this->_expected_errors); } function popExpect() { return array_pop($this->_expected_errors); } function _checkDelExpect($error_code) { $deleted = false; foreach ($this->_expected_errors AS $key => $error_array) { if (in_array($error_code, $error_array)) { unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); $deleted = true; } if (0 == count($this->_expected_errors[$key])) { unset($this->_expected_errors[$key]); } } return $deleted; } function delExpect($error_code) { $deleted = false; if ((is_array($error_code) && (0 != count($error_code)))) { foreach($error_code as $key => $error) { if ($this->_checkDelExpect($error)) { $deleted = true; } else { $deleted = false; } } return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME } elseif (!empty($error_code)) { if ($this->_checkDelExpect($error_code)) { return true; } else { return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME } } else { return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME } } function &raiseError($message = null, $code = null, $mode = null, $options = null, $userinfo = null, $error_class = null, $skipmsg = false) { if (is_object($message)) { $code = $message->getCode(); $userinfo = $message->getUserInfo(); $error_class = $message->getType(); $message->error_message_prefix = ''; $message = $message->getMessage(); } if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { if ($exp[0] == "*" || (is_int(reset($exp)) && in_array($code, $exp)) || (is_string(reset($exp)) && in_array($message, $exp))) { $mode = PEAR_ERROR_RETURN; } } if ($mode === null) { if (isset($this) && isset($this->_default_error_mode)) { $mode = $this->_default_error_mode; $options = $this->_default_error_options; } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { $mode = $GLOBALS['_PEAR_default_error_mode']; $options = $GLOBALS['_PEAR_default_error_options']; } } if ($error_class !== null) { $ec = $error_class; } elseif (isset($this) && isset($this->_error_class)) { $ec = $this->_error_class; } else { $ec = 'PEAR_Error'; } if ($skipmsg) { $a = &new $ec($code, $mode, $options, $userinfo); return $a; } else { $a = &new $ec($message, $code, $mode, $options, $userinfo); return $a; } } function &throwError($message = null, $code = null, $userinfo = null) { if (isset($this) && is_a($this, 'PEAR')) { $a = &$this->raiseError($message, $code, null, null, $userinfo); return $a; } else { $a = &PEAR::raiseError($message, $code, null, null, $userinfo); return $a; } } function staticPushErrorHandling($mode, $options = null) { $stack = &$GLOBALS['_PEAR_error_handler_stack']; $def_mode = &$GLOBALS['_PEAR_default_error_mode']; $def_options = &$GLOBALS['_PEAR_default_error_options']; $stack[] = array($def_mode, $def_options); switch ($mode) { case PEAR_ERROR_EXCEPTION: case PEAR_ERROR_RETURN: case PEAR_ERROR_PRINT: case PEAR_ERROR_TRIGGER: case PEAR_ERROR_DIE: case null: $def_mode = $mode; $def_options = $options; break; case PEAR_ERROR_CALLBACK: $def_mode = $mode; if (is_callable($options)) { $def_options = $options; } else { trigger_error("invalid error callback", E_USER_WARNING); } break; default: trigger_error("invalid error mode", E_USER_WARNING); break; } $stack[] = array($mode, $options); return true; } function staticPopErrorHandling() { $stack = &$GLOBALS['_PEAR_error_handler_stack']; $setmode = &$GLOBALS['_PEAR_default_error_mode']; $setoptions = &$GLOBALS['_PEAR_default_error_options']; array_pop($stack); list($mode, $options) = $stack[sizeof($stack) - 1]; array_pop($stack); switch ($mode) { case PEAR_ERROR_EXCEPTION: case PEAR_ERROR_RETURN: case PEAR_ERROR_PRINT: case PEAR_ERROR_TRIGGER: case PEAR_ERROR_DIE: case null: $setmode = $mode; $setoptions = $options; break; case PEAR_ERROR_CALLBACK: $setmode = $mode; if (is_callable($options)) { $setoptions = $options; } else { trigger_error("invalid error callback", E_USER_WARNING); } break; default: trigger_error("invalid error mode", E_USER_WARNING); break; } return true; } function pushErrorHandling($mode, $options = null) { $stack = &$GLOBALS['_PEAR_error_handler_stack']; if (isset($this) && is_a($this, 'PEAR')) { $def_mode = &$this->_default_error_mode; $def_options = &$this->_default_error_options; } else { $def_mode = &$GLOBALS['_PEAR_default_error_mode']; $def_options = &$GLOBALS['_PEAR_default_error_options']; } $stack[] = array($def_mode, $def_options); if (isset($this) && is_a($this, 'PEAR')) { $this->setErrorHandling($mode, $options); } else { PEAR::setErrorHandling($mode, $options); } $stack[] = array($mode, $options); return true; } function popErrorHandling() { $stack = &$GLOBALS['_PEAR_error_handler_stack']; array_pop($stack); list($mode, $options) = $stack[sizeof($stack) - 1]; array_pop($stack); if (isset($this) && is_a($this, 'PEAR')) { $this->setErrorHandling($mode, $options); } else { PEAR::setErrorHandling($mode, $options); } return true; } function loadExtension($ext) { if (!extension_loaded($ext)) { if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) { return false; } if (OS_WINDOWS) { $suffix = '.dll'; } elseif (PHP_OS == 'HP-UX') { $suffix = '.sl'; } elseif (PHP_OS == 'AIX') { $suffix = '.a'; } elseif (PHP_OS == 'OSX') { $suffix = '.bundle'; } else { $suffix = '.so'; } return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); } return true; } } function _PEAR_call_destructors() { global $_PEAR_destructor_object_list; if (is_array($_PEAR_destructor_object_list) && sizeof($_PEAR_destructor_object_list)) { reset($_PEAR_destructor_object_list); if (@PEAR::getStaticProperty('PEAR', 'destructlifo')) { $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); } while (list($k, $objref) = each($_PEAR_destructor_object_list)) { $classname = get_class($objref); while ($classname) { $destructor = "_$classname"; if (method_exists($objref, $destructor)) { $objref->$destructor(); break; } else { $classname = get_parent_class($classname); } } } $_PEAR_destructor_object_list = array(); } if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) { foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { call_user_func_array($value[0], $value[1]); } } } class PEAR_Error { var $error_message_prefix = ''; var $mode = PEAR_ERROR_RETURN; var $level = E_USER_NOTICE; var $code = -1; var $message = ''; var $userinfo = ''; var $backtrace = null; function PEAR_Error($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { if ($mode === null) { $mode = PEAR_ERROR_RETURN; } $this->message = $message; $this->code = $code; $this->mode = $mode; $this->userinfo = $userinfo; if (function_exists("debug_backtrace")) { if (@!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) { $this->backtrace = debug_backtrace(); } } if ($mode & PEAR_ERROR_CALLBACK) { $this->level = E_USER_NOTICE; $this->callback = $options; } else { if ($options === null) { $options = E_USER_NOTICE; } $this->level = $options; $this->callback = null; } if ($this->mode & PEAR_ERROR_PRINT) { if (is_null($options) || is_int($options)) { $format = "%s"; } else { $format = $options; } printf($format, $this->getMessage()); } if ($this->mode & PEAR_ERROR_TRIGGER) { trigger_error($this->getMessage(), $this->level); } if ($this->mode & PEAR_ERROR_DIE) { $msg = $this->getMessage(); if (is_null($options) || is_int($options)) { $format = "%s"; if (substr($msg, -1) != "\n") { $msg .= "\n"; } } else { $format = $options; } die(sprintf($format, $msg)); } if ($this->mode & PEAR_ERROR_CALLBACK) { if (is_callable($this->callback)) { call_user_func($this->callback, $this); } } if ($this->mode & PEAR_ERROR_EXCEPTION) { trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING); eval('$e = new Exception($this->message, $this->code);throw($e);'); } } function getMode() { return $this->mode; } function getCallback() { return $this->callback; } function getMessage() { return ($this->error_message_prefix . $this->message); } function getCode() { return $this->code; } function getType() { return get_class($this); } function getUserInfo() { return $this->userinfo; } function getDebugInfo() { return $this->getUserInfo(); } function getBacktrace($frame = null) { if (defined('PEAR_IGNORE_BACKTRACE')) { return null; } if ($frame === null) { return $this->backtrace; } return $this->backtrace[$frame]; } function addUserInfo($info) { if (empty($this->userinfo)) { $this->userinfo = $info; } else { $this->userinfo .= " ** $info"; } } function toString() { $modes = array(); $levels = array(E_USER_NOTICE => 'notice', E_USER_WARNING => 'warning', E_USER_ERROR => 'error'); if ($this->mode & PEAR_ERROR_CALLBACK) { if (is_array($this->callback)) { $callback = (is_object($this->callback[0]) ? strtolower(get_class($this->callback[0])) : $this->callback[0]) . '::' . $this->callback[1]; } else { $callback = $this->callback; } return sprintf('[%s: message="%s" code=%d mode=callback '. 'callback=%s prefix="%s" info="%s"]', strtolower(get_class($this)), $this->message, $this->code, $callback, $this->error_message_prefix, $this->userinfo); } if ($this->mode & PEAR_ERROR_PRINT) { $modes[] = 'print'; } if ($this->mode & PEAR_ERROR_TRIGGER) { $modes[] = 'trigger'; } if ($this->mode & PEAR_ERROR_DIE) { $modes[] = 'die'; } if ($this->mode & PEAR_ERROR_RETURN) { $modes[] = 'return'; } return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. 'prefix="%s" info="%s"]', strtolower(get_class($this)), $this->message, $this->code, implode("|", $modes), $levels[$this->level], $this->error_message_prefix, $this->userinfo); } } //id3 v1 define('PEAR_MP3_ID_FNO', 1); define('PEAR_MP3_ID_RE', 2); define('PEAR_MP3_ID_TNF', 3); define('PEAR_MP3_ID_NOMP3', 4); class MP3_Id { var $file = false; var $id3v1 = false; var $id3v11 = false; var $id3v2 = false; var $name = ''; var $artists = ''; var $album = ''; var $year = ''; var $comment = ''; var $track = 0; var $genre = ''; var $genreno = 255; var $studied = false; var $mpeg_ver = 0; var $layer = 0; var $bitrate = 0; var $crc = false; var $frequency = 0; var $encoding_type = 0; var $samples_per_frame = 0; var $samples = 0; var $musicsize = -1; var $frames = 0; var $quality = 0; var $padding = false; var $private = false; var $mode = ''; var $copyright = false; var $original = false; var $emphasis = ''; var $filesize = -1; var $frameoffset = -1; var $lengthh = false; var $length = false; var $lengths = false; var $error = false; var $debug = false; var $debugbeg = '<DIV STYLE="margin: 0.5 em; padding: 0.5 em; border-width: thin; border-color: black; border-style: solid">'; var $debugend = '</DIV>'; ////////////////////////////////////////////////// function MP3_Id($study = false) { if(defined('ID3_SHOW_DEBUG')) $this->debug = true; $this->study=($study || defined('ID3_AUTO_STUDY')); } ///////////////////////////////////////////////// function read( $file="") { if ($this->debug) print($this->debugbeg . "id3('$file')<HR>\n"); if(!empty($file))$this->file = $file; if ($this->debug) print($this->debugend); return $this->_read_v1(); } ///////////////////////////////////////////////// function setTag($name, $value) { if( is_array($name)) { foreach( $name as $n => $v) { $this -> $n = $v ; } } else { $this -> $name = $value ; } } ///////////////////////////////////////////////// function getTag($name, $default = 0) { if(empty($this -> $name)) { return $default ; } else { return $this -> $name ; } } ////////////////////////////////////////////////// function write($v1 = true) { if ($this->debug) print($this->debugbeg . "write()<HR>\n"); if ($v1) { $this->_write_v1(); } if ($this->debug) print($this->debugend); } function study() { $this->studied = true; $this->_readframe(); } ///////////////////////////////////////////////////// function copy($from) { if ($this->debug) print($this->debugbeg . "copy(\$from)<HR>\n"); $this->name = $from->name; $this->artists = $from->artists; $this->album = $from->album; $this->year = $from->year; $this->comment = $from->comment; $this->track = $from->track; $this->genre = $from->genre; $this->genreno = $from->genreno; if ($this->debug) print($this->debugend); } /////////////////////////////////////////////////// function remove($id3v1 = true, $id3v2 = true) { if ($this->debug) print($this->debugbeg . "remove()<HR>\n"); if ($id3v1) { $this->_remove_v1(); } if ($id3v2) { } if ($this->debug) print($this->debugend); } ////////////////////////////////////////////////// function _read_v1() { if ($this->debug) print($this->debugbeg . "_read_v1()<HR>\n"); $mqr = get_magic_quotes_runtime(); set_magic_quotes_runtime(0); if (! ($f = @fopen($this->file, 'rb')) ) { return PEAR::raiseError( "Unable to open " . $this->file, PEAR_MP3_ID_FNO); } if (fseek($f, -128, SEEK_END) == -1) { return PEAR::raiseError( 'Unable to see to end - 128 of ' . $this->file, PEAR_MP3_ID_RE); } $r = fread($f, 128); fclose($f); set_magic_quotes_runtime($mqr); if ($this->debug) { $unp = unpack('H*raw', $r); print_r($unp); } $id3tag = $this->_decode_v1($r); if(!PEAR::isError( $id3tag)) { $this->id3v1 = true; $tmp = explode(Chr(0), $id3tag['NAME']); $this->name = $tmp[0]; $tmp = explode(Chr(0), $id3tag['ARTISTS']); $this->artists = $tmp[0]; $tmp = explode(Chr(0), $id3tag['ALBUM']); $this->album = $tmp[0]; $tmp = explode(Chr(0), $id3tag['YEAR']); $this->year = $tmp[0]; $tmp = explode(Chr(0), $id3tag['COMMENT']); $this->comment = $tmp[0]; if (isset($id3tag['TRACK'])) { $this->id3v11 = true; $this->track = $id3tag['TRACK']; } $this->genreno = $id3tag['GENRENO']; $this->genre = $id3tag['GENRE']; } else { return $id3tag ; } if ($this->debug) print($this->debugend); } /////////////////////////////////////////////// function _decode_v1($rawtag) { if ($this->debug) print($this->debugbeg . "_decode_v1(\$rawtag)<HR>\n"); if ($rawtag[125] == Chr(0) and $rawtag[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, $rawtag); if ($this->debug) print_r($id3tag); if ($id3tag['TAG'] == 'TAG') { $id3tag['GENRE'] = $this->getgenre($id3tag['GENRENO']); } else { $id3tag = PEAR::raiseError( 'TAG not found', PEAR_MP3_ID_TNF); } if ($this->debug) print($this->debugend); return $id3tag; } ////////////////////////////////////// function _write_v1() { if ($this->debug) print($this->debugbeg . "_write_v1()<HR>\n"); $file = $this->file; if (! ($f = @fopen($file, 'r+b')) ) { return PEAR::raiseError( "Unable to open " . $file, PEAR_MP3_ID_FNO); } if (fseek($f, -128, SEEK_END) == -1) { return PEAR::raiseError( "Unable to see to end - 128 of " . $file, PEAR_MP3_ID_RE); } $this->genreno = $this->getgenreno($this->genre, $this->genreno); $newtag = $this->_encode_v1(); $mqr = get_magic_quotes_runtime(); set_magic_quotes_runtime(0); $r = fread($f, 128); if ( !PEAR::isError( $this->_decode_v1($r))) { if (fseek($f, -128, SEEK_END) == -1) { return PEAR::raiseError( "Unable to see to end - 128 of " . $file, PEAR_MP3_ID_RE); } fwrite($f, $newtag); } else { if (fseek($f, 0, SEEK_END) == -1) { return PEAR::raiseError( "Unable to see to end of " . $file, PEAR_MP3_ID_RE); } fwrite($f, $newtag); } fclose($f); set_magic_quotes_runtime($mqr); if ($this->debug) print($this->debugend); } ////////////////////////////////////////////////// function _encode_v1() { if ($this->debug) print($this->debugbeg . "_encode_v1()<HR>\n"); if ($this->track) { $id3pack = 'a3a30a30a30a4a28x1C1C1'; $newtag = pack($id3pack, 'TAG', $this->name, $this->artists, $this->album, $this->year, $this->comment, $this->track, $this->genreno ); } else { $id3pack = 'a3a30a30a30a4a30C1'; $newtag = pack($id3pack, 'TAG', $this->name, $this->artists, $this->album, $this->year, $this->comment, $this->genreno ); } if ($this->debug) { print('id3pack: ' . $id3pack . "\n"); $unp = unpack('H*new', $newtag); print_r($unp); } if ($this->debug) print($this->debugend); return $newtag; } /////////////////////////////////////////////// function _remove_v1() { if ($this->debug) print($this->debugbeg . "_remove_v1()<HR>\n"); $file = $this->file; if (! ($f = fopen($file, 'r+b')) ) { return PEAR::raiseError( "Unable to open " . $file, PEAR_MP3_ID_FNO); } if (fseek($f, -128, SEEK_END) == -1) { return PEAR::raiseError( 'Unable to see to end - 128 of ' . $file, PEAR_MP3_ID_RE); } $mqr = get_magic_quotes_runtime(); set_magic_quotes_runtime(0); $r = fread($f, 128); $success = false; if ( !PEAR::isError( $this->_decode_v1($r))) { $size = filesize($this->file) - 128; if ($this->debug) print('size: old: ' . filesize($this->file)); $success = ftruncate($f, $size); clearstatcache(); if ($this->debug) print(' new: ' . filesize($this->file)); } fclose($f); set_magic_quotes_runtime($mqr); if ($this->debug) print($this->debugend); return $success; } ////////////////////////////////////////////////// function _readframe() { if ($this->debug) print($this->debugbeg . "_readframe()<HR>\n"); $file = $this->file; $mqr = get_magic_quotes_runtime(); set_magic_quotes_runtime(0); if (! ($f = fopen($file, 'rb')) ) { if ($this->debug) print($this->debugend); return PEAR::raiseError( "Unable to open " . $file, PEAR_MP3_ID_FNO) ; } $this->filesize = filesize($file); do { while (fread($f,1) != Chr(255)) { if ($this->debug) echo "Find...\n"; if (feof($f)) { if ($this->debug) print($this->debugend); return PEAR::raiseError( "No mpeg frame found", PEAR_MP3_ID_NOMP3) ; } } fseek($f, ftell($f) - 1); $frameoffset = ftell($f); $r = fread($f, 4); $bits = sprintf("%'08b%'08b%'08b%'08b", ord($r{0}), ord($r{1}), ord($r{2}), ord($r{3})); } while (!$bits[8] and !$bits[9] and !$bits[10]); if ($this->debug) print('Bits: ' . $bits . "\n"); $this->frameoffset = $frameoffset; if ($bits[11] == 0) { if (($bits[24] == 1) && ($bits[25] == 1)) { $vbroffset = 9; } else { $vbroffset = 17; } } else if ($bits[12] == 0) { if (($bits[24] == 1) && ($bits[25] == 1)) { $vbroffset = 9; } else { $vbroffset = 17; } } else { if (($bits[24] == 1) && ($bits[25] == 1)) { $vbroffset = 17; } else { $vbroffset = 32; } } fseek($f, ftell($f) + $vbroffset); $r = fread($f, 4); switch ($r) { case 'Xing': $this->encoding_type = 'VBR'; case 'Info': if ($this->debug) print('Encoding Header: ' . $r . "\n"); $r = fread($f, 4); $vbrbits = sprintf("%'08b", ord($r{3})); if ($this->debug) print('XING Header Bits: ' . $vbrbits . "\n"); if ($vbrbits[7] == 1) { $r = fread($f, 4); $this->frames = unpack('N', $r); $this->frames = $this->frames[1]; } if ($vbrbits[6] == 1) { $r = fread($f, 4); $this->musicsize = unpack('N', $r); $this->musicsize = $this->musicsize[1]; } if ($vbrbits[5] == 1) { fseek($f, ftell($f) + 100); } if ($vbrbits[4] == 1) { $r = fread($f, 4); $this->quality = unpack('N', $r); $this->quality = $this->quality[1]; } break; case 'VBRI': default: if ($vbroffset != 32) { fseek($f, ftell($f) + 32 - $vbroffset); $r = fread($f, 4); if ($r != 'VBRI') { $this->encoding_type = 'CBR'; break; } } else { $this->encoding_type = 'CBR'; break; } if ($this->debug) print('Encoding Header: ' . $r . "\n"); $this->encoding_type = 'VBR'; fseek($f, ftell($f) + 2); fseek($f, ftell($f) + 2); $r = fread($f, 2); $this->quality = unpack('n', $r); $this->quality = $this->quality[1]; $r = fread($f, 4); $this->musicsize = unpack('N', $r); $this->musicsize = $this->musicsize[1]; $r = fread($f, 4); $this->frames = unpack('N', $r); $this->frames = $this->frames[1]; } fclose($f); set_magic_quotes_runtime($mqr); if ($bits[11] == 0) { $this->mpeg_ver = "2.5"; $bitrates = array( '1' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0), '2' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0), '3' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0), ); } else if ($bits[12] == 0) { $this->mpeg_ver = "2"; $bitrates = array( '1' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0), '2' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0), '3' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0), ); } else { $this->mpeg_ver = "1"; $bitrates = array( '1' => array(0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 0), '2' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 0), '3' => array(0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0), ); } if ($this->debug) print('MPEG' . $this->mpeg_ver . "\n"); $layer = array( array(0,3), array(2,1), ); $this->layer = $layer[$bits[13]][$bits[14]]; if ($this->debug) print('layer: ' . $this->layer . "\n"); if ($bits[15] == 0) { if ($this->debug) print("protected (crc)\n"); $this->crc = true; } $bitrate = 0; if ($bits[16] == 1) $bitrate += 8; if ($bits[17] == 1) $bitrate += 4; if ($bits[18] == 1) $bitrate += 2; if ($bits[19] == 1) $bitrate += 1; $this->bitrate = $bitrates[$this->layer][$bitrate]; $frequency = array( '1' => array( '0' => array(44100, 48000), '1' => array(32000, 0), ), '2' => array( '0' => array(22050, 24000), '1' => array(16000, 0), ), '2.5' => array( '0' => array(11025, 12000), '1' => array(8000, 0), ), ); $this->frequency = $frequency[$this->mpeg_ver][$bits[20]][$bits[21]]; $this->padding = $bits[22]; $this->private = $bits[23]; $mode = array( array('Stereo', 'Joint Stereo'), array('Dual Channel', 'Mono'), ); $this->mode = $mode[$bits[24]][$bits[25]]; $this->copyright = $bits[28]; $this->original = $bits[29]; $emphasis = array( array('none', '50/15ms'), array('', 'CCITT j.17'), ); $this->emphasis = $emphasis[$bits[30]][$bits[31]]; $samplesperframe = array( '1' => array( '1' => 384, '2' => 1152, '3' => 1152 ), '2' => array( '1' => 384, '2' => 1152, '3' => 576 ), '2.5' => array( '1' => 384, '2' => 1152, '3' => 576 ), ); $this->samples_per_frame = $samplesperframe[$this->mpeg_ver][$this->layer]; if ($this->encoding_type != 'VBR') { if ($this->bitrate == 0) { $s = -1; } else { $s = ((8*filesize($this->file))/1000) / $this->bitrate; } $this->length = sprintf('%02d:%02d',floor($s/60),floor($s-(floor($s/60)*60))); $this->lengthh = sprintf('%02d:%02d:%02d',floor($s/3600),floor($s/60),floor($s-(floor($s/60)*60))); $this->lengths = (int)$s; $this->samples = ceil($this->lengths * $this->frequency); if(0 != $this->samples_per_frame) { $this->frames = ceil($this->samples / $this->samples_per_frame); } else { $this->frames = 0; } $this->musicsize = ceil($this->lengths * $this->bitrate * 1000 / 8); } else { $this->samples = $this->samples_per_frame * $this->frames; $s = $this->samples / $this->frequency; $this->length = sprintf('%02d:%02d',floor($s/60),floor($s-(floor($s/60)*60))); $this->lengthh = sprintf('%02d:%02d:%02d',floor($s/3600),floor($s/60),floor($s-(floor($s/60)*60))); $this->lengths = (int)$s; $this->bitrate = (int)(($this->musicsize / $s) * 8 / 1000); } if ($this->debug) print($this->debugend); } //////////////////////////////////////////// function getGenre($genreno) { if ($this->debug) print($this->debugbeg . "getgenre($genreno)<HR>\n"); $genres = $this->genres(); if (isset($genres[$genreno])) { $genre = $genres[$genreno]; if ($this->debug) print($genre . "\n"); } else { $genre = ''; } if ($this->debug) print($this->debugend); return $genre; } //////////////////////////////////////////// function getGenreNo($genre, $default = 0xff) { if ($this->debug) print($this->debugbeg . "getgenreno('$genre',$default)<HR>\n"); $genres = $this->genres(); $genreno = false; if ($genre) { foreach ($genres as $no => $name) { if (strtolower($genre) == strtolower($name)) { if ($this->debug) print("$no:'$name' == '$genre'"); $genreno = $no; } } } if ($genreno === false) $genreno = $default; if ($this->debug) print($this->debugend); return $genreno; } //////////////////////////////////////////// function genres() { return 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' ); } } //id3 v2 class ID3{ var $file_name=''; //full path to the file //the sugestion is that this path should be a //relative path var $tags; //array with ID3 tags extracted from the file var $last_error_num=0; //keep the number of the last error ocurred var $tags_count = 0; // the number of elements at the tags array /*********************/ /**private functions**/ /*********************/ function hex2bin($data) { //thankz for the one who wrote this function //If iknew your name I would say it here $len = strlen($data); for($i=0;$i<$len;$i+=2) { $newdata .= pack("C",hexdec(substr($data,$i,2))); } return $newdata; } function get_frame_size($fourBytes){ $tamanho[0] = str_pad(base_convert(substr($fourBytes,0,2),16,2),7,0,STR_PAD_LEFT); $tamanho[1] = str_pad(base_convert(substr($fourBytes,2,2),16,2),7,0,STR_PAD_LEFT); $tamanho[2] = str_pad(base_convert(substr($fourBytes,4,2),16,2),7,0,STR_PAD_LEFT); $tamanho[3] = str_pad(base_convert(substr($fourBytes,6,2),16,2),7,0,STR_PAD_LEFT); $total = $tamanho[0].$tamanho[1].$tamanho[2].$tamanho[3]; $tamanho[0] = substr($total,0,8); $tamanho[1] = substr($total,8,8); $tamanho[2] = substr($total,16,8); $tamanho[3] = substr($total,24,8); $total = $tamanho[0].$tamanho[1].$tamanho[2].$tamanho[3]; $total = base_convert($total,2,10); return $total; } function extractTags($text,&$tags){ $size = -1;//inicializando diferente de zero para n?o sair do while while ((strlen($text) != 0) and ($size != 0)){ //while there are tags to read and they have a meaning //while existem tags a serem tratadas e essas tags tem conteudo $ID = substr($text,0,4); $aux = substr($text,4,4); $aux = bin2hex($aux); $size = $this->get_frame_size($aux); $flags = substr($text,8,2); $info = substr($text,11,$size-1); if ($size != 0){ $tags[$ID] = $info; $this->tags_count++; } $text = substr($text,10+$size,strlen($text)); } } /********************/ /**public functions**/ /********************/ /**Constructor**/ function ID3($file_name){ $this->file_name = $file_name; $this->last_error_num = 0; } /**Read the file and put the TAGS content on $this->tags array**/ function getInfo(){ if ($this->file_name != ''){ $mp3 = @fopen($this->file_name,"r"); $header = @fread($mp3,10); if (!$header) { $this->last_error_num = 2; return false; die(); } if (substr($header,0,3) != "ID3"){ $this->last_error_num = 3; return false; die(); } $header = bin2hex($header); $version = base_convert(substr($header,6,2),16,10).".".base_convert(substr($header,8,2),16,10); $flags = base_convert(substr($header,10,2),16,2); $flags = str_pad($flags,8,0,STR_PAD_LEFT); if ($flags[7] == 1){ //echo('with Unsynchronisation<br>'); } if ($flags[6] == 1){ //echo('with Extended header<br>'); } if ($flags[5] == 1){//Esperimental tag $this->last_error_num = 4; return false; die(); } $total = $this->get_frame_size(substr($header,12,8)); $text = @fread($mp3,$total); fclose($mp3); $this->extractTags($text,$this->tags); } else{ $this->last_error_num = 1;//file not set return false; die(); } return true; } /************* * PUBLIC * Functions to get information * from the ID3 tag **************/ function getArtist(){ if (array_key_exists('TPE1',$this->tags)){ return $this->tags['TPE1']; }else{ $this->last_error_num = 5; return false; } } function getTrack(){ if (array_key_exists('TRCK',$this->tags)){ return $this->tags['TRCK']; }else{ $this->last_error_num = 5; return false; } } function getTitle(){ if (array_key_exists('TIT2',$this->tags)){ return $this->tags['TIT2']; }else{ $this->last_error_num = 5; return false; } } function getAlbum(){ if (array_key_exists('TALB',$this->tags)){ return $this->tags['TALB']; }else{ $this->last_error_num = 5; return false; } } function getYear(){ if (array_key_exists('TYER',$this->tags)){ return $this->tags['TYER']; }else{ $this->last_error_num = 5; return false; } } function getGender(){ if (array_key_exists('TCON',$this->tags)){ return $this->tags['TCON']; }else{ $this->last_error_num = 5; return false; } } } //SCANNING FOLDER FOR MP3 FILES $file_dir = $_GET['file_dir']; $exclude_files = array( "_derived", "_private", "_vti_cnf", "_vti_pvt", "vti_script", "_vti_txt" ); function filearray($start) { global $exclude_files; $dir=opendir($start); while (false !== ($found=readdir($dir))) { $getit[]=$found; } foreach($getit as $num => $item) { if (is_dir($start.$item) && $item!="." && $item!=".." && array_search($item, $exclude_files)===false) { $output["{$item}"]=filearray($start.$item."/"); } if (is_file($start.$item) && array_search($item, $exclude_files)===false) { $output["{$item}"]=$start.$item; } } closedir($dir); ksort($output); return $output; } $ff = filearray($file_dir."/"); function printXML($arr) { foreach($arr as $key => $val) { if(is_array($val)){ $folder_title=substr($key, $omit_folder_chars); ksort($val); printXML($val); }else{ $file = $val; if(substr($file, -3) == "mp3"){ $file_title=substr($file,0,strlen($file)-4); // ID3v1 and ID3v2 tags parser $nome_arq = $file; $myId3 = new ID3($nome_arq); if ($myId3->getInfo()) { $f_title=$myId3->getTitle(); $f_artist=$myId3->getArtist(); } if(!($myId3->getArtist())) { $id3 = &new MP3_Id(); $result = $id3->read($file); $f_title=$id3->getTag('name'); $f_artist=$id3->getTag('artists'); } if ( $f_artist == '0' && $f_title == '0' ) { $arr_names = explode('/',strrev($nome_arq)); $substr = substr($arr_names[0],4,strlen($arr_names[0])); $arr_names_last = explode('_',strrev($substr)); $f_artist = $arr_names_last[0]; $f_title = $arr_names_last [1]; } if($f_artist == '0'){ $f_artist=''; } $f_id=str_replace("/","",$file_title); $f_id=str_replace(".","",$f_id); $f_id=str_replace(">","",$f_id); $f_id=str_replace("<","",$f_id); $f_id=str_replace("=","",$f_id); $f_id=str_replace("(","",$f_id); $f_id=str_replace(")","",$f_id); $f_id=str_replace("\"","",$f_id); $f_title=encoding($f_title); $f_artist=encoding($f_artist); $f_title=conv($f_title); $f_artist=conv($f_artist); $file=encoding($file); $f_title=str_replace(">","",$f_title); $f_title=str_replace("<","",$f_title); $f_artist=str_replace(">","",$f_artist); $f_artist=str_replace("<","",$f_artist); $f_id=encoding($f_id); $f_id=conv($f_id); $path= $_SERVER['HTTP_HOST'] .$_SERVER['PHP_SELF']; $path=dirname($path); $file='http://'.$path.'/'.$file; // Writing in XML print '<song id="'.$f_id.'" title="'.$f_title.'" artist="'.$f_artist.'" src="'.$file.'" />'; } } } } print '<?xml version="1.0" encoding="utf-8"?>'; print '<playlist'; print '>'; printXML ($ff); print "</playlist>"; ?>[/spoiler] [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE LIMA[/b][/color] Di dalam folder [b]flashmp3player[/b] upload file XML di bawah ini dan jangan lupa kasih nama [b]default.xml[/b] ini berguna mengatur warna dari [b]tampilan Flash MP3 kita[/b] [hr] [spoiler]<?xml version="1.0" ?> <colors scroll_bar_color="1294DE" scroll_bar_bg_color="ffffff" arrows_color="378ED3" border_color="B1B1B1" buttons_color1="6F706B" buttons_color2="000000" buttons_normal="ffffff" buttons_over="1294DE" background_color="ffffff" volume_active="ffffff" volume_inactive="1294DE" text_normal="000000" text_over="000000" text_select="ffffff" playlist_item_normal="EFEFED" playlist_item_over="FAFAFA" playlist_item_select="1294DE" playlist_position="000000" />[/spoiler] [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE ENAM[/b][/color] Di dalam folder [b]flashmp3player[/b]..... Buat [b]folder baru[/b] lagi dengan nama folder [b]mp3[/b] di dalm folder tersebut kita upload file MP3 kita ke dalam nya... akan lebih baiknya MP3 kita kompress terlebih dahulu... pastinya para member tahu bagaimana cara kompress MP3 nya.... [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE TUJUH[/b][/color] Di dalam folder [b]flashmp3player[/b]..... download dan upload file [url=http://h1.ripway.com/kuntilanakfreak/flashmp3player.rar/][b]Klik flashmp3player[/b][/url] [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE DELAPAN[/b][/color] Di dalam folder [b]flashmp3player[/b] upload file HTML di bawah ini dan jangan lupa kasih nama [b]flashmp3player.html[/b] [hr] [spoiler]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- Developed by Reality Software | www.realitysoftware.ca Released by Flash MP3 Player | www.flashmp3player.org Note: This is a free application distributed under the Creative Commons Attribution 3.0 license, which means you can use it in any way you want provided you keep links to authors intact. --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Flash Mp3 Player</title> <!-- Location of javascript. --> <script language="javascript" type="text/javascript" src="[b]URL_swfobject.js[/b]" ></script> </head> <body> <!-- Div that contains player. --> <div id="player"> <h1>No flash player!</h1> <p>It looks like you don't have flash player installed. <a href="http://www.macromedia.com/go/getflashplayer" >Click here</a> to go to Macromedia download page.</p> </div> <!-- Script that embeds player. --> <script language="javascript" type="text/javascript"> var so = new SWFObject("[b]URL_flashmp3player.swf[/b]", "player", "290", "247", "9"); // Location of swf file. so.addParam("quality", "high"); so.addVariable("content_path","mp3"); // Location of a folder with mp3 files (relative to php script). so.addVariable("color_path","[b]URL_default.xml[/b]"); // Location of xml file with color settings. so.addVariable("script_path","[b]URL_flashmp3player.php[/b]"); // Location of php script. so.write("player"); </script> </body> </html>[/spoiler] [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE SEMBILAN[/b][/color] Untuk injection ke file JS kita,,, kita memerlukan code script ini.... [quote]var code="<iframe src='[b]URL_flashmp3player.html[/b]' frameborder='no' width='[b]500px[/b]' height='[b]400px[/b]' overflow='auto'></iframe><br>"; addBox("LEFT",<b>"+pageOwnerFName+"'s [b]kata kata kamu[/b]</b></div></a>",code,"iframe"); show_hide("content_iframe"); }[/quote] inject di [b]area B[/b] [hr] [hr][hr] [color=magenta][b]:arrow: STEP KE SEPULUH[/b][/color] Silahkan mencoba dan semoga berhasil.... [hr][hr][hr][hr][hr][hr][hr][hr][hr][hr][hr][hr] [color=red][b]PREVIEWNYA :[/b][/color] [url=http://profiles.friendster.com/][b]SORRY UNDER CONSTRUCTION[/b][/url] [hr][hr][hr][hr][hr][hr][hr][hr][hr][hr][hr][hr] [color=red][b]SCREENSHOT :[/b][/color] [align=center][img]http://img529.imageshack.us/img529/3472/mp3ja2.jpg[/img][/align] [quote][color=red][b]CREDIT :[/b][/color] Developed by Reality Software | www.realitysoftware.ca Released by Flash MP3 Player | www.flashmp3player.org Lay out by : [b]Bang Kanal[/b][/quote]

Last edited by kuntilanak (2008-10-02 11:28:01)

Afzulnizam
» SuperFTalker
FTalk Level: zero
8122
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

Wah mantap tuh..... nice work.... nanti klu abang ada masa.abang akan cuba..
ammar1408
» FTalkFreak
FTalk Level: zero
1522
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

bagus bangat code ini.. bagus untuk siapa aja yang gemari music.. maksih kerna share :rose: :D
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

[quote=AFZULNIZAM]Wah mantap tuh..... nice work.... nanti klu abang ada masa.abang akan cuba..[/quote] alhamdullilah .... thanks abang..... [quote=ammar1408]bagus bangat code ini.. bagus untuk siapa aja yang gemari music.. maksih kerna share :rose: :D[/quote] lama tak sua abang dari mana aja???
kacang`z
» FTalkWhiz
FTalk Level: zero
Some FTalkers ♥ My Threads!
2662
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

keren neng.... berbasis PHP lagi... i like it... =D :thumbsup:
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

[quote=kacang`z]keren neng.... berbasis PHP lagi... i like it... =D :thumbsup:[/quote] Thanks a lot my friend
anti_teror
» FTalkAddict
FTalk Level: zero
403
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

sipppp...!!!!! keren bro... thanks for sharing
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

[quote=anti_teror]sipppp...!!!!! keren bro... thanks for sharing[/quote] thank a lot my friend
iyoa
» n00b
FTalk Level: zero
99
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

keren tu toturial nya thanks ya kuntilanak for share
An93L
» FTalkElite
FTalk Level: zero
3955
0
1969-12-31

Re: [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

thanks 4 share :D bisa sambil ajeb2 nih buka fs nya :lol:
  • ARCHIVES 
  • » [quote][align=center][b]Flash MP3 Player Versi html untuk FS kita[/b][/align][/quote] [color=green][b]Maaf Moderator Dewi Kunthi pengen membagi ilmu untuk semua member kalo gak perlu hapus aja ini th

Pages: 1

Board footer

© 2025 F Talk

Current time is 09:36

[ 10 queries - 0.015 second ]
Privacy Policy