Steam愿望单工具

批量导入和导出愿望单

目前为 2020-04-20 提交的版本。查看 最新版本

// ==UserScript==
// @name         Steam愿望单工具
// @namespace    sourcewater
// @version      0.1.1
// @description  批量导入和导出愿望单
// @author       sourcewater
// @match        https://store.steampowered.com/wishlist/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function importWL(){
        console.log("导入愿望单");
        let file=file_chooser.files[0];
        let freader=new FileReader();
        freader.readAsText(file);
        let appidlist;
        freader.onload=function(){
            appidlist=freader.result.split(",");
            if(appidlist.length==0) return;
            let i=0;
            let bdialog;
            function addWL(){
                AddToWishlist(appidlist[i],'add_to_wishlist_area', 'add_to_wishlist_area_success', 'add_to_wishlist_area_fail','1_5_9__407');
                if(i==(appidlist.length-1)){
                    if(i!=0) bdialog.Dismiss();
                    ShowAlertDialog("成功","已经全部添加至愿望单");
                    return;
                }else{
                    if(bdialog) bdialog.Dismiss();
                    bdialog=ShowBlockingWaitDialog('正在添加...',(i+1)+'/'+appidlist.length);
                    ++i;
                    setTimeout(addWL,500);
                }
            }
            addWL();
        }
    }

    function saveTxt(filename,data){
        let winObj=window.URL || window.webkitURL || window;
        let blob = new Blob([data],{type:'text/html'});
        let url=document.createElementNS("http://www.w3.org/1999/xhtml", "a");
        url.href=winObj.createObjectURL(blob);
        url.download = filename;
        let ev = document.createEvent("MouseEvents");
        ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        url.dispatchEvent(ev);
    }

    function exportWL(){
        let wl=[];
        for(let i=0;i<g_rgWishlistData.length;++i){
            wl.push(g_rgWishlistData[i].appid);
        }
        let wln=wl.length;
        saveTxt("wishlist_total_"+wln+".txt",wl);
    }

    function emptyWL(){
        console.log("清空愿望单");
        exportWL();
        let wl=[];
        for(let i=0;i<g_rgWishlistData.length;++i){
            wl.push(g_rgWishlistData[i].appid);
        }
        let i=0;
        let fi=0;
        let bdialog;
        function removeWL(){
            if(i==(wl.length-1)){
                if(i!=0) bdialog.Dismiss();
                if(fi==0){
                    ShowAlertDialog("成功","已经清空了所有愿望单!");
                }else{
                    ShowAlertDialog("成功","已经成功从愿望单移除了"+(i-fi)+"个,还有"+fi+"个失败了!");
                }
                return;
            }
            let appId=wl[i];
            jQuery.ajax({ type: "POST",url: g_strWishlistBaseURL + 'remove/',data: {'appid':appId, sessionid: g_sessionID},success:function(html){
                if(bdialog) bdialog.Dismiss();
                bdialog=ShowBlockingWaitDialog('正在移除...',(i+1-fi)+'/'+wl.length+'&nbsp;&nbsp;&nbsp;&nbsp;失败:'+fi);
                ++i;
                setTimeout(removeWL,500);
            }}).fail(function(html){
                ++fi;
                if(bdialog) bdialog.Dismiss();
                bdialog=ShowBlockingWaitDialog('正在移除...',(i+1-fi)+'/'+wl.length+'&nbsp;&nbsp;&nbsp;&nbsp;失败:'+fi);
                ++i;
                setTimeout(removeWL,500);
            }).always(function(){
                //
            });
        }
        ShowConfirmDialog("警告!", "你确定要清空愿望单?").done(function(){removeWL();});
    }

    let wl_header=document.getElementsByClassName("wishlist_header")[0];
    let wl_tools=document.createElement("span");
    wl_tools.style="margin-left:100px;";
    let export_btn=document.createElement("span");
    let import_btn=document.createElement("span");
    let empty_btn=document.createElement("span");
    export_btn.onclick=exportWL;
    empty_btn.onclick=emptyWL;
    export_btn.className="pulldown btnv6_blue_hoverfade btn_small";
    import_btn.className="pulldown btnv6_blue_hoverfade btn_small";
    empty_btn.className="btn_small s_s_s_empty_btn";
    export_btn.innerHTML="<span>导出愿望单</span>";
    import_btn.innerHTML="<span>导入愿望单</span>";
    empty_btn.innerHTML="<span>清空愿望单</span>";
    import_btn.style="position: relative;overflow: hidden;vertical-align:top;";
    let file_chooser=document.createElement("input");
    file_chooser.type="file";
    file_chooser.style="position: absolute;right: 0;top: 0;opacity: 0;display: inline-block;cursor:pointer;";
    file_chooser.onchange=importWL;
    import_btn.firstElementChild.appendChild(file_chooser);
    wl_tools.appendChild(export_btn);
    wl_tools.appendChild(import_btn);
    wl_tools.appendChild(empty_btn);
    wl_header.appendChild(wl_tools);
    let empty_btn_style=document.createElement("style");
    empty_btn_style.innerHTML=`
.s_s_s_empty_btn{
border-radius: 2px;
border: none;
padding: 1px;
display: inline-block;
cursor: pointer;
text-decoration: none !important;
float: right;
vertical-align: middle;
margin: 0px;
background-color:#9b1414;
color:#ffffff;
}
.s_s_s_empty_btn:hover{
color:#000000;
background-color:#ee5555;
}
`;
    document.head.appendChild(empty_btn_style);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址