NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
'use strict'; var meta = function() { // ==UserScript== // @name MusicBrainz: Batch-set guessed works // @namespace mbz-loujine // @author loujine // @version 2015.11.08 // @downloadURL https://bitbucket.org/loujine/musicbrainz-scripts/raw/default/mbz-setguessedworks.user.js // @updateURL https://bitbucket.org/loujine/musicbrainz-scripts/raw/default/mbz-setguessedworks.user.js // @supportURL https://bitbucket.org/loujine/musicbrainz-scripts // @icon https://bitbucket.org/loujine/musicbrainz-scripts/raw/default/icon.png // @description musicbrainz.org: Set best-guess related works // @compatible firefox+greasemonkey // @licence CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/) // @require https://greasyfork.org/scripts/13748-musicbrainz-common-files-for-the-relationships-editor/code/MusicBrainz:%20common%20files%20for%20the%20relationships%20editor.js?version=85768 // @require https://greasyfork.org/scripts/13747-musicbrainz-common-files/code/MusicBrainz:%20common%20files.js?version=85770 // @include http*://*musicbrainz.org/release/*/edit-relationships // @grant none // @run-at document-end // ==/UserScript== }; if (meta && meta.toString && (meta = meta.toString())) { var meta = {'name': meta.match(/@name\s+(.+)/)[1], 'version': meta.match(/@version\s+(.+)/)[1]}; } function validateDialog(recording, work) { var vm = MB.releaseRelationshipEditor; MB.relationshipEditor.UI.AddDialog({ source: recording, target: work, viewModel: vm }).accept(); } // imported from mbz-loujine-common.js: requestGET, mbzTimeout function setGuessedWork() { var recordings = MB.relationshipEditor.UI.checkedRecordings(), idx = 0; recordings.forEach(function (recording) { var url = '/ws/js/work/?q=' + encodeURIComponent($('#prefix')[0].value) + encodeURIComponent(recording.name) + '&artist=' + encodeURIComponent(recording.artist) + '&fmt=json&limit=1'; if (!recording.performances().length) { idx += 1; setTimeout(function () { requestGET(url, function (resp) { validateDialog(recording, JSON.parse(resp)[0]); }); }, idx * mbzTimeout); } }); } // imported from mbz-loujine-releditor.js: container $('div.tabs').after( $container .append( $('<h3></h3>', {'text': 'Search for works'}) ) .append( $('<span></span>', {'text': 'Prefix: '}) ) .append( $('<input></input>', { 'id': 'prefix', 'type': 'text', 'value': '' }) ) .append( $('<input></input>', { 'id': 'searchwork', 'type': 'button', 'value': 'Guess works' }) ) ); $(document).ready(function() { $('#searchwork').click(function() { setGuessedWork(); releditorEditNote(meta, 'Set guessed works'); }); return false; });