Giter Site home page Giter Site logo

nga-bbs-script's People

Contributors

kisshang1993 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nga-bbs-script's Issues

关闭NGA Ajax功能

由于NGA翻页Ajax和adblock/ublock冲突, 希望能提供一个完全关闭ajax功能的选项.

我自己目前在使用以下代码来规避Ajax:

window.addEventListener('click', function (event) { event.stopPropagation(); }, true);

当然也希望能找到更好的解决翻页白屏的办法.

图片功能增强相关问题

点开图片,翻到最后一张,会有一个src="about:blank" 的图片错误的显示
另外建议改用 https://github.com/fengyuanchen/viewerjs 实现图片增强 ,这样就有例如Esc退出,翻转等功能

随便用viewerjs实现了一下主贴的图片显示,渣代码献丑了

function addcss(href) {
    var head = document.querySelector('head');
    var link = document.createElement('link');
    link.href = href+'';
    link.rel = 'stylesheet';
    link.type = 'text/css';
    head.appendChild(link)
    console.log('外部css注入成功' , link.href);
}
function addjs(src) {
    var head = document.querySelector('head');
    var script = document.createElement('script');
    script.src = src+'';
    script.type = 'text/javascript';
    head.appendChild(script);
    console.log('外部js注入成功', script.src);
}
addjs("https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.9.0/viewer.min.js");
addcss("https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.9.0/viewer.min.css");

function getPostcontent0Gallery() {
    var p0 = document.getElementById("postcontent0"); // 主贴div
    for (let i of p0.childNodes) {
        if (i.nodeName == "IMG" && i.style.display == "none") {
            i.remove(); // 移除有问题的图片
        }
        if (i.nodeName == "IMG" && i.style.display != "none" && i.getAttribute("data-srclazy")) {
            i.src = i.getAttribute("data-srclazy"); // 适配懒加载
        }
    }
    return p0;
}

// 传入div,内含要显示的img
var gallery = new Viewer(getPostcontent0Gallery());
// 点击图片即可显示,或者 gallery.show() 也行

后台获取消息通知

需求建议
在后台自动获取NGA收到的消息通知并提醒

参考案例

补充说明

查成分的逻辑有问题

使用parent里的name会导致冲水或者删除后不会进行统计。
应该跟属地一样写一个类似的版面索引,然后匹配数据里的fid。
或者更简单一点,保留当前的获取方式,但是判断帖子冲水的时候,再根据fid在索引里匹配常用版面,目前把水区、国新区,还有银色黎明的垃圾回收区加进去应该就可以包含绝大多数情况。
文字描述也应该调整一下,说明是最近活跃记录,毕竟只查了前几页。

最新版本快捷键问题

设置快捷键的时候,如果更改快捷键为空白,会导致无法保存。
Microsoft Edge
版本 89.0.774.45 (官方内部版本) (64 位)

不知道如何排查问题

小建议

很感谢大佬能开发一个这样的脚本!!谢谢!
然后是使用中的一些小问题,第一个就是手动翻页以及直接修改地址栏页码的时候后楼主不会标红了!不知道这个能不能解决。第二个自动翻页可不可以加上一个按住某个键先暂停自动翻页的功能呢!因为有些帖子好几百页....或者直接加一个跳转到某页的选项。
再次感谢!

在新标签页打开的bug

开启这个功能以后,点在搜索页面的帖子会打开两个页面,其中一个真的叫javascript:void(0),估计是
<a href="javascript:void(0)" id="t_tt10_18" class="topic" target="_blank"></a>比正常版面多了 target 引起的

excel左侧序号会在回帖后消失 4.0复现

配置如下
image

1.进入版面 第一列正常显示为回复数
image
2.进入任意帖子 点击"发表回复" 回复一条帖子
3.回复完毕后点击导航栏的版面连接
image
4.回到版面 第一列为顺序(期望为回复数)
image

提个小需求

现在第一列是1234567的序号(其实没什么卵用)
希望第一列改为原来的论坛功能(显示本帖回复数量,点击弹出新窗口)

也可以做成配置

84.0.4147.135版本chrome无法使用

油猴上显示正在使用脚本,但是页面上没有显示插件的设置功能选项,快捷键也一并无法使用
chrome版本84.0.4147.135
脚本3.3

是否考虑增加一个调整背景色的功能

是否考虑增加一个调整背景色的功能,类似于wps的绿色背景?
目前我在用wps使用绿色背景,看着舒服一点,如果脚步也增加调色功能,可以适应更多人的需求。
谢谢

翻页bug

测试环境 chromium edge 81+TM4.10 和 FF76+VM2.12.7,脚本均是 2.5 版,使用以下配置
截图的log开了,
edge+TM
点开帖子
Screen Shot 2020-05-14 at 10 04 34

最新的 commit 8edb8dc 修复了乱注入Excel CSS 的问题,TM 下脚本正常工作。但用VM,翻页时会有两种报错(edge)

  1. getElementsByTagName is not a function
  2. Cannot read property 'nextSibling' of undefined
    Screen Shot 2020-05-14 at 10 22 36

然后论坛自己CSS就没了,
Screen Shot 2020-05-14 at 10 23 13

如果需要完整log我可以上传

页面内广告图片

需求建议
版头、帖内横向插入、纵向漂浮的广告图片可否在excel模式下隐藏,对摸鱼行为影响较大
参考案例
暂无

补充说明
暂无其他补充

仅显示X赞以上回复的功能

有些主题含有大量的灌水楼层,如果能够实现一个仅显示X赞(可自定义)以上回复功能,或许可以强化冲浪体验。

我遇到的困难:

  1. NGA的API只能按页(20楼)读取,无法返回一个包含所有回复的列表。

    可能的解决方案:先一页一页请求所有回复,再进行精选。

  2. 从API获得的数据为JSON格式,无法直接作为html嵌入。

    可能的解决方案:先记录所有精选回复的pid,再通过对read.php同时请求tid和pid的方式获得该回复的html(每个楼层都是一个<table>),最后把所有的精选回复串起来。

  3. 如果前两条能够克服,还要限定每页显示的精选回复最大条数。

可能的捷径:NGA自带选择四条最高赞回复的功能。如果该功能来自前端而非数据库端,或可更简单地得到高赞回复。

一个更简单但稍差一点的实现是,直接屏蔽所有低赞回复 X )

不过事实上我对油猴和JS都不是很了解 [扇子笑] 在此只是提出一个想法

自动翻页功能失效

浏览器:Google Chrome 版本 88.0.4324.190(正式版本)(64 位)
摸鱼插件是油猴的3.6版本
更新以后自动翻页功能就失效了

emmm重装了一次就好了.jpg

老哥,关于使用excel模式,删除旁边广告的问题

老哥,我看了一下源码,我在你的详情页渲染函数renderForms里面,在最后添加了几段代码

let deleteElement = document.querySelectorAll("#m_posts_c > span:nth-child(2)")
                deleteElement.remove()
                let deleteOneElement = document.querySelectorAll(".null")
                for(let test=0; test<deleteOneElement.length; test++){
                   deleteOneElement[test].remove()
                }

但是我发现,在第一次进入详情页时,并没有被触发,这是为什么啊?
如果可以,希望老哥能去掉旁边的广告,在excel模式下,经常使用excel模式,旁边有俩广告,太容易被发现了

求问:可以支持自定义头图吗?

目前的图片分辨率较低,在mbp或者4k等高分屏上看起来会有颗粒感,能否允许用户自定义上传头图,这样用户摸鱼的外观会更加逼真

(逃

[Bug] 脚本导入设置功能序列化错误

摘要:
本脚本在用户导入设置时未能正确序列化黑名单列表和标签列表数据。本问题将导致不合法的序列化数据存入设置 LocalStorage,进而在用户重载页面后引发脚本全局错误,使脚本完全失效。

版本:
3.5

环境:
Edge 86 on Windows 10 64-bit, Tampermonkey v4.11

详情:
在存入经解析的导入设置时,脚本会先解析设置字符串再将内容存入对应的 LocalStorage 条目内。脚本

NGA-BBS-Script/Script.js

Lines 1118 to 1119 in 350d80e

banList = obj.ban_list
window.localStorage.setItem('hld__NGA_ban_list', banList.join(','))

NGA-BBS-Script/Script.js

Lines 1122 to 1123 in 350d80e

markList = obj.mark_list
window.localStorage.setItem('hld__NGA_mark_list', markList.join(','))
均使用了 join 函数序列化数据数据,该数据在未经验证的情况下被立即写入 LocalStorage 条目。这可能导致序列化结果为逗号分隔的 "[object Object]" 的字符串覆盖现有设置。

由于上述字符串并不为合法的 Json 数据,在用户重载页面后,使用 JSON.parse 功能解析该数据将引发 Json 处理异常。特别地,对于标签列表,

NGA-BBS-Script/Script.js

Lines 159 to 162 in 350d80e

const mark_list_str_obj = localMarkList.split(',')
mark_list_str_obj.forEach(item => {
const name = item.split(':')[0]
const markStr = item.split(':')[1]
及后续回落流程也无法正确处理该无效数据,这会导致进一步的异常抛出。从而使脚本出现全局错误完全失效。只有在用户手动删除 LocalStorage 中对应的问题条目后脚本方可恢复正常使用。

附:

NGA-BBS-Script/Script.js

Lines 149 to 150 in 350d80e

window.localStorage.setItem('hld__NGA_ban_list', JSON.stringify(banList))
window.localStorage.setItem('hld__NGA_ban_list', localBanList)
可能存在逻辑错误(漏写_bak

NGA-BBS-Script/Script.js

Lines 443 to 446 in 350d80e

const banList = $('#hld__ban_list_textarea').val()
const markList = $('#hld__mark_list_textarea').val()
window.localStorage.setItem('hld__NGA_ban_list', banList)
window.localStorage.setItem('hld__NGA_mark_list', markList)
未验证用户输入

以上两处可能的问题在本 Issue 对应的 PR 中修复

搜索相关

需求建议
目前的网页端在部分板块搜索主题时,默认的选项是[选择一个子版面],需要手动修改为[当前版面],才能跳出搜索结果,影响搜索体验.

能否将这一设定修改为默认选择[当前板面],减少搜索时的操作。谢谢!

补充说明
没什么补充的,感谢

改进Tag

当前tag功能为灰色小字,不易阅读
下图为该脚本和另一款脚本NGA filter的tag功能对比,另一款明显更加清晰
希望至少改进下tag的字体颜色和大小

捕获

设置界面按钮无反应

选择框可以正常勾选或取消,但是关键词管理、黑名单管理、高级设置、导入导出、保存、打赏等按钮点击均无反应。保存按钮点击无反应但会保存当前设置。
浏览器版本:Microsoft Edge 114.0.1823.67 (正式版本) (64 位)
脚本版本:4.0.0到4.2.0都试了,都有问题 Tampermonkey4.19.0
访问的是nga.178.com

今天看到说4.2有新功能就更新了,然后发现高级设置打不开,就又多试了几个版本,发现都打不开。

加个自定义列表宽度和贴内宽度

希望能优化一下

const widthAuto = {
        name: 'widthAuto',
        settings: [{
            type: 'normal',
            key: 'widthAuto',
            title: '贴内图片缩放',
            default: true,
            menu: 'left'
        }, {
            type: 'advanced',
            key: 'listWidth',
            default: 1200,
            title: '自定义列表宽度',
            desc: '自定义列表宽度和贴内宽度',
            menu: 'left'
        }],

        initFunc: function () {
            let customWidth = script.setting.advanced.listWidth;
            //帖子列表
            let threadList = document.getElementById("topicrows");
            if (threadList) {
                threadList.style.width = customWidth + "px";
                threadList.style.marginLeft = "auto";
                threadList.style.marginRight = "auto";
            }

            //帖子详情
            let threadDetail = document.getElementById("m_posts");
            if (threadDetail) {
                threadDetail.style.width = customWidth + "px";
                threadDetail.style.marginLeft = "auto";
                threadDetail.style.marginRight = "auto";
            }

            //页码按钮
            let threadBtntop = document.getElementById("m_pbtntop");
            if (threadBtntop) {
                threadBtntop.style.width = customWidth + "px";
                threadBtntop.style.marginLeft = "auto";
                threadBtntop.style.marginRight = "auto";
            }
            let threadBtnbtm = document.getElementById("m_pbtnbtm");
            if (threadBtnbtm) {
                threadBtnbtm.style.width = customWidth + "px";
                threadBtnbtm.style.marginLeft = "auto";
                threadBtnbtm.style.marginRight = "auto";
            }
        }
    }

相关代码这里搬来的

效果

QQ截图20230708175045

图片功能能否完善一些新功能

感谢大佬,目前用起来很方便,但是图片浏览还是有点不那么顺手

能否增加新功能,比如图片‘上一页’‘下一页’支持键盘左右键?
或者把左右按键从屏幕下方改到图片本身左右侧?这样会更方便一些,希望考虑

论坛翻页后必须要刷新才能生效

目前遇到几种情况下脚本会失效
1.通过nga网页的快速导航,进入对应版面后会卡在版头,必须刷新后正常浏览
2. 通过网页下方数字直接翻页后会卡在版头,刷新后正常

以上情况概率出现,请问怎么处理呢?大概就是前一阵子nga因为特殊事件重启之后开始的

隐藏头像功能有时候会失效

当前插件版本:v3.7.2
默认开启了[隐藏头像], 大部分时间也是正常不显示的
小概率刷新/进帖后头像会正常展示, 需要手动按q再隐藏下, 发生了不少次

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.