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 recording-artist instrument // @namespace mbz-loujine // @author loujine // @version 2015.11.08 // @downloadURL https://bitbucket.org/loujine/musicbrainz-scripts/raw/default/mbz-setinstrument.user.js // @updateURL https://bitbucket.org/loujine/musicbrainz-scripts/raw/default/mbz-setinstrument.user.js // @supportURL https://bitbucket.org/loujine/musicbrainz-scripts // @icon https://bitbucket.org/loujine/musicbrainz-scripts/raw/default/icon.png // @description musicbrainz.org: Convert to "string" instrument AR on selected recordings // @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 setInstrument(fromType, toType, attrIds, credit) { var recordings = MB.relationshipEditor.UI.checkedRecordings(), vm = MB.releaseRelationshipEditor, attrIds = attrIds || []; recordings.forEach(function(recording) { var relationships = recording.getRelationshipGroup(fromType, vm); relationships.forEach(function(relation) { var attrs = relation.attributes(); relation.linkTypeID(toType); attrIds.forEach(function(attrId) { attrs.push({ type: MB.attrInfoByID[attrId] }); }); relation.setAttributes(attrs); attrIds.forEach(function(attrId, idx) { relation.attributes()[idx].creditedAs(credit); }); }); }); } // container defined in mbz-loujine-releditor.js $('div.tabs').after( $container .append( $('<h3></h3>', {'text': 'Recording-performer instrument attributes'}) ) .append( $('<input></input>', { 'id': 'batch-unset-orchestra', 'type': 'button', 'value': 'Unset "Orchestra"' }) ) .append( $('<input></input>', { 'id': 'batch-unset-instrument', 'type': 'button', 'value': 'Unset instrument' }) ) .append( $('<input></input>', { 'id': 'batch-set-string-quartet', 'type': 'button', 'value': 'Set "String Quartet"' }) ) .append( $('<input></input>', { 'id': 'batch-set-piano-trio', 'type': 'button', 'value': 'Set "Piano Trio"' }) ) .append( $('<input></input>', { 'id': 'batch-set-piano', 'type': 'button', 'value': 'Set "Piano"' }) ) ); // imported from mbz-loujine-common.js: linkTypeXXX, ttrIdXXX $(document).ready(function () { $('#batch-unset-orchestra').click(function () { setInstrument(linkTypeOrchestra, linkTypePerformer); releditorEditNote(meta); }); $('#batch-unset-instrument').click(function () { setInstrument(linkTypeInstrument, linkTypePerformer); releditorEditNote(meta); }); $('#batch-set-string-quartet').click(function () { setInstrument(linkTypePerformer, linkTypeInstrument, [attrIdStrings], 'string quartet'); releditorEditNote(meta, 'Use "strings" instrument AR for a String Quartet artist'); }); $('#batch-set-piano-trio').click(function () { setInstrument(linkTypePerformer, linkTypeInstrument, [attrIdPiano, attrIdViolin, attrIdCello]); releditorEditNote(meta, 'Use instruments AR for a Piano Trio artist'); }); $('#batch-set-piano').click(function () { setInstrument(linkTypePerformer, linkTypeInstrument, [attrIdPiano]); releditorEditNote(meta); }); return false; });