「开源」图一乐的美卡论坛脚本uscardforum-X

前言

之前一直在自己用一些小脚本改善逛美卡论坛(USCardForum,Discourse 架构)的体验,功能都是按自己需求一点点堆出来的,没打算给别人看。前段时间整理了一下代码、把硬编码的私货去掉,顺手开源了,放上 GitHub 和 Greasy Fork,欢迎一起玩、提 Issue、发 PR。

功能模块

目前一共 5 个模块,Tampermonkey 菜单里可以单独开关,已启用的模块前面会有绿色勾勾:

模块 作用 生效范围
Block Users(拉黑用户) 在用户卡片上加一个「拉黑」按钮 仅话题内点头像/用户名弹出的用户卡片
Next-Level Gap(等级差值) 把 Profile 页原生统计数字改写成「当前/目标」格式 /u/{username}/summary 页面
Cloudflare Shield(CF 盾) 一键跳转 /challenge?redirect={当前页} 强制重新过一次 CF Challenge 仅 Tampermonkey 菜单里手动触发
Auto Read(自动阅读) /latest.json 拉取话题队列,自动滚动阅读并跳转下一帖,解放双手刷阅读量 首页/最新/未读/热门/分类页 + 话题页;默认关闭
中英文面板切换 切换脚本自身菜单和按钮的语言 仅脚本菜单本身

拉黑用户(Block Users)

点开任意用户卡片,点「拉黑 @username」/「Ignore @username」,脚本直接调用 Discourse 后端的 Ignore 接口(PUT /u/{username}/notification_level.json),是服务端生效的拉黑,不是纯前端隐藏。

等级差值(Next-Level Gap)

打开自己或他人的 Profile Summary 页,脚本会把原生统计栏改写成类似:

72/50 访问天数
1992/500 浏览的话题
16/5 获赞用户数 *
6/7,差1 获赞分布天数 *
14/10 回复不同话题 *

这样一眼就能看出离下一级信任等级还差多少,不用自己对着 Discourse 的 TL 规则表算。带 * 号的是通过 user_actions.json 能拿到数据时才会追加显示的隐藏 TL3 检查项,样式做成跟原生统计一致,尽量不违和。

CF 盾(Cloudflare Shield)

纯粹的一次性触发器,点一下就跳到 Challenge 页面强制重新过盾,不会在菜单上留绿勾(因为它不是常驻开关,而是一个动作)。

自动阅读(Auto Read)

默认关闭,开启后会从当前 /latest.json 队列里拿话题列表,在话题页里自动滚动(比某个参考脚本慢约 20%,读起来更自然),读完一篇自动跳下一篇。适合挂着刷阅读时长,没有额外的悬浮控制面板,一切在后台跑。

安装方式

推荐:

  1. 装一个脚本管理器,Tampermonkey 或 Violentmonkey 都行。
  2. 打开 Greasy Fork 页面:uscardforum-X
  3. 点 Install this script,脚本管理器确认安装,刷新论坛页面即可。

不想走 Greasy Fork 也可以手动装:打开仓库里的 userscript/uscardforum-X.user.js,整个文件复制进脚本管理器新建脚本,保存刷新即可。

关于隐私和安全

脚本只用当前浏览器会话和论坛自身的 CSRF token,所有请求都是打到 USCardForum 自己的接口,不往任何第三方服务器发数据。等级估算是基于 Discourse 公开 JSON API 做的尽力估算,不保证 100% 精确,尤其部分隐藏 TL3 检查项依赖账号本身能否读到相应数据,读不到就不会显示, 钛金级别没做(笑。

写在最后

功能不算多,纯粹是自己日常逛论坛搓出来的小工具合集,开源出来纯粹图一乐,也欢迎大家提需求或者直接 PR。目前仓库只有中英文两版 README,有兴趣折腾的可以去看源码,都是纯前端 JS,没什么门槛。

6 个赞

一键拉黑好功能,免除了复制粘贴id脏手的问题

前几天还在想能不能根据拉黑直接帖子免打扰 :yaoming:

原等级脚本是否面临被取代覆盖:thinking:

1 个赞

有个BUG,edge for android 开启 总结 - guide - 美卡论坛 后,偶尔需要刷新一下才能出进度

新增beta分支,加了一点其他自用小功能