var info_musicbrainz = function() { var me = "musicbrainz"; var medebug = "MBNZ PLUGIN"; function getYear(data) { try { var date = data['first-release-date'] || data.date; if (!date) { var t = data.title; var m = t.match(/^(\d\d\d\d)/); date = m[0]; } var d = new Date(date); var y = d.getFullYear(); if (!y) { y = 0 } return parseInt(y); } catch(err) { return 0; } } function doSpan(data) { if (data.begin === undefined || data.begin === null) { return ""; } var by = new Date(data.begin); var ey = new Date(data.end); var tby = by.getFullYear() || ""; var tey = data.ended ? (ey.getFullYear() || "") : language.gettext("musicbrainz_now"); return '('+tby+' - '+tey+')'; } function albumsbyyear(a, b) { var year_a = getYear(a); var year_b = getYear(b); if (year_a == year_b) { return 0 } return (year_a > year_b) ? 1 : -1; } function getArtistHTML(data, expand) { if (data.error) { return '

'+data.error+'

'; } var html = '
'; html += '
'; html += ''; if (data.type !== null) { html += ''; } if (data.aliases && data.aliases.length > 0) { html += '
'; } if (data.begin_area && data.area) { html += '
'; } else if (data.area) { html += '
'; } if (data['life-span'] && data['life-span'].begin !== null) { html += '
'; } if (data.rating && data.rating.value !== null) { html += '
'; } html += '
'+getURLs(data.relations, true); html += '
'; html += '
'; if (expand) { html += '
'; } if (data.annotation) { var a = data.annotation; a = a.replace(/\n/, '
'); a = a.replace(/\[(.*?)\|(.*?)\]/g, '$2'); html += '
'+language.gettext("musicbrainz_notes")+':
'+a+'
'; } if (data.tags && data.tags.length > 0) { html += '
'+language.gettext("musicbrainz_tags")+'
'; for (var i in data.tags) { html += ''+data.tags[i].name+' '; } html += '
'; } var bandMembers = new Array(); var memberOf = new Array(); for (var i in (data.relations)) { if (data.relations[i].type == "member of band") { if (data.relations[i].direction == "backward") { bandMembers.push(data.relations[i]); } else { memberOf.push(data.relations[i]); } } } if (bandMembers.length > 0) { html += '
'+language.gettext("discogs_bandmembers")+'
'+getMembers(bandMembers); } if (memberOf.length > 0) { html += '
'+language.gettext("discogs_memberof")+'
'+getMembers(memberOf); } html += '
'; html += ''; html += ''+language.gettext("discogs_discography", [data.name.toUpperCase()])+'
'; html += ''; html += '
'; html += '
'; return html; } function getMembers(data) { var html = ""; var already_done = new Array(); var ayears = new Array(); for (var i in data) { if (already_done[data[i].artist.id] !== true) { debug.debug(medebug,"New Artist",data[i].artist.id,data[i].artist.name,data[i].begin,data[i].end); html += '
'; // The already_done flag is just there because artist can appear multiple times in this data // if they did multiple stints in the band. html += ''; html += ''+data[i].artist.name+' '+"AYEARS_"+data[i].artist.id; ayears[data[i].artist.id] = doSpan(data[i]); html += '
'; html += ''; already_done[data[i].artist.id] = true; } else { debug.debug(medebug,"Repeat Artist",data[i].artist.id,data[i].artist.name,data[i].begin,data[i].end); ayears[data[i].artist.id] = ayears[data[i].artist.id] + " " + doSpan(data[i]); } } for(var i in ayears) { html = html.replace("AYEARS_"+i, ayears[i]); } return html; } function getURLs(relations, withheader) { if (relations.length == 0) { return ""; } if (withheader) { var html = '