const id3_ucs4_t* id3_metadata_getalbumartist(const struct id3_tag* tag, enum id3_field_textencoding* encoding) { id3_ucs4_t const *ucs4 = metadata_getstring(tag, "TPE2", encoding); if (ucs4 && *ucs4) return ucs4; ucs4 = id3_metadata_getusertext(tag, "ALBUM ARTIST"); if (ucs4 && *ucs4) return ucs4; ucs4 = id3_metadata_getusertext(tag, "ALBUMARTIST"); if (ucs4 && *ucs4) return ucs4; return id3_ucs4_empty; }
char id3_metadata_getrating(const struct id3_tag* tag) { union id3_field const *field; struct id3_frame const *frame; int value; frame = id3_tag_findframe(tag, "POPM", 0); if (frame) { field = id3_frame_field(frame, 1); if (field) { // based on mediamonkey's values, simplified down a bit // http://www.mediamonkey.com/forum/viewtopic.php?f=7&t=40532 value = id3_field_getint(field); if (value == 1) return '1'; // WMP11 madness if (value < 9) return '0'; if (value < 50) return '1'; if (value < 114) return '2'; if (value < 168) return '3'; if (value < 219) return '4'; return '5'; } } else { const id3_ucs4_t *ucs4 = id3_metadata_getusertext(tag, "RATING"); if (ucs4 && *ucs4 > '0' && *ucs4 < '6') return (char)*ucs4; } return '0'; }
char id3_metadata_getrating(const struct id3_tag* tag) { union id3_field const *field; struct id3_frame const *frame; frame = id3_tag_findframe(tag, "POPM", 0); if (frame) { field = id3_frame_field(frame, 1); if (field) { // media monkey's value return (id3_field_getint(field) / 50) + '0'; } } else { const id3_ucs4_t *ucs4 = id3_metadata_getusertext(tag, "RATING"); if (ucs4 && *ucs4 > '0' && *ucs4 < '6') return (char)*ucs4; } return '0'; }