// Funkcja wyciągająca nagłówek tagu function id3v2header($file) { $id3v2header['filename']=$file; { $id3v2header['exist']=FALSE; $id3v2header['size']=0; return $id3v2header; }; $id3v2header['exist']=TRUE; $id3v2header['version']=be2int($header[3]).".".be2int($header[4]); $flags=be2bin($header[5]); $id3v2header['flags']['full']=$flags; return $id3v2header; }; // Funkcja wyciągająca cały tag function id3v2tag($file, $tagsize) { if($tagsize==0) { $id3v2tag['exist']=FALSE; return $id3v2tag; }; $id3v2tag['exist']=TRUE; $x=0; $count['WXXX']=0; $count['APIC']=0; $count['UFID']=0; $count['GEOB']=0; $count['COMM']=0; $count['TXXX']=0; $count['POPM']=0; $count['USLT']=0; $count['AENC']=0; $count['SYLT']=0; $count['LINK']=0; $count['RVA2']=0; $count['USER']=0; $count['COMR']=0; $count['EQU2']=0; $count['ENCR']=0; $count['GRID']=0; $count['PRIV']=0; $count['SIGN']=0; $listpos=0; while ($x<($tagsize-10)) { for($y=0;$y<4;++$y) { }; $condition= ($fid[0]!=0x00 && ((ord($frame[0])>=0x30 && ord($frame[0])<=0x39) || (ord($frame[0])>=0x41 && ord($frame[0])<=0x5A)) && $fid[1]!=0x00 && ((ord($frame[1])>=0x30 && ord($frame[1])<=0x39) || (ord($frame[1])>=0x41 && ord($frame[1])<=0x5A)) && $fid[2]!=0x00 && ((ord($frame[2])>=0x30 && ord($frame[2])<=0x39) || (ord($frame[2])>=0x41 && ord($frame[2])<=0x5A)) && $fid[3]!=0x00 && ((ord($frame[3])>=0x30 && ord($frame[3])<=0x39) || (ord($frame[3])>=0x41 && ord($frame[3])<=0x5A)) && if($condition==true) { $id3v2tag['framelist']["$listpos"]['id']=$frame; $id3v2tag['framelist']["$listpos"]['fullname']=framefullname($frame); $condition=( $frame=="WXXX" || $frame=="APIC" || $frame=="UFID" || $frame=="GEOB" || $frame=="COMM" || $frame=="TXXX" || $frame=="POPM" || $frame=="USLT" || $frame=="AENC" || $frame=="SYLT" || $frame=="LINK" || $frame=="RVA2" || $frame=="USER" || $frame=="COMR" || $frame=="EQU2" || $frame=="ENCR" || $frame=="GRID" || $frame=="PRIV" || $frame=="SIGN"); if($condition==true) { $id3v2tag['frames']["$frame"]["$count[$frame]"]['id']=$frame; $x+=4; $id3v2tag['frames']["$frame"]["$count[$frame]"]['fullname']=framefullname($frame); $id3v2tag['frames']["$frame"]["$count[$frame]"]['size']=unsynchsafe(be2int(substr($id3v2tag['fulltag'],$x,4))); if($frame=="APIC") { $id3v2tag['frames']["$frame"]["$count[$frame]"]['size']=2*$id3v2tag['frames']["$frame"]["$count[$frame]"]['size']; }; $x+=4; $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['full']=be2bin(substr($id3v2tag['fulltag'],$x,1)); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['tag_alter_preservation']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['full'],1,1); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['file_alter_preservation']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['full'],2,1); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['read_only']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_status_flag']['full'],3,1); $x++; $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['full']=be2bin(substr($id3v2tag['fulltag'],$x,1)); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['grouping_identity']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['full'],1,1); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['compresion']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['full'],4,1); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['encryption']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['full'],5,1); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['unsynchronisation']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['full'],6,1); $id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['data_length_indicator']=substr($id3v2tag['frames']["$frame"]["$count[$frame]"]['flags']['frame_format_flag']['full'],7,1); $x++; $id3v2tag['frames']["$frame"]["$count[$frame]"]['data']=substr($id3v2tag['fulltag'],$x,$id3v2tag['frames']["$frame"]["$count[$frame]"]['size']); $id3v2tag['frames']["$frame"]["$count[$frame]"]['processed_data']=identifyframe($id3v2tag['frames']["$frame"]["$count[$frame]"]['id'],$id3v2tag['frames']["$frame"]["$count[$frame]"]['data']); $count[$frame]++; } else { $id3v2tag['frames']["$frame"]['id']=$frame; $x+=4; $id3v2tag['frames']["$frame"]['fullname']=framefullname($frame); $x+=4; $id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['full']=be2bin(substr($id3v2tag['fulltag'],$x,1)); $x++; $id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['tag_alter_preservation']=substr($id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['full'],1,1); $id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['file_alter_preservation']=substr($id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['full'],2,1); $id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['read_only']=substr($id3v2tag['frames']["$frame"]['flags']['frame_status_flag']['full'],3,1); $id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['full']=be2bin(substr($id3v2tag['fulltag'],$x,1)); $id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['grouping_identity']=substr($id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['full'],1,1); $id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['compresion']=substr($id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['full'],4,1); $id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['encryption']=substr($id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['full'],5,1); $id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['unsynchronisation']=substr($id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['full'],6,1); $id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['data_length_indicator']=substr($id3v2tag['frames']["$frame"]['flags']['frame_format_flag']['full'],7,1); $x++; $id3v2tag['frames']["$frame"]['data']=substr($id3v2tag['fulltag'],$x,$id3v2tag['frames']["$frame"]['size']); $id3v2tag['frames']["$frame"]['processed_data']=identifyframe($id3v2tag['frames']["$frame"]['id'],$id3v2tag['frames']["$frame"]['data']); if($id3v2tag['coding']=$id3v2tag['frames']["$frame"]['processed_data']['encoding']) {} else if($id3v2tag['coding']==null) {$id3v2tag['coding']="UTF-8";} else{}; }; $listpos++; } else { $x++; }; }; return $id3v2tag; }; // Identyfikacja ramek function framefullname($frame) { $file="inc/txtfiles/framefullname.txt"; $x=0; while($x<$li) { ++$x; }; return $framefullname["$frame"]; };
// pełna nazwa ramki function framefullname($frame) { $file="inc/txtfiles/framefullname.txt"; $x=0; while($x<$li) { ++$x; }; return $framefullname["$frame"]; }; // identyfikacja kodowania ramki function coding_table($type,$id3v2tagcoding) { switch($id3v2tagcoding) { case 0x00: $info['coding']="ISO-8859-1"; $info['pagecoding']="ISO-8859-2"; $info['terminator']=chr(0); break; case 0x01: $info['coding']="UTF-16"; $info['pagecoding']="UTF-8"; $info['terminator']=chr(0); $info['terminator'].=chr(0); break; case 0x02: $info['coding']="UTF-16BE"; $info['pagecoding']="UTF-8"; $info['terminator']=chr(0); $info['terminator'].=chr(0); break; case 0x03: $info['coding']="UTF-8"; $info['pagecoding']="UTF-8"; $info['terminator']=chr(0); break; default: $info['coding']="UTF-8"; $info['pagecoding']="UTF-8"; $info['terminator']=chr(0); break; }; return $info["$type"]; }; // funkcja do wyciągania rozmiaru z synchsafe (znaleziona na internecie w C) function unsynchsafe($in) { $out = 0; $mask = 0x7F000000; while ($mask) { $out >>= 1; $out |= $in & $mask; $mask >>= 8; } return $out; } // Z Big Endian na heksadecymalną liczbę function binhex($bin) { return $hex; }; // Z Big Endian na binarny zapis function be2bin($byteword) { $binvalue = ''; for ($i=0;$i<$bytewordlen;$i++) { } return $binvalue; }; // z Big Endian na ciąg znaków drukowanych function be2str($word) { $string=""; for($y=0; $y<strlen($word);$y++) { }; return $string; }; // Z Big Endian na liczbę dziesiętną - zamienia cały ciąg znaków na liczbę dziesiętną (nie było mi potrzebne nic innego) function be2int($be) { return $int; }; // Identyfikacja niektórych bajtów na odpowiednie wartości wyciągane z pliku jak np. typ obrazka function select_from_file_table($in, $name) { //$in=hexdec($in); $x=0; while($x<$li) { $x++; }; $x=0; while($x<$li) { $x++; }; $x=0; while($x<$li) { $x++; }; return $out["$in"]; }
jeszcze jedna funkcja ale nie mieści się w poście dlatego wrzucę linka do niej:
Identify frame
Prosiłbym moderatora o usunięcie tego mojego tematu.