Artist Credits Helper
Split and fill artist credits, append character voice actor credit, and guess artists from track titles.
Split and fill artist credits, append character voice actor credit, and guess artists from track titles.
Export Brainz ratings (to a JSON flat file) is a very interesting userscript, written by @HebPlacesAGehen:
// ==UserScript==
// @name Export Brainz ratings
// @version 1.1
// @include /^https://musicbrainz.org/user/\w+/ratings/recording/
// @grant GM.getValue
// @grant GM.setValue
// ==/UserScript==
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename); element.style.display = 'none';
document.body.appendChild(element); element.click(); document.body.removeChild(element);
}
(async () => {
let ratingDict = JSON.parse(await GM.getValue("ratings", "{}"));
let $ratingContainers = document.querySelectorAll(".inline-rating"); for(let $ratingContainer of $ratingContainers){
let $ratingEl = $ratingContainer.querySelector(".remove-rating");
if(!$ratingEl){ continue }
// Get rating
let rating = Number.parseInt($ratingEl.text);
// Get recordingId
let $container = $ratingContainer.parentElement;
let $anchor = $container.querySelector('a[href^="/recording"]');
if(!$anchor){ continue }
let recordingId = $anchor.href.split("/").pop(-1);
if(recordingId){
ratingDict[recordingId] = rating * 0.2;
//console.log(`${recordingId} rated ${rating}`);
}
}
await GM.setValue("ratings", JSON.stringify(ratingDict));
// Get next page
let $nextPage = document.querySelector("ul.pagination li:last-child a");
if($nextPage){
window.setTimeout(() => $nextPage.click(), 1000);
} else {
download("ratings.json", JSON.stringify(ratingDict, null, "\t"));
}
})();
It does so much with a so small code!
I have just changed this JSON.stringify
small parameter to get a more human readable download file:
-- download("ratings.json", JSON.stringify(ratingDict));
++ download("ratings.json", JSON.stringify(ratingDict, null, "\t"));
Apparently this is an old script, but @SothoTalKer just added it to the userscript wiki page so I tried it out. Pretty cool!
“Display clickable icons, without opening each entity page, for release-group, release, recording and work external links: e.g. Amazon, Bandcamp, Discogs etc”
Hi all
I would like to download this script but I dont know how. Cant find it on the Userscript Wiki Page.
It’s on the ‘official’ userscript wiki page, rather than Colbydrays personal one (who still gets all the credit for making up 90% of the ‘official’ one)
Edit: Oh, maybe you couldn’t find it because I changed the name to something shorter, to not gunk up the list? Maybe I shouldn’t have done that!
It’s in there as ‘Shortcuts to external links’
Hi Aerozol
Thank you for the info. I have found it
Ps. very happy with this User Script. Thank you again
EDIT: don’t use this, see the post below
This isn’t really specific to MB but it might be helpful. I created a tiny script to remove the prompt on Tidal (specifically on listen.tidal.com
, not tidal.com
) that asks you to sign up/log in, so you can view credits without creating an account.
GitHub (click the ‘Raw’ button to install)
// ==UserScript==
// @name Remove Tidal sign up/log in prompt
// @namespace cherryblossom.dev
// @description Remove the sign up/log in prompt on Tidal
// @supportURL https://gist.github.com/cherryblossom000/5dbf2de13b4d0084f49509533431c450
// @downloadURL https://gist.githubusercontent.com/cherryblossom000/5dbf2de13b4d0084f49509533431c450/raw/rm-tidal-login-prompt.user.js
// @match https://listen.tidal.com/*
// @grant none
// @version 1.0.0
// @author cherryblossom
// ==/UserScript==
const waitFor = async selector =>
new Promise(resolve => {
const existing = document.querySelector(selector)
if (existing) return resolve(existing)
new MutationObserver((mutations, observer) => {
const added = mutations.flatMap(m => [...m.addedNodes]).find(n => n.matches?.(selector))
if (added) {
resolve(added)
observer.disconnect()
}
}).observe(document.body, {subtree: true, childList: true})
})
waitFor('.ReactModalPortal').then(div => div.remove())
This is staying installed after-all - much more useful than I thought it would be, even though it takes quite a wide chunk of the release tables!
Some simple tasks don’t need a userscript and can be done with a user stylesheet:
Source | Install (GitHub)
Install (Greasy Fork) | Install (OpenUserJS)
Batch query AcoustID of recordings on release and collection page.
New userscript by @zabey!
Easily submit tags on Bandcamp pages to Musicbrainz.
New userscript time!
Youtube Link Canonicalizer
Youtube channels have several different ways to link to them, but the most common one is @username
. However, URLs of this type can be changed by the channel owner at any time, which leads to broken links in the database. To prevent this, you can use a channel ID to reference a channel, which this userscript makes trivial to obtain!
It seeds releases from the official online catalog of the Czech Supraphon label. I just forked the murdos repo and based it on the Metal Archives importer. I’m not sure if anyone would be interested in this script, but I’ll be using (and thus testing) it extensively, fixing whatever problem comes along. I don’t intend to submit a PR until I feel like it’s reliable.
As of now, it’s capable of seeding a release with the correct number of media and tracks, and most of the release metadata. I also had to patch the mbimport.js
lib with two novelties. One is the ability to set the discography entry page and the other is the ability to seed multiple release events.
I have a somewhat troubled relationship with JavaScript (I hate it), so if you see any crimes against the language or have any suggestion whatsoever, please do send me some kind of message somewhere (do we have direct messages here, or should I create a separate topic?).
No screenshot, because it doesn’t do anything flashy.
New userscript from me.
When adding track relationships for some albums with big tracklists, often times credits are listed out like this:
Composer: John Doe (1.1, 1.3, 2.4~9)
Piano: Jane Doe (2.1)
…
This is especially the case for soundtracks and other stuff I often import from VGMdb. This tool adds a textbox at the top of the relationships page that allows you to past in these “1.1, 1.3, …” fields in them and have them automatically select all the respective recordings or works. It makes adding things to big releases with 100+ tracks a lot faster and a lot less prone to errors as opposed to checking all the recordings/works manually.
Hi @yyoung, didn’t you know Otringal’s Compare AcoustIDs Easier!?
There are more and more userscripts!
It’s very alive and interesting.
Musicbrainz Entity Images
Display images, logos, and posters on artist, place, label, and event pages!
No pictures this time, but heres an example for each of the types if you’re interested:
Artist, Place, Label, Event
Import releases from Wolfgang’s
Adds a button to seed MusicBrainz releases from Wolfgang’s release pages (sample release page). Wolfgang’s provides streaming for a wide collection of concert recordings along with live session recorded at the Daytrotter and Paste Magazine Studios. Over 76K recordings are hosted by the site.
While the site says only 30 second samples are available, the site currently lets you stream the full recordings without logging in. (The pages also contain the links to the .mp3 files in the HTML source)
Let me know if you run into any problems or have suggestions for changes.