Last active
March 3, 2020 02:36
-
-
Save cking/cdc4ad9c7013dae1646dcacf66e1286a to your computer and use it in GitHub Desktop.
my edits for the steam workshop downloader
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== | |
// @author Sycam Inc (origionally Alvaro) | |
// @name Enhanced Steam Workshop Downloader | |
// @description Adds an extra button to download, supports collections and new workshop layout | |
// @include *steamcommunity.com/sharedfiles/filedetails/?id=* | |
// @include *steamcommunity.com/workshop/filedetails/?id=* | |
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js | |
// @grant GM_xmlhttpRequest | |
// @version 2.1 | |
// @license MIT | |
// @namespace https://greasyfork.org/users/6073 | |
// ==/UserScript== | |
var patt = new RegExp("[0-9]{2,15}"); | |
var id = patt.exec(document.URL); | |
var baseURL = "http://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v0001/"; | |
var baseURLCtn = "http://api.steampowered.com/ISteamRemoteStorage/GetCollectionDetails/v0001/"; | |
if (document.URL.indexOf("steamcommunity.com") != -1) { | |
if (document.URL.indexOf("workshop") != -1) { | |
addCollectionBtn(id); | |
} else { | |
addWorkshopBtn(id); | |
} | |
} | |
function prepareDownload(url, id) { | |
GM_xmlhttpRequest({ | |
method: "POST", | |
url: url, | |
data: "itemcount=1&publishedfileids[0]=" + id + "&format=json", | |
headers: { | |
"Content-Type": "application/x-www-form-urlencoded" | |
}, | |
onload: function (response) { | |
//console.log(response.responseText); | |
//debugger; | |
data = jQuery.parseJSON(response.responseText); | |
var fileurl = data.response.publishedfiledetails[0].file_url; | |
$("#SubscribeItemOptionAdd2").click(function (e) { | |
e.preventDefault(); //stop the browser from following | |
window.location.href = fileurl; | |
}); | |
}, | |
onerror: function (reponse) { | |
//alert('error'); | |
console.log(reponse); | |
} | |
}); | |
} | |
function download(url, id) { | |
GM_xmlhttpRequest({ | |
method: "POST", | |
url: url, | |
data: "itemcount=1&publishedfileids[0]=" + id + "&format=json", | |
headers: { | |
"Content-Type": "application/x-www-form-urlencoded" | |
}, | |
onload: function (response) { | |
//console.log(response.responseText); | |
//debugger; | |
data = jQuery.parseJSON(response.responseText); | |
var fileurl = data.response.publishedfiledetails[0].file_url; | |
console.log(fileurl); | |
window.open(fileurl); | |
}, | |
onerror: function (reponse) { | |
//alert('error'); | |
console.log(reponse); | |
} | |
}); | |
} | |
function addWorkshopBtn(id) { | |
var element = document.getElementById("SubscribeItemBtn"); | |
var button = document.createElement('span'); | |
button.setAttribute('class', 'general_btn share tooltip'); | |
//button.setAttribute('href', baseURLCtn + id); | |
button.innerHTML = '<span id="SubscribeItemOptionAdd2"><span>Download</span></span>'; | |
// Append the element after the real subscribe button | |
if (element.nextSibling) { | |
element.parentNode.insertBefore(button, element.nextSibling); | |
} else { | |
element.parentNode.appendChild(button); | |
} | |
prepareDownload(baseURL, id); | |
// Change the stupid text to the left of it | |
document.querySelectorAll(".game_area_purchase_game")[0].getElementsByTagName('h1')[0].setAttribute('style', 'width: 300px;'); | |
} | |
function addCollectionBtn(id) { | |
var element = document.getElementById("AddToCollectionBtn"); | |
var button = document.createElement('span'); | |
button.setAttribute('class', 'general_btn share tooltip'); | |
//button.setAttribute('href', baseURLCtn + id); | |
button.innerHTML = '<span id="SubscribeItemOptionAdd2"><span>Download</span></span>'; | |
// Append the element after the real subscribe button | |
if (element.nextSibling) { | |
element.parentNode.insertBefore(button, element.nextSibling); | |
} else { | |
element.parentNode.appendChild(button); | |
} | |
prepareDownloadCtn(baseURLCtn, id); | |
// Change the stupid text to the left of it | |
document.querySelectorAll(".game_area_purchase_game")[0].getElementsByTagName('h1')[0].setAttribute('style', 'width: 300px;'); | |
} | |
function prepareDownloadCtn(url, id) { | |
GM_xmlhttpRequest({ | |
method: "POST", | |
url: url, | |
data: "collectioncount=1&publishedfileids[0]=" + id + "&format=json", | |
headers: { | |
"Content-Type": "application/x-www-form-urlencoded" | |
}, | |
onload: function (response) { | |
//console.log(response); | |
data = jQuery.parseJSON(response.responseText); | |
$("#SubscribeItemOptionAdd2").click(function (e) { | |
e.preventDefault(); //stop the browser from following | |
$.each(data.response.collectiondetails[0].children, function(index, element) { | |
download(baseURL,element.publishedfileid); | |
}); | |
}); | |
}, | |
onerror: function (reponse) { | |
//alert('error'); | |
console.log(reponse); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment