diff options
author | momo-i <momo-i@ampache> | 2008-09-02 07:11:43 +0000 |
---|---|---|
committer | momo-i <momo-i@ampache> | 2008-09-02 07:11:43 +0000 |
commit | 0ce5d92079e9d575b5ad67e5b9718b6d0c8d838a (patch) | |
tree | 265775371f6dd560af05a280fd15b291af2b4086 /lib/class/vainfo.class.php | |
parent | 99080e6fc82fea70dc905636cb1b4770566f9a32 (diff) | |
download | ampache-0ce5d92079e9d575b5ad67e5b9718b6d0c8d838a.tar.gz ampache-0ce5d92079e9d575b5ad67e5b9718b6d0c8d838a.tar.bz2 ampache-0ce5d92079e9d575b5ad67e5b9718b6d0c8d838a.zip |
Updated getid3 for multi-byte characters, but some wrong id3tags have occurred exception error.
Diffstat (limited to 'lib/class/vainfo.class.php')
-rw-r--r-- | lib/class/vainfo.class.php | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/lib/class/vainfo.class.php b/lib/class/vainfo.class.php index 694c19b6..206a146c 100644 --- a/lib/class/vainfo.class.php +++ b/lib/class/vainfo.class.php @@ -28,6 +28,8 @@ class vainfo { /* Default Encoding */ var $encoding = ''; + var $encoding_id3v1 = ''; + var $encoding_id3v2 = ''; /* Loaded Variables */ var $filename = ''; @@ -36,6 +38,7 @@ class vainfo { /* Internal Information */ var $_raw = array(); + var $_raw2 = array(); var $_getID3 = ''; var $_iconv = false; var $_file_encoding = ''; @@ -47,7 +50,7 @@ class vainfo { * This function just sets up the class, it doesn't * actually pull the information */ - function vainfo($file,$encoding='',$dir_pattern,$file_pattern) { + function vainfo($file,$encoding='',$encoding_id3v1='',$encoding_id3v2='',$dir_pattern,$file_pattern) { $this->filename = $file; if ($encoding) { @@ -63,12 +66,50 @@ class vainfo { // Initialize getID3 engine $this->_getID3 = new getID3(); + + // get id3tag encodings + $this->_raw2 = $this->_getID3->analyze($file); + if(function_exists('mb_detect_encoding')) { + $this->encoding_id3v1 = array(); + $this->encoding_id3v1[] = mb_detect_encoding($this->_raw2['tags']['id3v1']['artist']['0']); + $this->encoding_id3v1[] = mb_detect_encoding($this->_raw2['tags']['id3v1']['album']['0']); + $this->encoding_id3v1[] = mb_detect_encoding($this->_raw2['tags']['id3v1']['genre']['0']); + $this->encoding_id3v1[] = mb_detect_encoding($this->_raw2['tags']['id3v1']['title']['0']); + array_multisort($this->encoding_id3v1); + array_splice($this->encoding_id3v1, -4, 3); + if($this->encoding_id3v1[0] != "ASCII") { + $this->encoding_id3v1 = $this->encoding_id3v1[0]; + } else { + $this->encoding_id3v1 = "ISO-8859-1"; + } + + + $this->encoding_id3v2 = array(); + $this->encoding_id3v2[] = mb_detect_encoding($this->_raw2['tags']['id3v2']['artist']['0']); + $this->encoding_id3v2[] = mb_detect_encoding($this->_raw2['tags']['id3v2']['album']['0']); + $this->encoding_id3v2[] = mb_detect_encoding($this->_raw2['tags']['id3v2']['genre']['0']); + $this->encoding_id3v2[] = mb_detect_encoding($this->_raw2['tags']['id3v2']['title']['0']); + array_multisort($this->encoding_id3v2); + array_splice($this->encoding_id3v2, -4, 3); + if($this->encoding_id3v2[0] != "ASCII"){ + $this->encoding_id3v2 = $this->encoding_id3v2[0]; + } else { + $this->encoding_id3v2 = "ISO-8859-1"; + } + } + else { + $this->encoding_id3v1 = $encoding_id3v1; + $this->encoding_id3v2 = $encoding_id3v2; + } + $this->_getID3->option_md5_data = false; $this->_getID3->option_md5_data_source = false; $this->_getID3->option_tags_html = false; $this->_getID3->option_extra_info = false; $this->_getID3->option_tag_lyrics3 = false; $this->_getID3->encoding = $this->encoding; + $this->_getID3->encoding_id3v1 = $this->encoding_id3v1; + $this->_getID3->encoding_id3v2 = $this->encoding_id3v2; $this->_getID3->option_tags_process = true; /* Check for ICONV */ |