• ARCHIVES 
  • » [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

Pages: 12

[quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

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

[quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long blustery the tutorial. . . . . there are some stage. . . . ..[/b] [hr][hr] [color=magenta][b]:arrow: STEP FIRST [/b][/color] we only want webhosting compatible with file. php. . . [b]Remember webhosting compatible with php [/b] i am unnecessary explains webhosting which compatible with php i am taste member here understand as respects to that. . . . [hr][hr] [color=magenta][b]:arrow: STEP SECOND [/b][/color] insides webhosting you make [b]new folder[/b] gives folder name by the name of [b]flashmp3player[/b] [hr][hr] [color=magenta][b]:arrow: STEP THREE [/b][/color] in folder [b]flashmp3player[/b] upload file js here under inside spoiler and don't forget name affection [b]swfobject. js[/b] [hr] [b]CODE of 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 FOUR [/b][/color] in folder [b]flashmp3player[/b] upload file php here under inside spoiler and don't forget name affection [b]flashmp3player.php[/b] [hr] [b]CODE of 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 FIVE [/b][/color] in folder [b]flashmp3player[/b] upload file xml here under spoiler and don't forget default name affection [b]default. xml [/b] this is useful regulates colour from display of flash mp3 player.... [hr] [b]CODE of default. xml [/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 SIX [/b][/color] in folder [b]flashmp3player. . . . . [/b] make new folder again by the name of [b]folder mp3 [/b] in folder we are upload file mp3. . . . . . the gooder mp3 you compress beforehand. . . certain it member know to how manner compress file mp3. . . . . . [hr] [hr][hr] [color=magenta][b]:arrow: STEP SEVEN [/b][/color] in folder [b]flashmp3player. . . . . [/b] download and upload this file of swf please clicks here [url=http://h1.ripway.com/kuntilanakfreak/flashmp3player.swf/][b]flashmp3player[/b][/url] [hr] [hr][hr] [color=magenta][b]:arrow: STEP EIGHT [/b][/color] in folder [b]flashmp3player[/b] upload file html here under spoiler and don't forget name affection [b]flashmp3player. html[/b] [hr] [b]CODE of 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 NINE [/b][/color] to injection to file js , , , we need code script this. . . . [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] Please inject to [b]Area B[/b] [hr] [hr][hr] [color=magenta][b]:arrow: STEP TEN [/b][/color] please try and good success. . . . [hr][hr][hr][hr][hr][hr][hr][hr][hr][hr][hr][hr] [color=red][b]PREVIEW :[/b][/color] [url=http://profiles.friendster.com/84575309][b]SORRY UNDER CONSTRUCTION.. IT THE ORDINARY PROFILE[/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]
Afzulnizam
» SuperFTalker
FTalk Level: zero
8122
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

wah very nice and very creative :thumbsup: thanks for sharing.. :thumbsup:
ammar1408
» FTalkFreak
FTalk Level: zero
1522
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

Nice tutorial Dewi.. good code for someone who love music=) :thumbsup: thankz for sharing..but can i ask you :eh: The song loading fast or not with that codes ;] have a nice day to you.. =) :thumbsup:
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=AFZULNIZAM]wah very nice and very creative :thumbsup: thanks for sharing.. :thumbsup:[/quote] thanks a lot brother..... :thumbsup: :thumbsup: [b]:arrow: ammar1408[/b] thank you brother sorry I late give a comment

Last edited by kuntilanak (2008-10-07 01:16:50)

-NiK-
» FTalkGeek
FTalk Level: zero
1407
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

wow siz nyc work :D enxx 4 sharin this ^^ @ daddy nizam hmm looks liek she's one of the members of our family ^^ imma call her siz :eh:
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=-NiK-]wow siz nyc work :D enxx 4 sharin this ^^[/quote] thanks you sister.....
Afzulnizam
» SuperFTalker
FTalk Level: zero
8122
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=-NiK-]hmm looks liek she's one of the members of our family ^^ imma call her siz :eh:[/quote] yap....kuntilanak,ammar and me are wp member.... you can call kuntilanak siz @topic nice again.thanks
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=AFZULNIZAM]yap....kuntilanak,ammar and me are wp member.... you can call kuntilanak siz[/quote] he he he can you cal me [b]Dewi[/b] please???
Afzulnizam
» SuperFTalker
FTalk Level: zero
8122
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=kuntilanak]he he he can you cal me Dewi please???[/quote] hehe sorry dewi :lol: ok..continue your topic :penguin:
regiehiozn
» FTalkFreak
FTalk Level: zero
1819
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

i love the look of the player.. but can we add buttons?
jmichaelthe21
» FTalkAddict
FTalk Level: zero
389
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=regiehiozn]but can we add buttons?[/quote] ye i think so..:rolleyes:
kacang`z
» FTalkWhiz
FTalk Level: zero
Some FTalkers ♥ My Threads!
2662
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

nice your code.... thx for sharing :)
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=regiehiozn]i love the look of the player.. but can we add buttons?[/quote] [quote=jmichaelthe21]ye i think so..:rolleyes:[/quote] Maybe can not to add buton.... because is the php not recognize to add button [quote=kacang`z]nice your code.... thx for sharing :)[/quote] thanks my friend
slashedkite
» FTalkManiac
FTalk Level: zero
973
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

whew, this tutorial is cool.. many steps but still it's nice.. for the newbies, it founds to be hard to follow all the steps but if they keep on trying they can get it.. wonderful sharing to us ma'am.. ;):thumbsup:

Last edited by slashedkite (2008-10-08 00:11:54)

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

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=slashedkite]whew, this tutorial is cool.. many steps but still it's nice.. for the newbies, it founds to be hard to follow all the steps but if they keep on trying they can get it.. wonderful sharing to us ma'am.. ;):thumbsup: Last edited by slashedkite (Yesterday 04:11[/quote] thanks to comment my brother
aishi_au
» n00b
FTalk Level: zero
92
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

nice....thanks for sharing, its work!
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=aishi_au]nice....thanks for sharing, its work![/quote] he he he he .... nice try brother.... thanks a lot
---xXirukiTepe---
» SuperFTalker
FTalk Level: zero
8896
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[b]nice coding in here...thanks 4 share[/b]
jmichaelthe21
» FTalkAddict
FTalk Level: zero
389
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=kuntilanak]Maybe can not to add buton.... because is the php not recognize to add button[/quote] oh.. ye i forgot that its php..:o
kuntilanak
» FTalkElite
FTalk Level: zero
4412
0
1969-12-31

Re: [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

[quote=---xXirukiTepe---]nice coding in here...thanks 4 share[/quote] thanks sister.... [quote=jmichaelthe21]oh.. ye i forgot that its php..:o[/quote] he he he ..... but the way thanks
  • ARCHIVES 
  • » [quote][color=green][b]Sorry moderator my name is Dewi Kunthi want to divide science for all member otherwise necessary erase this is threat. . . . . .[/b][/color][/quote] [b]direct not my long long

Pages: 12

Board footer

© 2025 F Talk

Current time is 14:16

[ 10 queries - 0.026 second ]
Privacy Policy