Pages: 12

  2008-09-29 13:08:01

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.swf/][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-05 16:02:46)

Pages: 12

Board footer

© 2025 F Talk

Current time is 09:42

[ 12 queries - 0.015 second ]
Privacy Policy