回复
10
查看
2504
收藏
21

31

赠楼

17%

赠楼率

1006

蒸汽

37

主题

691

帖子

2399

积分
发表于 2024-7-6 22:50:35 · 重庆 | 显示全部楼层 |阅读模式
本文为 其乐用户(UID:1120058) 发布的原创文章,转摘前请联系该用户获得许可
本帖最后由 1120058 于 2024-7-7 00:55 编辑

之前看到有人问 DB一键增加购物车不能用了 - 平台技术问题 - 其乐 Keylol我看chr_佬给的解决法子确实不错,就是还不能自选要批量加购物车的游戏

正好休息日有空咱就小小补全一下子吧




  1. // ==UserScript==
  2. // @name    SteamDB促销界面DB链接批量复制
  3. // @namespace    https://tampermonkey.net/
  4. // @description    可配合Steam快速添加购物车脚本(432190)使用实现将游戏批量加入购物车的功能
  5. // @version      0.1
  6. // @author    U&I
  7. // @match    https://keylol.com/*
  8. // @match    https://steamdb.info/sales/*
  9. // @icon    https://store.steampowered.com/favicon.ico
  10. // @grant    GM_registerMenuCommand
  11. // ==/UserScript==


  12. (function() {
  13.     'use strict';
  14.     GM_registerMenuCommand('打开SteamDB促销界面', () => { window.open('https://steamdb.info/sales', '_blank') });
  15.     const observer = new MutationObserver(mutations => {
  16.         clearTimeout(timeoutId);
  17.         timeoutId = setTimeout(() => {
  18.             const newRows = document.querySelectorAll('tr.app');
  19.             const newRowsSet = new Set(newRows);
  20.             newRows.forEach(row => {
  21.                 if (!row.querySelector('.add-button')) {
  22.                     const btn = document.createElement('button');
  23.                     btn.style.color = '#39c5bb';
  24.                     btn.className = 'add-button';
  25.                     btn.textContent = '+';
  26.                     btn.title = '将该游戏添加到待复制自选DB链接列表中';
  27.                     const cell = document.createElement('td');
  28.                     cell.appendChild(btn);
  29.                     row.appendChild(cell);
  30.                     btn.addEventListener('click', function() {
  31.                         const link = row.querySelector('td>a.b').href;
  32.                         if (!links_.includes(link)) {
  33.                             links_.push(link);
  34.                         }
  35.                     });
  36.                 }
  37.             });
  38.         },1500);
  39.     });


  40.     const config = {
  41.         childList: true,
  42.         subtree: true,
  43.         attributes: false,
  44.         characterData: false
  45.     };
  46.     const targetNode = document.querySelector('table');
  47.     observer.observe(targetNode, config);
  48.     const links_ = [];
  49.     let timeoutId = null;


  50.     const container = document.querySelector('.dt-search');
  51.     if (container) {
  52.         const copyBtn0 = document.createElement('button');
  53.         copyBtn0.style.color = '#39c5bb';
  54.         copyBtn0.id = 'copy-links-btn';
  55.         copyBtn0.title = '复制当前页面所有的DB链接到剪贴板';
  56.         copyBtn0.textContent = '复制所有DB链接';
  57.         container.insertBefore(copyBtn0, container.firstChild);
  58.         copyBtn0.addEventListener('click', function() {
  59.             const links0 = Array.from(document.querySelectorAll("td>a.b")).map(x => x.href).join("\n");
  60.             navigator.clipboard.writeText(links0).then(() => {
  61.                 alert('链接已复制到剪贴板!');
  62.             }).catch(err => {
  63.                 console.error('复制失败:', err);
  64.             });
  65.         });


  66.         const copyBtn1 = document.createElement('button');
  67.         copyBtn1.style.color = '#39c5bb';
  68.         copyBtn1.id = 'copy-links-btn';
  69.         copyBtn1.title = '复制当前页面选择(+)的DB链接到剪贴板';
  70.         copyBtn1.textContent = '复制自选DB链接';
  71.         container.insertBefore(copyBtn1, container.firstChild);
  72.         copyBtn1.addEventListener('click', function() {
  73.             const linksText = links_.join("\n");
  74.             navigator.clipboard.writeText(linksText).then(() => {
  75.                 alert('链接已复制到剪贴板!');
  76.             }).catch(err => {
  77.                 console.error('复制失败:', err);
  78.             });
  79.         });


  80.         const jumpBtn = document.createElement('button');
  81.         jumpBtn.id = 'jump-to-page-btn';
  82.         jumpBtn.title = '跳转到购物车页面';
  83.         jumpBtn.textContent = '🛒';
  84.         container.insertBefore(jumpBtn, container.firstChild);
  85.         jumpBtn.addEventListener('click', function() {
  86.             window.open('https://store.steampowered.com/cart/', '_blank');
  87.         });
  88.     }
  89. })();
复制代码
姑且是有实时监听表格变化并在表格稳定后添加自选的+按钮,所以理论上只要不刷新页面,不论是改变单页显示游戏数、改变排序规则还是换上一页下一页都能正常在每行末尾添加自选按钮且保留历史添加游戏,然后再点击 复制自选DB链接 按钮获取到想加入购物车的游戏,然后再用 另一个一键添加购物车的脚本【新增批量导入导出】 - 平台工具 - 其乐 Keylol 来加入购物车
(批量添加功能就是直接获取当前页所有游戏的DB链接,经测试似乎一次最多只能导入一百个,得分批导入购物车)

脚本比较简陋,大家有需求的凑合用用吧,多半也不会有更新了,建议速速催更chr_佬比较有效率(
提一嘴自选功能怎么用,到 Steam Summer Sale 2024 · CN · SteamDB 页面,使用筛选、排序等功能一页一页选出你想加入购物车的游戏,点击游戏所在行最后的+号添加该游戏到自选列表,然后点击搜索框旁边的 复制自选DB链接 按钮复制选择游戏的DB链接列表,然后在安装了上边提到的那个一键添加购物车的脚本前提下,点击搜索框旁边的 🛒 图标跳转到购物车,再Ctal+V粘贴剪贴板内容到购物车页面下方的文本框,点击导入即可将自选的游戏添加到购物车
看来买个游戏都得盯着新史低哆哆嗦嗦半天才下手的咱是永远也体会不到一下喜加千百的快乐了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

×

本帖被以下淘专辑推荐:

回复

使用道具 举报

浏览本版块需要:
1. 初阶会员或更高等级;
2. (点击此处)绑定Steam账号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

欢迎发帖参与讨论 o(*≧▽≦)ツ,请注意
1. 寻求帮助或答案的帖子请发到问题互助版块,悬赏有助于问题解决的速度。发错可能失去在该板块发布主题的权限(了解更多
2. 表达观点可以,也请务必注意语气和用词,以免影响他人浏览,特别是针对其他会员的内容。如觉得违规可使用举报功能 交由管理人员处理,请勿引用对方的内容。
3. 开箱晒物交易中心游戏互鉴福利放送版块请注意额外的置顶版规。
4. 除了提问帖和交易帖以外,不确认发在哪个版块的帖子可以先发在谈天说地

  作为民间站点,自 2004 年起为广大中文 Steam 用户提供技术支持与讨论空间。历经二十余载风雨,如今已发展为国内最大的正版玩家据点。

列表模式 · · 微博 · Bilibili频道 · Steam 群组 · 贴吧 · QQ群 
Keylol 其乐 ©2004-2024 Chinese Steam User Fan Site.
Designed by Lee in Balestier, Powered by Discuz!
推荐使用 ChromeMicrosoft Edge 来浏览本站
广告投放|手机版|广州数趣信息科技有限公司 版权所有|其乐 Keylol ( 粤ICP备17068105号 )
GMT+8, 2024-9-8 07:42
快速回复 返回顶部 返回列表