// ==UserScript==
// @name Steam Community - All Workshop Items Subscriber
// @namespace Royalgamer06
// @version 0.4.1
// @description Subscribes or unsubscribes to all workshop items from a particular AppID
// @author Royalgamer06
// @include *://steamcommunity.com/workshop/browse/?appid=*
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js
// @downloadURL https://update.greasyfork.icu/scripts/19598/Steam%20Community%20-%20All%20Workshop%20Items%20Subscriber.user.js
// @updateURL https://update.greasyfork.icu/scripts/19598/Steam%20Community%20-%20All%20Workshop%20Items%20Subscriber.meta.js
// ==/UserScript==
this.$ = this.$ = $.noConflict(true);
$(document).ready(function() {
var html = '
Subscriptions:
';
$(".panel:first").prepend(html);
$("#suball").click(function() { subAll("subscribe"); });
$("#unsuball").click(function() { subAll("unsubscribe"); });
});
function subAll(method) {
var modal = ShowBlockingWaitDialog("Executing…", "Please wait until all requests finish. \nThe page will automatically reload when it is finished.");
const appid = location.href.split("appid=")[1].split("&")[0];
var pageinfo = $(".workshopBrowsePagingInfo").text().replace(",", "");
var split = pageinfo.split(" ");
var total = 0;
for (var i = 0; i < split.length; i++) {
if (split[i].match(/^[0-9]+$/) !== null) {
total = parseInt(split[i]);
}
}
var loaded = 1;
const lastpage = Math.ceil(total/30);
for (var p = 1; p <= lastpage; p++) {
var url = location.href;
if (url.indexOf("p=") > -1) {
url = url.split("p=")[0] + "p=" + p + url.split("p=")[1].replace(url.split("p=")[1].split("&")[0], "");
} else {
url = url + "&p=" + p;
}
setTimeout(function() {
$.get(url, function(data) {
data = data.replace(/src="[^"]*"/ig, "");
$(".workshopItemPreviewHolder", data).each(function() {
let wsid = $(this).attr("id").replace("sharedfile_","");
setTimeout(function() {
$.post("//steamcommunity.com/sharedfiles/" + method, { id: wsid, appid: appid, sessionid: g_sessionID }).always(function() {
loaded++;
modal.Dismiss();
if( loaded >= total ) {
location.reload();
} else {
modal = ShowBlockingWaitDialog( 'Executing…', 'Loaded ' + loaded + '/' + total + '.' );
}
});
}, 0);
});
delete data;
});
}, 0);
}
}