油猴脚本显示悬赏区第一页楼层顺序
本帖最后由 T4DNA 于 2023-12-22 23:00 编辑一个简单的油猴脚本,用于显示已经采纳后的悬赏区帖子第一页顺序(仅表示第一页的先后顺序)。
根据悬赏区精神
>楼主在符合帖子条件的回帖中应该按照时间先后顺序采纳
由于Discuz!特性
>悬赏区楼主采纳最佳答案之后,所采纳的回帖会自动更改回帖时间(改为与主题帖发帖时间一致)从而置顶为沙发。
>每个回帖的pid还是不变的,pid值越小表明该帖回复的时间越早,可通过对比pid值确定回帖先后顺序。
为方便大家判断楼层先后顺序,故写此脚本,按照pid赋予第一页面顺序
Greasy Fork安装地址:https://greasyfork.org/zh-CN/scripts/482795
源码如下:
```javascript
// ==UserScript==
// @name 吾爱破解悬赏楼层显示
// @namespace http://tampermonkey.net/
// @version 2023-12-22.2
// @description吾爱破解悬赏区,被采纳的帖子第一页将显示该页面顺序楼层
// @author T4DNA
// @match https://www.52pojie.cn/thread-*-*-*.html
// @match https://www.52pojie.cn/forum.php?mod=viewthread&tid=*
// @icon https://www.52pojie.cn/favicon.ico
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.org/scripts/482795/%E5%90%BE%E7%88%B1%E7%A0%B4%E8%A7%A3%E6%82%AC%E8%B5%8F%E6%A5%BC%E5%B1%82%E6%98%BE%E7%A4%BA.user.js
// @updateURL https://update.greasyfork.org/scripts/482795/%E5%90%BE%E7%88%B1%E7%A0%B4%E8%A7%A3%E6%82%AC%E8%B5%8F%E6%A5%BC%E5%B1%82%E6%98%BE%E7%A4%BA.meta.js
// ==/UserScript==
(function() {
'use strict';
var bestAnswer;
function addIndex(docT, index){
const piDiv = docT.getElementsByClassName('pi');
const aElement = piDiv.getElementsByTagName('a');
const spanElement = document.createElement('span');
spanElement.style.color = 'red';
spanElement.style.fontWeight = 'bold';
var textContent = '原楼层:第'+index+'楼'
if (index=="10" && bestAnswer==docT){
textContent = '原楼层:10楼(或第一页以后)'
}
if (index>"10"){
textContent = '原楼层大于10楼不在第一页'
}
spanElement.textContent = textContent;
aElement.insertBefore(spanElement, aElement.firstChild);
};
function getALLTABLE(){
let tables = document.querySelectorAll('.plhin');
tables = Array.from(tables).slice(1);
bestAnswer = tables;
let tablesWithIDNumbers = tables.map(table => {
const tableID = table.id || "";
const match = tableID.match(/pid(\d+)/);
return {
element: table,
idNumber: match ? parseInt(match, 10) : null
};
});
tablesWithIDNumbers = tablesWithIDNumbers.filter(item => item.idNumber !== null);
tablesWithIDNumbers.sort((a, b) => a.idNumber - b.idNumber);
return tablesWithIDNumbers
};
const parentDiv = document.querySelector('.rwd.cl');
if (parentDiv) {
const childDiv = parentDiv.querySelector('div');
if (childDiv && childDiv.classList.contains('rusld')) {
console.log('未完结悬赏');
} else if (childDiv && childDiv.classList.contains('rsld')) {
console.log('已完结悬赏');
let newtables = getALLTABLE();
newtables.forEach((item, index) => {
addIndex(item.element, index + 2);
});
}
}
})();
```
效果如下:
使用2023-12-21.1版本有2个问题,反馈一下
1. 论坛里大多数人都默认主题帖为1楼, 所以在回帖中,不在应该计算1楼楼层,最小回帖应该是2楼
https://s11.ax1x.com/2023/12/22/piT5A1I.jpg
2. 在悬赏贴 https://www.52pojie.cn/thread-1754126-1-1.html中, 最佳答案是第九楼,由于计算问题, 你没有显示第九楼, 而且第十楼原生楼层显示有些问题
https://s11.ax1x.com/2023/12/22/piT4j6x.jpg
正确的结果应该是:
https://s11.ax1x.com/2023/12/22/piT5mB8.jpg
如果最佳答案位于原楼层10楼或者10楼以后, 显示应该是:
https://s11.ax1x.com/2023/12/22/piT58cq.jpg
当悬赏页存在置顶回复的时候, 楼层判断出现异常
测试地址: https://www.52pojie.cn/thread-1863492-1-1.html
当前显示:
https://s11.ax1x.com/2023/12/22/pi7Phm8.jpg
应当显示:
https://s11.ax1x.com/2023/12/22/pi7P5Tg.jpg
这都行,有点意思 懂编程的大能就是牛逼,可以为所欲为,想干嘛干嘛{:1_893:} @Ryan_XQ 追加到你那置顶的帖子里,做好联动。 非常好,看到这种帖子我觉得很有必要置顶一下 会编程的是真厉害,只要想到什么,都能用代码来实现 RS水果 发表于 2023-12-22 12:09
使用2023-12-21.1版本有2个问题,反馈一下
1. 论坛里大多数人都默认主题帖为1楼, 所以在回帖中,不在应该 ...
已更新,请检查一下是否正确 T4DNA 发表于 2023-12-22 12:19
已更新,请检查一下是否正确
已使用新版2023-12-21.2
在第十楼的描述还存在一些问题
https://s11.ax1x.com/2023/12/22/piT54Cd.jpg RS水果 发表于 2023-12-22 12:28
已使用新版2023-12-21.2
在第十楼的描述还存在一些问题
已更新,仅最佳答案显示10楼或以后
页:
[1]
2