Greasy Fork is available in English.

Steam_Zoom_Like

批量点赞Steam动态朋友圈, 原作者 Garen

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name:zh-CN            Steam 动态批量点赞
// @name                  Steam_Zoom_Like
// @namespace             https://blog.chrxw.com
// @supportURL            https://blog.chrxw.com/scripts.html
// @contributionURL       https://afdian.com/@chr233
// @version               1.8
// @description:zh-CN     批量点赞Steam动态朋友圈, 原作者 Garen
// @description           批量点赞Steam动态朋友圈, 原作者 Garen
// @author                Garen, Chr_
// @license               AGPL-3.0
// @icon                  https://blog.chrxw.com/favicon.ico
// @match                 https://steamcommunity.com/id/*/home*
// @match                 https://steamcommunity.com/profiles/*/home*
// @grant                 GM_addStyle
// @grant                 GM_registerMenuCommand
// ==/UserScript==

// 原版脚本: https://greasyfork.org/zh-CN/scripts/379844

(function () {
    'use strict';

    // 获取添加按钮的父元素
    const titleArea = document.querySelector('div.blotter_page_title');

    // 创新点赞按钮
    const btnArea = document.createElement("div");
    btnArea.className = "panel_szl";
    titleArea.appendChild(btnArea);

    const chkReview = genChk("评测", "发布评测", "szl_chk_review", btnArea);
    const chkPurchase = genChk("购买", "购买新游戏", "szl_chk_purchase", btnArea);
    const chkScreenshot = genChk("截图", "上传截图", "szl_chk_image", btnArea);
    const chkUserstatus = genChk("状态", "用户状态", "szl_chk_userstatus", btnArea);
    const chkOther = genChk("其它", "艺术作品, 指南, 创意工坊, 其它", "szl_chk_other", btnArea);
    const btnLike = genBtn("开始点赞", "btn_szl", startLike, btnArea);

    let t = 0;
    let autoStart = localStorage.getItem("szl_auto") === "true";

    function startLike() {
        if (t === 0) {
            btnLike.textContent = "停止点赞";
            t = setInterval(() => {
                const elemets = document.querySelectorAll("div.blotter_day>div.blotter_block>div[class]:not([like])");
                for (let ele of elemets) {
                    const clsName = ele.className;
                    let a = undefined;

                    if (chkReview.checked && clsName === "blotter_recommendation") {
                        a = ele.querySelector("div.control_block>a[onclick^='UserReviewVoteUp']:not(.btn_active)");
                    } else if (
                        (chkPurchase.checked && clsName === "blotter_gamepurchase") ||
                        (chkScreenshot.checked && clsName === "blotter_screenshot") ||
                        (chkUserstatus.checked && clsName === "blotter_userstatus") ||
                        (chkOther.checked && clsName !== "blotter_gamepurchase" && clsName !== "blotter_screenshot" && clsName !== "blotter_userstatus")
                    ) {
                        a = ele.querySelector("div.blotter_control_container>a[id^='vote_up']:not(.active)");
                    }

                    if (a) {
                        ele.setAttribute("like", "");
                        a.click();
                        break;
                    }
                }
            }, 100);
        } else {
            btnLike.textContent = "开始点赞";
            clearInterval(t);
            t = 0;
        }
    }

    GM_registerMenuCommand(autoStart ? "自动开始点赞 [开]" : "自动开始点赞 [关]", () => {
        autoStart = !autoStart;
        localStorage.setItem("szl_auto", autoStart);
        ShowAlertDialog("提示", "设置已保存, 刷新页面后生效");
        if (!autoStart && t > 0) {
            startLike();
        }
    });

    if (autoStart) {
        startLike();
    }

    function genChk(name, title, key, parent) {
        const d = document.createElement("div");
        const l = document.createElement("label");
        const i = document.createElement("input");
        d.className = "container_szl";
        i.textContent = name;
        i.title = title;
        i.type = "checkbox";
        i.id = key;
        i.checked = localStorage.getItem(key) === "true";
        i.addEventListener('change', () => { localStorage.setItem(key, i.checked); });
        l.title = title;
        l.textContent = name;
        l.setAttribute("for", key);
        d.appendChild(i);
        d.appendChild(l);
        parent.appendChild(d);
        return i;
    }
    function genBtn(name, cls, func, parent) {
        const b = document.createElement("button");
        b.textContent = name;
        b.className = cls;
        b.addEventListener("click", func);
        parent.appendChild(b);
        return b;
    }
})();

GM_addStyle(`
div.panel_szl {
    float: right;
    margin-right: 2%;
    margin-top: -2%;
    display: inline-flex;
}
div.panel_szl > * {
    margin-left: 6px;
}
div.container_szl {
    align-items: center;
    display: flex;
}
button.btn_szl {
    width: 75px;
    border-radius: 2px;
    border: none;
    padding: 1px;
    display: inline-block;
    cursor: pointer;
    text-decoration: none !important;
    color: #fff !important;
    background: #acb5bd;
    background: -webkit-linear-gradient(top, #acb5bd 5%, #414a52 95%);
    background: linear-gradient(to bottom, #acb5bd 5%, #414a52 95%);
}
`);