- // ==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%);
- }
- `);