diff options
author | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2009-11-14 04:37:16 +0000 |
---|---|---|
committer | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2009-11-14 04:37:16 +0000 |
commit | dc72729c8fa94118a22b24b7ee452f764dd37ec9 (patch) | |
tree | 3e3f7b998de7d8d4e3d5a9a53683998995735603 /lib/class/vainfo.class.php | |
parent | e6bf50079aa6e7c507ffd14875c1cac99973769c (diff) | |
download | ampache-dc72729c8fa94118a22b24b7ee452f764dd37ec9.tar.gz ampache-dc72729c8fa94118a22b24b7ee452f764dd37ec9.tar.bz2 ampache-dc72729c8fa94118a22b24b7ee452f764dd37ec9.zip |
Added multiple id3v2 genre to tag patch from quack23 resolves #564
Diffstat (limited to 'lib/class/vainfo.class.php')
-rw-r--r-- | lib/class/vainfo.class.php | 50 |
1 files changed, 42 insertions, 8 deletions
diff --git a/lib/class/vainfo.class.php b/lib/class/vainfo.class.php index fc5bdc73..488c2f80 100644 --- a/lib/class/vainfo.class.php +++ b/lib/class/vainfo.class.php @@ -290,9 +290,19 @@ class vainfo { ? $info['album'] : trim($results[$key]['album']); - $info['genre'] = $info['genre'] - ? $info['genre'] - : trim($results[$key] ['genre']); + // multiple genre support + if (!$info['genre']) { + if (!is_array($results[$key]['genre'])) { + // not all tag formats will return an array, but we need one + $info['genre'][] = trim($results[$key]['genre']); + } + else { + // if we trim the array we lose everything after 1st entry + foreach ($results[$key]['genre'] as $genre) { + $info['genre'][] = trim($genre); + } + } + } $info['mb_trackid'] = $info['mb_trackid'] ? $info['mb_trackid'] @@ -598,6 +608,13 @@ class vainfo { /* We need to translate a few of these tags */ switch ($tag) { + + case 'genre': + // multiple genre support + foreach($data as $foo) { + $array['genre'][] = $this->_clean_tag($foo,''); + } + break; case 'tracknumber': $array['track'] = $this->_clean_tag($data['0']); break; @@ -607,10 +624,11 @@ class vainfo { case 'date': $array['year'] = $this->_clean_tag($data['0']); break; + default: + $array[$tag] = $this->_clean_tag($data['0']); + break; } // end switch - $array[$tag] = $this->_clean_tag($data['0']); - } // end foreach return $array; @@ -661,13 +679,18 @@ class vainfo { * so we now need to account for it :( */ switch ($tag) { + case 'genre': + // multiple genre support + foreach($data as $genre) { + $array['genre'][] = $this->_clean_tag($genre,''); + } + break; case 'pos': $el = explode('/', $data['0']); $array['disk'] = $el[0]; break; case 'track_number': $array['track'] = $this->_clean_tag($data['0'],''); - break; break; case 'comments': $array['comment'] = $this->_clean_tag($data['0'],''); @@ -714,8 +737,19 @@ class vainfo { private function _parse_ape($tags) { foreach ($tags as $tag=>$data) { - - $array[$tag] = $this->_clean_tag($data['0'],$this->_file_encoding); + switch ($tag) { + + case 'genre': + // multiple genre support + foreach($data as $genre) { + $array['genre'][] = $this->_clean_tag($genre,''); + } + break; + + default: + $array[$tag] = $this->_clean_tag($data['0'],$this->_file_encoding); + break; + } // end switch on tag } // end foreach tags |