From: barbieri Date: Tue, 22 Jan 2008 18:45:37 +0000 (+0000) Subject: Get both lead artist and band, use in order: band, artist X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;ds=sidebyside;h=d139d855eb59d8b53eb85f2de49709437941d35e;p=lms Get both lead artist and band, use in order: band, artist --- diff --git a/lightmediascanner/src/plugins/id3lib/id3lib.cpp b/lightmediascanner/src/plugins/id3lib/id3lib.cpp index 534316c..d71bd1d 100644 --- a/lightmediascanner/src/plugins/id3lib/id3lib.cpp +++ b/lightmediascanner/src/plugins/id3lib/id3lib.cpp @@ -104,12 +104,13 @@ _id3lib_get_string_if_need(const ID3_Frame *frame, struct lms_string_size *s) static int _id3lib_get_data(const ID3_Tag &tag, struct lms_audio_info *info) { + lms_string_size band = {NULL, 0}, lead_artist = {NULL, 0}; ID3_Tag::ConstIterator *itr; const ID3_Frame *frame; int todo; - todo = 7; /* info fields left to parse: title, artist, album, genre, - trackno, rating, playcnt */ + todo = 8; /* info fields left to parse: title, lead artist, band, + album, genre, trackno, rating, playcnt */ itr = tag.CreateIterator(); @@ -125,7 +126,12 @@ _id3lib_get_data(const ID3_Tag &tag, struct lms_audio_info *info) break; case ID3FID_LEADARTIST: - if (_id3lib_get_string_if_need(frame, &info->artist)) + if (_id3lib_get_string_if_need(frame, &lead_artist)) + todo--; + break; + + case ID3FID_BAND: + if (_id3lib_get_string_if_need(frame, &band)) todo--; break; @@ -165,6 +171,14 @@ _id3lib_get_data(const ID3_Tag &tag, struct lms_audio_info *info) } } + if (band.str && lead_artist.str) { + info->artist = band; + free(lead_artist.str); + } else if (band.str) + info->artist = band; + else if (lead_artist.str) + info->artist = lead_artist; + delete itr; return 0; }