Вход Регистрация
Файл: system/classes/id3v2.php
Строк: 49
<?php
/* 
    Appointment: Информация о mp3 файле по URL
    File: id3v2.php 
    Author: likan
    Engine: LIKAN
*/

class Id3v2 {
    public 
$error;
    
    private 
$tags = array(
        
'TALB' => 'Album',
        
'TCON' => 'Genre',
        
'TENC' => 'Encoder',
        
'TIT2' => 'Title',
        
'TPE1' => 'Artist',
        
'TPE2' => 'Ensemble',
        
'TYER' => 'Year',
        
'TCOM' => 'Composer',
        
'TCOP' => 'Copyright',
        
'TRCK' => 'Track',
        
'WXXX' => 'URL',
        
'COMM' => 'Comment'
        
);
         
    private function 
decTag($tag$type){
        
//TODO- handling of comments is quite weird
        //but I don't know how it is encoded so I will leave the way it is for now
        
if ($type == 'COMM')
        {
            
$tag substr($tag03) . substr($tag10);
        }
        
//mb_convert_encoding is corrupted in some versions of PHP so I use iconv
        
switch (ord($tag[2]))
        {
            case 
0//ISO-8859-1
                    
return iconv('cp1251''UTF-8'substr($tag3));
            case 
1//UTF-16 BOM
                    
return iconv('UTF-16LE''UTF-8'substr($tag5));
            case 
2//UTF-16BE
                    
return iconv('UTF-16BE''UTF-8'substr($tag5));
            case 
3//UTF-8
                    
return substr($tag3);
        }
        return 
false;
    }
    
    public function 
read($file){
        
$f fopen($file'r');
        
$header fread($f10);
        
$header = @unpack("a3signature/c1version_major/c1version_minor/c1flags/Nsize"$header);

        if (!
$header['signature'] == 'ID3')
        {
            
$this->error 'This file does not contain ID3 v2 tag';        
            
fclose($f);
            return 
false;        
        }

           
$result = array();
        for (
$i=0$i<22$i++)
        {
            
$tag rtrim(fread($f6));
            
            if (!isset(
$this->tags[$tag])) break;
            
            
$size fread($f2);
            
$size = @unpack('n'$size);
            
$size $size[1]+2;
    
            
$value fread($f$size);    
            
$value $this->decTag($value$tag);
    
            
$result[$this->tags[$tag]] = $value;
        }
        
        
fclose($f);
          return 
$result;    
    }    
}
Онлайн: 0
Реклама