本帖最后由 星之子 于 2024-9-14 16:50 编辑
动机
写这个脚本,动机依然是解决我自己的痛点(笑鼠)。
我觉得泥潭追随不好攒的很大原因,就是评分这东西实在太费事儿了,以至于大家都不太想点(doge)。无论是用那个文本框输入、还是用下拉箭头点选,都是要用鼠标点好多下或键盘按好多下(懒狗的自我修养2)。
所以这里就稍微花了点时间写了一个略显复杂的脚本。脚本会在原来的一排按钮上方新增一排,可以预先设置好想要给出的评分和理由(这部分非常简单,下方会详述);之后只要点一下,就可以快速soon出评分(暗示);如果今日剩余已经不足按钮要求,则默认剩多少给出多少。
希望这东西泥潭人手一个,这样追随就更容易给出去了。
目前还在测试阶段,欢迎并感谢反馈BUG~
代码
@Name @Match 如果不@他一下,下面的代码部分会被自动标url,好胃疼。
- // ==UserScript==
- // @name 泥潭一键评分
- // @namespace http://tampermonkey.net/
- // @version 0.5
- // @description 在评分下方添加一键评分功能,可以自行设置按钮名称、对应分值和理由。
- // @author Étoiles
- // @match https://www.gamemale.com/forum.php?mod=viewthread&tid=*
- // @match https://www.gamemale.com/forum.php?*
- // @match https://www.gamemale.com/thread*
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- // 在页面加载时添加按钮
- window.addEventListener('load', function () {
- var pBtnDiv = document.getElementById('p_btn');
- if (pBtnDiv) {
- // 添加新容器
- var newContainer = document.createElement('div');
- newContainer.id = 'new_button_container';
- newContainer.style.marginTop = '30px';
- newContainer.style.textAlign = 'center'; // 添加这一行使按钮居中显示
- newContainer.style.marginBottom = '20px'; // 添加这一行在容器下方留出空间
- // 新容器添加到 #p_btn 上方
- pBtnDiv.parentNode.insertBefore(newContainer, pBtnDiv);
- // 添加按钮
- addButton(newContainer, '超赞', [5, 1, 1], '评分理由A');
- addButton(newContainer, '很棒', [3, 1, 1], '评分理由B');
- addButton(newContainer, '喜欢', [1, 1, 1], '评分理由C');
- // addButton(newContainer, '按钮名称', [血液, 追随, 堕落], '评分原因');
- }
- });
- // 添加新按钮
- function addButton(container, label, scores, reason) {
- var newButton = document.createElement('button');
- newButton.innerHTML = label;
- newButton.style.marginLeft = '10px';
- newButton.className = 'custom-button';
- newButton.onclick = function () {
- ratePost(scores, reason);
- };
- container.appendChild(newButton);
- }
- // 评分
- function ratePost(scores, reasonText) {
- // 打开评分窗口
- var rateButton = document.getElementById('ak_rate');
- if (rateButton) {
- rateButton.click();
- }
- // 等待窗口加载
- var interval = setInterval(function () {
- var score3 = document.getElementById('score3');
- var score4 = document.getElementById('score4');
- var score8 = document.getElementById('score8');
- var reason = document.getElementById('reason');
- if (score3 && score4 && score8 && reason) {
- clearInterval(interval);
- // 填入文本框
- score3.value = Math.min(scores[0], parseInt(score3.nextElementSibling.nextElementSibling.innerText));
- score4.value = Math.min(scores[1], parseInt(score4.nextElementSibling.nextElementSibling.innerText));
- score8.value = Math.min(scores[2], parseInt(score8.nextElementSibling.nextElementSibling.innerText));
- reason.value = reasonText;
- // 点按提交
- var submitButton = document.querySelector('button[name="ratesubmit"]');
- if (submitButton) {
- submitButton.click();
- }
- }
- }, 100);
- }
- // 为了长得好看还特意整了点花里胡哨的按钮样式
- var style = document.createElement('style');
- style.innerHTML = `
- .custom-button {
- background-color: #f0f0f0;
- margin: 0px 15px !important;
- border: 0;
- color: #242424;
- border-radius: 0.5em;
- font-size: 20px;
- padding: 0.375em 1em;
- font-weight: 600;
- text-shadow: 0 0.0625em 0 #fff;
- box-shadow: inset 0 0.0625em 0 0 #f4f4f4, 0 0.0625em 0 0 #efefef,
- 0 0.125em 0 0 #ececec, 0 0.25em 0 0 #e0e0e0, 0 0.3125em 0 0 #dedede,
- 0 0.375em 0 0 #dcdcdc, 0 0.425em 0 0 #cacaca, 0 0.425em 0.5em 0 #cecece;
- transition: 0.15s ease;
- cursor: pointer;
- }
- .custom-button:active {
- translate: 0 0.225em;
- box-shadow: inset 0 0.03em 0 0 #f4f4f4, 0 0.03em 0 0 #efefef,
- 0 0.0625em 0 0 #ececec, 0 0.125em 0 0 #e0e0e0, 0 0.125em 0 0 #dedede,
- 0 0.2em 0 0 #dcdcdc, 0 0.225em 0 0 #cacaca, 0 0.225em 0.375em 0 #cecece;
- }
- `;
- document.head.appendChild(style);
- })();
复制代码
其中预先设置好按钮的代码是这一部分:
- addButton(newContainer, '超赞', [5, 1, 1], '评分理由A');
- addButton(newContainer, '很棒', [3, 1, 1], '评分理由B');
- addButton(newContainer, '喜欢', [1, 1, 1], '评分理由C');
- // addButton(newContainer, '按钮名称', [血液, 追随, 堕落], '评分原因');
复制代码 5-1-1、3-1-1、1-1-1是我个人比较常用的,这里都可以自定义。
请在使用前预先设置,尤其不要忘了把评分理由改成人话(
来自群组: 星象占卜 |