本文为 其乐用户(UID:1120058) 发布的原创文章,转摘前请联系该用户获得许可
本帖最后由 1120058 于 2024-7-7 00:55 编辑
之前看到有人问 DB一键增加购物车不能用了 - 平台技术问题 - 其乐 Keylol我看chr_佬给的解决法子确实不错,就是还不能自选要批量加购物车的游戏
正好休息日有空咱就小小补全一下子吧
- // ==UserScript==
- // @name SteamDB促销界面DB链接批量复制
- // @namespace https://tampermonkey.net/
- // @description 可配合Steam快速添加购物车脚本(432190)使用实现将游戏批量加入购物车的功能
- // @version 0.1
- // @author U&I
- // @match https://keylol.com/*
- // @match https://steamdb.info/sales/*
- // @icon https://store.steampowered.com/favicon.ico
- // @grant GM_registerMenuCommand
- // ==/UserScript==
- (function() {
- 'use strict';
- GM_registerMenuCommand('打开SteamDB促销界面', () => { window.open('https://steamdb.info/sales', '_blank') });
- const observer = new MutationObserver(mutations => {
- clearTimeout(timeoutId);
- timeoutId = setTimeout(() => {
- const newRows = document.querySelectorAll('tr.app');
- const newRowsSet = new Set(newRows);
- newRows.forEach(row => {
- if (!row.querySelector('.add-button')) {
- const btn = document.createElement('button');
- btn.style.color = '#39c5bb';
- btn.className = 'add-button';
- btn.textContent = '+';
- btn.title = '将该游戏添加到待复制自选DB链接列表中';
- const cell = document.createElement('td');
- cell.appendChild(btn);
- row.appendChild(cell);
- btn.addEventListener('click', function() {
- const link = row.querySelector('td>a.b').href;
- if (!links_.includes(link)) {
- links_.push(link);
- }
- });
- }
- });
- },1500);
- });
- const config = {
- childList: true,
- subtree: true,
- attributes: false,
- characterData: false
- };
- const targetNode = document.querySelector('table');
- observer.observe(targetNode, config);
- const links_ = [];
- let timeoutId = null;
- const container = document.querySelector('.dt-search');
- if (container) {
- const copyBtn0 = document.createElement('button');
- copyBtn0.style.color = '#39c5bb';
- copyBtn0.id = 'copy-links-btn';
- copyBtn0.title = '复制当前页面所有的DB链接到剪贴板';
- copyBtn0.textContent = '复制所有DB链接';
- container.insertBefore(copyBtn0, container.firstChild);
- copyBtn0.addEventListener('click', function() {
- const links0 = Array.from(document.querySelectorAll("td>a.b")).map(x => x.href).join("\n");
- navigator.clipboard.writeText(links0).then(() => {
- alert('链接已复制到剪贴板!');
- }).catch(err => {
- console.error('复制失败:', err);
- });
- });
- const copyBtn1 = document.createElement('button');
- copyBtn1.style.color = '#39c5bb';
- copyBtn1.id = 'copy-links-btn';
- copyBtn1.title = '复制当前页面选择(+)的DB链接到剪贴板';
- copyBtn1.textContent = '复制自选DB链接';
- container.insertBefore(copyBtn1, container.firstChild);
- copyBtn1.addEventListener('click', function() {
- const linksText = links_.join("\n");
- navigator.clipboard.writeText(linksText).then(() => {
- alert('链接已复制到剪贴板!');
- }).catch(err => {
- console.error('复制失败:', err);
- });
- });
- const jumpBtn = document.createElement('button');
- jumpBtn.id = 'jump-to-page-btn';
- jumpBtn.title = '跳转到购物车页面';
- jumpBtn.textContent = '🛒';
- container.insertBefore(jumpBtn, container.firstChild);
- jumpBtn.addEventListener('click', function() {
- window.open('https://store.steampowered.com/cart/', '_blank');
- });
- }
- })();
复制代码 姑且是有实时监听表格变化并在表格稳定后添加自选的+按钮,所以理论上只要不刷新页面,不论是改变单页显示游戏数、改变排序规则还是换上一页下一页都能正常在每行末尾添加自选按钮且保留历史添加游戏,然后再点击 复制自选DB链接 按钮获取到想加入购物车的游戏,然后再用 另一个一键添加购物车的脚本【新增批量导入导出】 - 平台工具 - 其乐 Keylol 来加入购物车
(批量添加功能就是直接获取当前页所有游戏的DB链接,经测试似乎一次最多只能导入一百个,得分批导入购物车)
脚本比较简陋,大家有需求的凑合用用吧,多半也不会有更新了,建议速速催更chr_佬比较有效率(
提一嘴自选功能怎么用,到 Steam Summer Sale 2024 · CN · SteamDB 页面,使用筛选、排序等功能一页一页选出你想加入购物车的游戏,点击游戏所在行最后的+号添加该游戏到自选列表,然后点击搜索框旁边的 复制自选DB链接 按钮复制选择游戏的DB链接列表,然后在安装了上边提到的那个一键添加购物车的脚本前提下,点击搜索框旁边的 🛒 图标跳转到购物车,再Ctal+V粘贴剪贴板内容到购物车页面下方的文本框,点击导入即可将自选的游戏添加到购物车
看来买个游戏都得盯着新史低哆哆嗦嗦半天才下手的咱是永远也体会不到一下喜加千百的快乐了
|