2 posts were merged into an existing topic: ROpdebee’s userscripts support thread
Import from Music Forest
Source | Install (GitHub)
Install (Greasy Fork) | Install (OpenUserJS)
Import releases from Music Forest into MusicBrainz.
Import from THBWiki
Source | Install (GitHub)
Install (Greasy Fork) | Install (OpenUserJS)
Import releases from THBWiki into MusicBrainz.
To celebrate the new year, I have released two new userscripts which should help you to add spoken vocals and copyright relationships faster. These are also teasers for the features which are still to come: Partially automated parsing of plain text credits and importing of (all) relationships from other sites like Discogs.
As a bonus I have finally released a few bookmarklets which I have been using for a while now and which had been buried in my (formerly private) feature branch for the above userscripts:
Not a new script but an old one that was apparently never mentioned here has a useful update for people dealing with parent works and subworks (mostly classical I guess with symphony/movements and opera/acts).
The Guess work/load subworks script is helping a lot to fill automatically the “edit relationships” page when consecutive tracks correspond to consecutive subworks of a parent work but has trouble dealing with tracks not corresponding exactly to the parent work structure:
- there was a way to deal with a subwork split between different tracks (marking them as “partial recording”)
- there was no way to deal with several subworks associated to the same track and this was solved in the new version 2022.1.28
There’s also an infobox 🛈 in the script now to explain what syntax the script expects for the different cases above
Artist Credits Helper
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 shortcut for relationships on MusicBrainz
“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:
Batch Query AcoustID
Source | Install (GitHub)
Install (Greasy Fork) | Install (OpenUserJS)
Batch query AcoustID of recordings on release and collection page.
New userscript by @zabey!
Bandcamp Tag Importer
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!
Supraphonline import script
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.