Greasy Fork 支持简体中文。

恢复求生之路2创意工坊订阅

通过本地workshop文件夹恢复求生之路2创意工坊订阅

// ==UserScript==
// @name         恢复求生之路2创意工坊订阅
// @namespace    http://tampermonkey.net/
// @version      2024-01-11
// @description  通过本地workshop文件夹恢复求生之路2创意工坊订阅
// @author       blade_
// @match        https://steamcommunity.com/app/550/workshop/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=greasyfork.org
// @grant        GM_registerMenuCommand
// @license      MIT
// ==/UserScript==

function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

function getSessionValue(sessionName) {
    var cookies = document.cookie.split(';');
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i].trim();
        if (cookie.indexOf(sessionName + '=') === 0) {
            return cookie.substring(sessionName.length + 1);
        }
    }
    return null;
}

async function getWoekshop() {
    // open directory picker
    const dirHandle = await window.showDirectoryPicker({mode:"readwrite"});
    return dirHandle;
}

async function getModList(dirHandle){
    //console.log(dirHandle)
    for await (const item of dirHandle.values()) {
        if (item.kind == 'file') {
            item.getFile().then(recovery)
            sleep(20)
        }
    }
}

async function recovery(fileHanlde){
    //console.log(fileHanlde)
    if(fileHanlde.type == 'image/jpeg') {
        let idx = fileHanlde.name.indexOf('.jpg')
        let modid = fileHanlde.name.substr(0, idx)
        subscribe(modid)
    }
}

function subscribe(modid){
    let sessionId = getSessionValue('sessionid')
    if(!sessionId) {
        console.log("sessionid not fond, key: sessionid")
    }
    // 创建请求数据
    const data = {
        id: modid,
        sessionid: sessionId,
        appid: 550,
        include_dependencies: false
    };
    // 发送添加到集合的请求
    jQuery.ajax({
        type: "POST",
        url: 'https://steamcommunity.com/sharedfiles/subscribe',
        data: data,
        success: function(response){
            if(response.success === 1){
                console.log('subscribe successfly, id:', modid)
            }else {
                console.log('subscribe failedid:', modid)
            }
        }
    });
}

function unsubscribe(modid){
    let sessionId = getSessionValue('sessionid')
    if(!sessionId) {
        console.log("sessionid not fond, key: sessionid")
    }
    // 创建请求数据
    const data = {
        id: modid,
        sessionid: sessionId,
        appid: 550,
    };
    // 发送添加到集合的请求
    jQuery.ajax({
        type: "POST",
        url: 'https://steamcommunity.com/sharedfiles/unsubscribe',
        data: data,
        success: function(response){
            if(response.success === 1){
                console.log('unsubscribe successfly, id:', modid)
            }else {
                console.log('unsubscribe failedid:', modid)
            }
        }
    });
}

(function() {
    'use strict';
    // Your code here...
    const button = document.createElement('button');
    button.innerText = "恢复求生之路创意工坊订阅";
    document.body.firstChild.after(button);
    button.addEventListener('click', async function () {
        getWoekshop().then(getModList)
    });
    // GM_registerMenuCommand('测试订阅功能(modid:3131682175)',()=>{
    //     subscribe(3131682175)
    // })
    // GM_registerMenuCommand('测试取消订阅(modid:3131682175)',()=>{
    //     unsubscribe(3131682175)
    // })
    // GM_registerMenuCommand('测试延时功能(倒数10s)',async()=>{
    //     for(let i = 10; i >= 0; i--) {
    //         console.log("countdown:",i)
    //         await sleep(1000)
    //     }
    // })
})();