summaryrefslogtreecommitdiffstats
path: root/lib/class/vainfo.class.php
diff options
context:
space:
mode:
authormomo-i <momo-i@ampache>2008-09-02 07:11:43 +0000
committermomo-i <momo-i@ampache>2008-09-02 07:11:43 +0000
commit0ce5d92079e9d575b5ad67e5b9718b6d0c8d838a (patch)
tree265775371f6dd560af05a280fd15b291af2b4086 /lib/class/vainfo.class.php
parent99080e6fc82fea70dc905636cb1b4770566f9a32 (diff)
downloadampache-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.php43
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 */