Greasy Fork is available in English.

Steam便捷加入购物车

Steam便捷加入购物车,不自动跳转购物车页面。

// ==UserScript==
// @name         Steam便捷加入购物车
// @namespace    Steam便捷加入购物车
// @version      0.4
// @description  Steam便捷加入购物车,不自动跳转购物车页面。
// @author       HCLonely
// @match        https://store.steampowered.com/*
// @require      https://cdn.bootcss.com/sweetalert/2.1.2/sweetalert.min.js
// @supportURL   https://blog.hclonely.com/posts/578f9be7/
// @homepage     https://blog.hclonely.com/posts/578f9be7/
// @grant        GM_addStyle
// @run-at       document-end
// ==/UserScript==

(function($) {
    'use strict';
    function addToCart(appid){
        swal({
            title: "Steam便捷加入购物车",
            text: "正在获取游戏信息...",
            icon: "info",
        });
        $.ajax({
            url:'https://store.steampowered.com/app/'+appid,
            type:'get',
            success:(data)=>{
                try{
                    let addToCart=data.match(/\<form name\=\"add\_to\_cart[\w\W]*?\<\/form\>/gim);
                    if(addToCart){
                        swal({
                            title: "Steam便捷加入购物车",
                            text: "获取游戏信息成功! \n正在处理游戏信息...",
                            icon: "info",
                        });
                        let inputArr=addToCart[0].match(/\<input type\=\"hidden\".*?\>/gim);
                        let postData={};
                        for(let i=0;i<inputArr.length;i++){
                            let input=$(inputArr[i]);
                            let key=input.attr('name');
                            let value=input.attr('value');
                            postData[key]=value;
                        }
                        swal({
                            title: "Steam便捷加入购物车",
                            text: "获取游戏信息成功! \n处理游戏信息完成! \n正在加入购物车...",
                            icon: "info",
                        });
                        $.ajax({
                            url:'https://store.steampowered.com/cart/',
                            type:'post',
                            data:postData,
                            success:(data)=>{
                                try{
                                    let test=new RegExp('\<div class\=\"cart_row.*?data\-ds\-appid\=\"'+appid+'\"','g');
                                    if(test.test(data)){
                                        swal({
                                            title: "Steam便捷加入购物车",
                                            text: "获取游戏信息成功! \n处理游戏信息完成! \n加入购物车成功!",
                                            icon: "success",
                                        });
                                    }else{
                                        swal({
                                            title: "Steam便捷加入购物车",
                                            text: "获取游戏信息成功! \n处理游戏信息完成! \n加入购物车失败!",
                                            icon: "error",
                                        });
                                    }
                                }catch(e){
                                    swal({
                                        title: "Steam便捷加入购物车",
                                        text: "获取游戏信息成功! \n处理游戏信息完成! \n加入购物车失败!",
                                        icon: "error",
                                    });
                                }
                            },
                            error:()=>{
                                swal({
                                    title: "Steam便捷加入购物车",
                                    text: "获取游戏信息成功! \n处理游戏信息完成! \n加入购物车失败!",
                                    icon: "error",
                                });
                            },
                        });
                    }else{
                        swal({
                            title: "Steam便捷加入购物车",
                            text: "获取游戏信息成功! \n没有找到添加购物车按钮,请手动添加!",
                            icon: "warning",
                            buttons: {
                                cancel: "关闭",
                                手动添加: true,
                            },
                        })
                            .then((value) => {
                            if(value) window.open('https://store.steampowered.com/app/'+appid,'_blank')
                        });
                    }
                }catch(e){
                    swal({
                        title: "Steam便捷加入购物车",
                        text: "脚本出错!",
                        icon: "error",
                    });
                    console.error(e);
                }
            },
            error:e=>{
                swal({
                    title: "Steam便捷加入购物车",
                    text: "获取游戏信息失败!",
                    icon: "error",
                });
                console.error(e);
            },
        });
    }
    function addBtn(){
        $('.ds_options').parent().not(':contains("添加至购物车")').append(`<div class="ds_options hclonely btnv6_green_white_innerfade"><span>添加至购物车</span></div>`);
        $('.ds_options.hclonely').click(function(e){
            e.preventDefault();
            addToCart($(this).parent().attr('data-ds-appid'));
        });
    }

    addBtn();

    setInterval(()=>{
        if($('.ds_options').parent().not(':contains("添加至购物车")').length>0) addBtn();
    },1500);

    GM_addStyle(`.hclonely{position: absolute;right: 0;top: 25px;z-index: 999999;padding: 0 !important;}`);

})(jQuery);