本日志只记录用户友好的更新说明,影响不大的问题修复与修改不作记录,具体修改见 提交记录。
2 ** 30
的 AV 号,对 aid
与 bvid
互转工具类进行升级以进行适配。批量转移至收藏夹的功能算是被许多用户反复提及的需求,一直没有做原因有二:一是确实很容易触发B站拦截机制;
二是其实有更好的解决方案,那就是使用各种奇技淫巧突破稍后再看 100 的上限——其实我已经能想到两种实现方式,但想想工作量就头大——本来想着一步到位的,但现在看来以后维护这脚本的时间是越来越少了,大概不会去搞了吧,就还是把妥协的方案实现出来算了。
把批量转移功能做出来后,发现B站竟然在近段时间放开了稍后再看容量上限,堪称拖延症的大胜利!困扰了我跟其他稍后再看深度用户数年的问题就这么解决了,有点不真实。虽然,批量转移、列表导出导入这些功能被釜底抽薪了,但容量上限的问题应该是被彻底解决了(之所以说「应该」,是怕新上限还是不太够用),实在是太好了。
在搜索框默认值后添加空格这一行为,是所谓的工业化产品永远也做不出来的,因为只有真正的用户才能发现这一痛点,也只有切实理解用户这一痛点后,设计者才可能进行这样奇怪的改动。
稍后再看稿件
,执行搜索时显示为 搜索出来的稍后再看稿件/搜索出来的全部非移除稿件
。(稍后再看稿件/全部稿件)
,执行搜索时显示为 (搜索出来的稍后再看稿件/搜索出来的全部稿件/全部稿件)
。config
/ configMap
机制不再要求在「用户设置」中有对应配置项。prefer-object-has-own
object-shorthand
unicorn/prefer-string-replace-all
unicorn/switch-case-braces
。(此项更新变更了兼容性要求)UserScriptAPIWeb
更新至 V1.3。www.bilibili.com/list/*
。UserscriptAPIWait
更新至 V1.3。InputNumber
更新至 V1.1。「搜索框默认值」这一功能的设计本意实际上与「固定」「收藏」类似,将搜索框默认值与关键字排除相结合便可达到一种高级的「条件式『稍后再看』的『稍后再看』」。
也许有人会认为这一出发点过于奇葩,但这确实是解决作者近两周困扰的绝佳解决方案——某UP主的视频质量颇高,但他的视频属于需慢慢欣赏的类型,而这段时间正忙,若因此将其固定或转移到收藏夹又显得小题大做,不如每次使用关键字排除来解决。
显然,这一功能也有其他较为合理的使用场景。比如某段时间只想看某种类型的视频,灵活使用搜索框默认值便可大幅降低在大量稍后再看视频中寻找目标视频的麻烦。因此,对于用得上这一功能的用户,设置及清空默认值大概都不会被认为是一个低频、敏感的操作,故没有设计二次确认。
UserscriptAPIMessage
更新至 V1.3。这个动态主页的改版虽然改完跟没改差不多一个样,不这倒值得赞扬,因为B站的每次改版都朝着越来越难用的方向进发,原地踏步就是最大的进步。相比之下,这个新版的搜索页面是真的有点 NT,又慢又丑。
#67482 是一年半前有人提出的小问题:
@include *://x.com
会错误匹配到https://www.example.com/archive/https://x.com
。当时做了修复,但经过大半年思考最终还是移除了相关修改,因为,为这种小概率事件打补丁会浪费一种简便且理所应当的 URL 匹配写法。想不到 Tampermonkeyv4.16
竟然针对这种情况优化了@include
的行为,要求://
前的*
必须匹配 URL scheme,属实是一个能令多方满意的好方案,值得赞扬!
*
无法匹配 0 个字符的问题。1 月 26 日了,B站新版顶栏内部的文字样式还是没能统一——不过B站正向着网页油管化、APP 抖音化全力进发,忙着歼灭分P功能呢,注意不到这种小问题也很正常。B站未来有可能会倒闭,但绝不会变质是吧😅
容我吐槽下新版B站在各页面的设计割裂,新版顶栏内部的文字样式甚至都做不到统一……
["eslint:all", "plugin:unicorn/all"]
,然后在此基础上做减法。Object.entries()
、Object.keys()
、Object.values()
。window.onurlchange
特性,改用 UserscriptAPI
提供的实现更为完善、功能更为强大的 urlchange
事件,来对 URL 变化进行跟踪。this
回传菜单对象。aid
与 bvid
互转工具类,明确一些细节问题。UserscriptAPI
更新至 V2.2。详见 UserscriptAPI 更新日志。UserscriptAPIDom
更新至 V1.2,UserscriptAPILogger
更新至 V1.2,UserscriptAPIMessage
更新至 V1.2。UserscriptAPIBase
更新至 V1.2,提供更为完善的 urlchange
事件。UserscriptAPIWait
更新至 V1.2,优化错误处理流程。UserscriptAPIWeb
更新至 V1.2,优化错误处理流程。PushQueue
独立成库(V1.1)。ESLint 确实是个好东西,把规则全开一下子就暴露出 N 个潜在的问题——但反过来也可以说完全没有用,因为这一大堆所有的潜在问题其实几乎没有造成实际上的问题。
unsafeWindow
不是个好东西,困惑了我一年多的时间,不过最终还是妥善解决了—— unsafeWindow 二三事。
B站样式修改导致脚本显示不正常已经不是一次两次了,我甚至都想把主 UI 给搬到 Shadow DOM 里了。但有点杀鸡用牛刀的感觉,想想就好。
UserscriptAPIDom
更新至 V1.2。InputNumber
V1.0。UserscriptAPI
更新至 V2.1。详见 UserscriptAPI 更新日志。UserscriptAPIDom
更新至 V1.1,UserscriptAPILogger
更新至 V1.1,UserscriptAPIWait
更新至 V1.1,UserscriptAPIWeb
更新至 V1.1。UserscriptAPI
更新至 V2.0,实现 API 模块化。详见 UserscriptAPI 更新日志。UserscriptAPIMessage
更新至 V1.1,引入对话框组件。Firefox 破事真多——果然,在四年前彻底抛弃用了十多年的 Firefox 是明智的选择,正如一年前抛弃 Chrome 拥抱 Edge 一样。
undefined
与 null
的判断与比较采取更合理的实践。??=
、逻辑或赋值运算符 ||=
及逻辑与赋值运算符 &&=
。UserscriptAPI
更新至 V1.8,引入网络请求检查、解析、报告功能。详见 UserscriptAPI 更新日志。flex
布局结合 order
和 flex-direction
实现。application/x-www-form-urlencoded
类型编码数据而造成的一些问题。aid
与 bvid
互转算法。UserscriptAPI
更新至 V1.7,大幅优化元素等待逻辑。详见 UserscriptAPI 更新日志。「固定」「收藏」这两个功能本质是一样的,就是「『稍后再看』的『稍后再看』」。只不过它们的解决思路不一样,一个是移到稍后再看最后以免妨碍日常浏览,另一个是将默认收藏夹当成暂存区来使。之前我对「『稍后再看』的『稍后再看』」这一重要需求毫无意识,直到上一版本实现了排序功能——随着时间推移,排在列表前方的总是一些希望留到以后再看的视频,无论使用何种排序都无法摆脱它们。
经过一年时间检验,
aid
与bvid
互转算法确实是无法绕开,哪怕能通过各种手段解决,但将其引入利绝对利大于弊。但凡B站后台 API 能在aid
与bvid
上统一一点,也不至于此。
no-useless-call
。UserscriptAPI
更新至 V1.4。详见 UserscriptAPI 更新日志。其实
v4.17.0
并没有更新什么功能,只是v4.16
累积更新内容太多了,还是升个小版本吧。
马后炮:最后
v4.17
反而承载太多东西了……
UserscriptAPI
更新至 V1.3。详见 UserscriptAPI 更新日志。写更新日志的时候,忽然想起很多「鼠标」其实应该是「光标」。但管他呢,现实中我从来没有见过有人把「光标」叫「光标」。JavaScript 中也没有什么
cursorenter
,不是吗?
0
的问题。
v4.15.3
给弹出菜单的搜索增加了正则支持,但晚上躺在床上细想,这个地方真的有必要使用正则表达式吗?想了一分多钟都没想出使用的场景,想不出稍后再看中有什么东西需要这么复杂的东西来筛选。倒是像最质朴的
?
*
通配符才是真正实用的。随后在v4.15.4
移除了正则支持,改为通配符支持。
UserscriptAPI
更新至 V1.2,大幅优化条件等待和元素等待逻辑。详见 UserscriptAPI 更新日志。?.
及空值合并运算符 ??
。15%
~25%
。80%
。PushQueue
。UserscriptAPI
更新至 V1.0,大幅优化元素等待逻辑。详见 UserscriptAPI 更新日志。urlchange
事件对 URL 变化进行跟踪(采用旧版逻辑对 Violentmonkey 作兼容)。离上一次真正意义上的功能性更新已过去许久,这段时间修修补补都把
v4.9
的小版本推到19
了。估计在本脚本的加持下,「稍后再看」这一功能已经相当完善了。另一方面,官方的「稍后再看」也确实以蜗牛般的速度在改进……尽管,从这个脚本第一天创建到现在,共一年半时间,B站程序员并没有让这个功能在实质上变得更好用,反而弄出了前段时间超级 ** 的稍后再看播放页。
其实也没什么好抒发的,只是希望官方能在恶心用户这方面适可而止。这段时间 APP 上的稍后再看被「优化」成了一坨屎的样子,底栏和直播更是作出抖音化的改动,可真把我给恶心到了💢💢💢
忍不住吐槽一下,之前B站那个稍后再看播放页设计得实在是太蠢了。其设计逻辑极度奇葩,导致 BUG 一堆且巨难用。
上一版本的脚本不得不花了很大力气在该页面上缝缝补补,尤其是「确保视频一致性」这一帮官方修 BUG 的功能,使用了大量奇技淫巧。
实际上这些问题从官方角度非常好解决,这次B站对该页面的更新正好就说明了这一点。
GMObject
保存在内存上的缓存数据,后者指通过 GM_setValue()
保存在脚本数据库上的缓存数据。configMap
中,而不再作为脚本常量看待。API
类剥离出来,作为一个通用代码库使用。(后更名为 UserscriptAPI
)logger
API 对日志输出进行标准化。document-start
和 document-idle
两个运行时机,因而被强行割裂为两部分。之前个人一直不愿意将不必要的代码注入到 document-start
时期执行,这给脚本的编写带来非常多的麻烦,现在回想起来就是庸人自扰。request
API 处理网络请求,并优化异常处理的方式。Vue
对象进行控制的做法,直接使用B站 API 来实现相关功能。wait
API 支持异步条件。this
附加必要信息。transform
,彻底解决字体发虚的问题。这个问题在每个浏览器上都会有不同的表现,且会受到扩展和用户脚本的影响,搞不来。MutationObserver
对弹出菜单进行处理,真正意义上彻底解决网速不足带来的问题。wait
API 增加异步版本,并大幅强化功能及修复相关的隐性 BUG。message
API,并用于代替 alert
来提醒用户信息。DOMContentLoaded
事件响应中执行,优化网页加载和重定向速度。PushQueue
API,用于保存稍后再看历史数据。wait
API。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。