summaryrefslogtreecommitdiffstats
path: root/lib/class/vainfo.class.php
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2009-11-14 04:37:16 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2009-11-14 04:37:16 +0000
commitdc72729c8fa94118a22b24b7ee452f764dd37ec9 (patch)
tree3e3f7b998de7d8d4e3d5a9a53683998995735603 /lib/class/vainfo.class.php
parente6bf50079aa6e7c507ffd14875c1cac99973769c (diff)
downloadampache-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.php50
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