Display AcousticBrainz links in release pages
// ==UserScript== | |
// @name mb. ACOUSTICBRAINZ LINKS (for STalKer-X) | |
// @version 2015.3.26.1322 | |
// @description musicbrainz.org: displays AB links in release pages | |
// @compatible opera(12) | |
// @compatible opera+violentmonkey | |
// @namespace https://github.com/jesus2099/konami-command | |
// @downloadURL https://gist.github.com/jesus2099/8e223f09d64d831a9514/raw/mb_ACOUSTICBRAINZ-LINKS.user.js | |
// @updateURL https://gist.github.com/jesus2099/8e223f09d64d831a9514/raw/mb_ACOUSTICBRAINZ-LINKS.user.js | |
// @author PATATE12 | |
// @licence CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/) | |
// @since 2015-03-24 | |
// @grant none | |
// @include http*://*.mbsandbox.org/release/* | |
// @include http*://*musicbrainz.org/release/* | |
// @exclude *.org/release/*/* | |
// @exclude *//*/*mbsandbox.org/* | |
// @exclude *//*/*musicbrainz.org/* | |
// @run-at document-end | |
// ==/UserScript== | |
"use strict"; | |
var recordings = document.querySelectorAll("div#content table.tbl > tbody > tr > td a[href*='/recording/']"); | |
for (var rec = 0; rec < recordings.length; rec++) { | |
var mbid = recordings[rec].getAttribute("href").match(/\/recording\/([a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12})$/i); | |
if (mbid) { | |
var td = !getParent(recordings[rec], "dd") && getParent(recordings[rec], "td"); | |
if (td) { | |
td.appendChild(document.createTextNode(" ")); | |
var ablink = document.createElement("a"); | |
ablink.setAttribute("href", "http://acousticbrainz.org/"+mbid[1]); | |
// ablink.setAttribute("target", "_blank"); | |
ablink.style.setProperty("float", "right"); | |
var abimg = document.createElement("img"); | |
abimg.setAttribute("src", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wMYEzUBNufu8wAAAstJREFUKM9dkltoU2cAgL///Oe0iWlqbZOQVC1T5zqVGp/iynAKTn3YBC+1G74MpuyhTnGCIkPmFSoKsrmBA2Gsq1NsdcMhQ30QdZvKVqX2Qt1obUx0bZImtrnfzvn3sFGG39v38L19gv+xZ9clAE6dbuFl9tU52oH9wArgVx1gy8aD2G2O6WDnjh9rDGl6AB3DltHufKkxcud1hAaQOBHPoLduOgTAdxf24Vz4rfF923Dz3XBhRbGstykl6lWxGBH+zb+ofLJRjA1ALgWAXLJoFV0/HGLNuqPuhrr07sD89IfL5sRjQxHfWY8zJWcYpUBS1S4WvkVu9EpwLei6G378VACsXnvM3jQne6BY1lpczsKOw5tCn7Ds99bUvbeqw1O1t7oHA08mc9WrNTNnYJmP0ORxDaBCKo/NsLa3Lp9IvONP9pdNeaHU09xe/W7H2AIZOtJSOpcqPbh0hdwU6BV+4Ix22eOdqWqq7CMxmyea1N8IzJ9aaaw9fw6Bv3D1/aa+bcM3Ep2hwtzBn5rktc8Q44P9QI1maXJyQ0/n1xWFPD2jzuCzeOVWdfM9b/Cr8LaHHwydDWQexRxl/XK9cDSK7CTyyoE2rHK96PbOnhTKmpmrdNLvXvLzxsZCumogdr2p749v7rv87UAwQvaigq4hlVgTIbvw83huWAN2KiF7bcUMzeHf3n5+rVfG/05/et/ln9tQdh/UEOtHVXLpgJqYZWJ1WKgogOxOp/r8r73ZO1Ht2+4opKSktLgozdqsKMwLGtGEgSza0D8eInE7Q/nk6Xg+AiABHCs/sr+ocu2actSFXOnYPb2c85lCLQXW50Xpsa70zlFSHV/E89H/9kMHsBezQgmNsVkNT3pfsfauGriaLukVPiBrYo1tjo1EAc54fDw1kxyPZ/4NAQNAKPVXyP3qnxsmYqXzXk9w63h0evJu72y2jD+f9n8A+M01COE/AgcAAAAASUVORK5CYII="); | |
abimg.setAttribute("alt", "AcousticBrainz"); | |
abimg.setAttribute("title", "AcousticBrainz"); | |
ablink.appendChild(abimg); | |
td.insertBefore(ablink, td.firstChild); | |
} | |
} | |
} | |
function getParent(obj, tag, cls) { | |
var cur = obj; | |
if (cur.parentNode) { | |
cur = cur.parentNode; | |
if (cur.tagName == tag.toUpperCase() && (!cls || cls && cur.className.match(new RegExp("\\W*"+cls+"\\W*")))) { | |
return cur; | |
} else { | |
return getParent(cur, tag, cls); | |
} | |
} else { | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment