Created
March 19, 2011 22:05
-
-
Save tobbez/877852 to your computer and use it in GitHub Desktop.
Add multiple formats helper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Add multiple formats helper | |
// @namespace tobbez | |
// @description Helper for adding multiple formats to an album | |
// @include http*://*what.cd/torrents.php* | |
// @include http*://*what.cd/upload.php* | |
// ==/UserScript== | |
(function () { | |
/* | |
* Settings | |
* | |
* releaseDescription: This string will be added to the release | |
* description box on the upload page. | |
* | |
* formats: Format/bitrate pairs exactly as they appear on upload.php. | |
*/ | |
var settings = { "releaseDescription": "", | |
"formats": [["MP3", "320"] | |
,["MP3", "V0 (VBR)"] | |
,["MP3", "V2 (VBR)"] | |
,["AAC", "320"] | |
,["Ogg Vorbis", "q8.x (VBR)"]]}; | |
if (document.location.hostname.match(/what\.cd$/) | |
&& document.location.search != "") { | |
var populateFieldsFunc = function (reqData) { | |
document.getElementById("format").value = reqData["format"][0]; | |
document.getElementById("bitrate").value = reqData["format"][1]; | |
var torrentfrags = reqData.torrent.split(" / "); | |
document.getElementById("media").value = torrentfrags[torrentfrags.length-1]; | |
document.getElementById("release_desc").value = settings.releaseDescription; | |
if (!reqData.release.match(/^Original Release/)) { /* Populate remaster info if relevant */ | |
document.getElementById("remaster").click(); | |
/* We can only match completly reliably with all the | |
* relase info present. If some if is missing, we | |
* cannot know which. */ | |
var remastersJson = JSON.parse(document.getElementById("json_remasters").value); | |
var foundRemaster = false; | |
if (reqData.release.split(" / ").length == 3) { | |
var year, label, yearLabel, catNum, relTitle; | |
[yearLabel, catNum, relTitle] = reqData.release.split(" / "); | |
[year, label] = yearLabel.split(" - "); | |
for (var i = 0; i < remastersJson.length; ++i) { | |
if (remastersJson[i].RemasterCatalogueNumber == catNum | |
&& remastersJson[i].RemasterRecordLabel == label | |
&& remastersJson[i].RemasterTitle == relTitle | |
&& remastersJson[i].RemasterYear == year) { | |
document.getElementById("groupremasters").value = i; | |
var evt = document.createEvent("HTMLEvents"); | |
evt.initEvent("change", true, false); | |
document.getElementById("groupremasters").dispatchEvent(evt); | |
foundRemaster = true; | |
break; | |
} | |
} | |
} else { /* We can only use year, which may not be unique */ | |
var year = reqData.release.split(" - ")[0]; | |
var hits = 0, remasterValue = null; | |
for (var i = 0; i < remastersJson.length; ++i) { | |
if (remastersJson[i].RemasterYear == year) { | |
++hits; | |
remasterValue = i; | |
} | |
} | |
if (hits == 1) { /* Year was unique */ | |
document.getElementById("groupremasters").value = remasterValue; | |
var evt = document.createEvent("HTMLEvents"); | |
evt.initEvent("change", true, false); | |
document.getElementById("groupremasters").dispatchEvent(evt); | |
foundRemaster = true; | |
} | |
} | |
if (!foundRemaster) { | |
var warningDiv = document.createElement("div"); | |
warningDiv.className = "box"; | |
warningDiv.style.margin = "0px auto"; | |
warningDiv.style.width = "660px"; | |
warningDiv.innerHTML = | |
"<div class=\"head\"><strong>Warning</strong></div>" | |
+ "<div style=\"padding: 0.5em;\"><p>It was not possible to set " | |
+ "<strong>Edition information</strong> properly for the " | |
+ "release with the following data:</p><pre style=\"padding-left: 20px;\">" | |
+ reqData.release | |
+ "</pre><p>Please do it manually.</p></div>"; | |
var content = document.getElementById("content"); | |
content.insertBefore(warningDiv, content.firstChild); | |
} | |
} | |
}; | |
var launchPagesFunc = function (reqData) { | |
var sfrags = document.location.search.substring(1).split("&"); | |
var albumId; | |
for (var i = 0; i < sfrags.length; ++i) { | |
var name, val; | |
[name, val] = sfrags[i].split("="); | |
if (name == "id") { | |
albumId = val; | |
break; | |
} | |
} | |
var uploadUrl = "upload.php?groupid=" + albumId + "#amdata="; | |
for (var i = 0; i < settings.formats.length; ++i) { | |
var freqdata = reqData; | |
freqdata["format"] = settings.formats[i]; | |
window.open(uploadUrl + JSON.stringify(freqdata, "window" + String(i))); | |
} | |
}; | |
if (document.location.pathname == "/torrents.php") { | |
var gtels = document.getElementsByClassName('group_torrent'); | |
var currentEditionInfo = null; | |
for (var i = 0; i < gtels.length; ++i) { | |
if (!gtels[i].id.match(/^torrent/)) { | |
currentEditionInfo = gtels[i].firstElementChild.firstElementChild.innerHTML; | |
} else { | |
(function (cgtel, edinfo) { | |
var reqdata = {"release": edinfo, | |
"torrent": cgtel.getElementsByTagName('span')[0].nextElementSibling.innerHTML.substring(2)}; | |
if (!reqdata["torrent"].match(/Lossless/)) return; | |
if (reqdata.release.match(/^Unknown Release/)) return; | |
var splitterElem = document.createTextNode("| "); | |
var linkElem = document.createElement('a'); | |
linkElem.innerHTML = "AM"; | |
linkElem.title = "Add multiple formats"; | |
linkElem.href = '#'; | |
linkElem.addEventListener("click", function () { launchPagesFunc(reqdata); } , false); | |
var linkSpan = cgtel.getElementsByTagName('span')[0]; | |
linkSpan.insertBefore(splitterElem, linkSpan.lastChild); | |
linkSpan.insertBefore(linkElem, linkSpan.lastChild); | |
})(gtels[i], currentEditionInfo); | |
} | |
} | |
} else if (document.location.pathname == "/upload.php" && document.location.hash != "") { | |
var hashdata = document.location.hash.substring(1).split("&"); | |
var reqdata = null; | |
for (var i = 0; i < hashdata.length; ++i) { | |
var name, val; | |
[name, val] = hashdata[i].split("="); | |
if (name == "amdata") { | |
reqdata = JSON.parse(val); | |
break; | |
} | |
} | |
if (reqdata) { | |
populateFieldsFunc(reqdata); | |
document.title = reqdata["format"].join("/") + " Upload :: What.CD"; | |
} | |
} | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment