1 Star 5 Fork 0

liangjiancang / userscript

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
changelog.md 46.40 KB
一键复制 编辑 原始数据 按行查看 历史

B站稍后再看功能增强 更新日志

本日志只记录用户友好的更新说明,影响不大的问题修复与修改不作记录,具体修改见 提交记录

V4.35

  1. 脚本:目前B站已引入大于 2 ** 30 的 AV 号,对 aidbvid 互转工具类进行升级以进行适配。
  2. UI:修复顶栏各项目间距在浏览器缩放倍率较大时不正确的问题。(实际上是B站自身问题,但切身影响到显示效果)230050#comment-475408

V4.34

  1. 批量转移:功能实现。该功能入口在稍后再看列表页面,可将(筛选出来的)稍后再看稿件批量转移至指定收藏夹。
  2. 固定:现在不同用户的固定项空间独立,从而避免切换登录用户会导致固定项被清空的问题。
  3. 批量添加:适配稍后再看容量上限提升。
  4. 搜索:搜索框默认值载入到搜索框时,会在后方添加空格,以便用户进行追加输入。
  5. 列表页面:适配页面更新。

批量转移至收藏夹的功能算是被许多用户反复提及的需求,一直没有做原因有二:一是确实很容易触发B站拦截机制;二是其实有更好的解决方案,那就是使用各种奇技淫巧突破稍后再看 100 的上限——其实我已经能想到两种实现方式,但想想工作量就头大——本来想着一步到位的,但现在看来以后维护这脚本的时间是越来越少了,大概不会去搞了吧,就还是把妥协的方案实现出来算了

把批量转移功能做出来后,发现B站竟然在近段时间放开了稍后再看容量上限,堪称拖延症的大胜利!困扰了我跟其他稍后再看深度用户数年的问题就这么解决了,有点不真实。虽然,批量转移、列表导出导入这些功能被釜底抽薪了,但容量上限的问题应该是被彻底解决了(之所以说「应该」,是怕新上限还是不太够用),实在是太好了。

在搜索框默认值后添加空格这一行为,是所谓的工业化产品永远也做不出来的,因为只有真正的用户才能发现这一痛点,也只有切实理解用户这一痛点后,设计者才可能进行这样奇怪的改动。

V4.33

  1. 列表导入:功能实现。该功能入口在批量添加管理器中,支持从文件中以自定义方式加载稿件。172949#comment-384966
  2. 批量添加:支持从收藏夹导入稿件。172949#comment-385635
  3. 批量添加:支持以文件快照形式存读批量添加管理器状态。相应地,添加「文件快照前缀」配置项。172949#comment-386173
  4. 批量添加:优化时间同步逻辑为「将一个合适的时间点同步到加载步骤中,以便与上次批量添加操作无缝对接。该功能仅对于常规加载方式生效。执行加载步骤:若完成且没有找到新稿件,同步『加载时间』。执行添加步骤:若完成且加载步骤完成,同步『加载时间』;否则同步『最后一个添加成功的稿件的投稿时间』」。
  5. 批量添加:增加「选中全部」「取消全部」按钮。172949#comment-385635
  6. 批量添加:「重置参数」按钮改为「读取参数」,并支持右键点击「保存参数」按钮执行参数重置。172949#comment-386211
  7. 批量添加:执行任务过程中禁用底部按钮。
  8. 固定:快速切换按钮显示稿件固定状态,且可通过右键点击切换固定状态(仅当稿件在稍后再看中时)。
  9. 弹出面板:稿件统计常规状态下显示为 稍后再看稿件,执行搜索时显示为 搜索出来的稍后再看稿件/搜索出来的全部非移除稿件
  10. 列表页面:稿件统计常规状态下显示为 (稍后再看稿件/全部稿件),执行搜索时显示为 (搜索出来的稍后再看稿件/搜索出来的全部稿件/全部稿件)
  11. 列表页面:修复点击「刷新列表」按钮加载搜索框默认值时,没有修改搜索框显示状态的问题。
  12. 列表页面:修复无法正常显示失效稿件状态的问题。
  13. 快速切换:适配B站新版各播放页面修改。
  14. 代码:config / configMap 机制不再要求在「用户设置」中有对应配置项。
  15. 约定:「选项」->「配置项」。
  16. 外部功能:由于B站新版页面顶栏已原生固定,移除 B站顶栏固顶 入口。

V4.32

  1. 批量添加:关注者转发的稿件增加「来源」说明(点击跳转到转发的动态)。
  2. 脚本:跟随官方新版变化,使用「列表播放页(稍后再看)」,弃用「稍后再看播放页」。
  3. 代码:prefer-object-has-own object-shorthand unicorn/prefer-string-replace-all unicorn/switch-case-braces。(此项更新变更了兼容性要求)
  4. 代码:减少代码嵌套。
  5. 脚本:更新兼容性说明。
  6. 外部:UserScriptAPIWeb 更新至 V1.3。

V4.31

  1. 脚本:支持「列表播放页」www.bilibili.com/list/*
  2. 列表页面:优化自动刷新功能,修复长时间工作时自动刷新失效的情况。
  3. UI:优化文本。特别是尽可能使用「稿件」而非「视频」来称呼视频投稿。

V4.30

  1. 列表导出:功能实现。该功能可将稍后再看列表导出,且支持较高自由度的配置。相应地,在顶栏入口、列表页面、脚本菜单等相关位置添加该功能的入口。148066
  2. 列表页面:修复页内刷新后,稿件稍后再看状态与实际不符时,无法正确切换稍后再看状态的问题。
  3. 列表页面:修复页内刷新后,在某些情况下不能触发搜索逻辑的问题。
  4. 列表页面:修复选择稿件标题文字会误触发点击逻辑的问题。161123
  5. 列表页面:现在点击「刷新列表」按钮会加载搜索框默认值。
  6. 列表页面:支持移除「全部播放」按钮。
  7. 自动移除:优化打开稍后再看播放页后的自动移除处理,使其更加稳定可靠。
  8. 弹出面板:支持在底部显示「批量添加」。
  9. 用户设置:优化配置项显示。
  10. 外部:UserscriptAPIWait 更新至 V1.3。

V4.29

  1. 列表页面:彻底修复页内刷新后,重新处理列表页面时,数据对应可能出现错误的问题。
  2. 列表页面:稿件初始化失败时,保证部分基础功能的正常使用,并在右方显示初始化失败提示(可通过点击失败提示触发页内刷新以重新初始化稿件)。148066
  3. 列表页面:稿件初始化失败时,页内刷新提示刷新失败。
  4. 列表页面:修复某些情况下无法识别出失效稿件的问题。

V4.28

  1. 列表页面:提供「刷新列表」按钮,点击可触发页内刷新。
  2. 列表页面:提供自动刷新功能,及配套的配置项。
  3. 列表页面:优化稍后再看列表页面的处理过程。
  4. 脚本:API 一律通过 HTTPS 访问。142885

V4.27

  1. 批量添加:改用新版 API 实现。旧版 API 加载到的视频投稿在时间上会有一定的滞后,无法加载到近十几分钟到几十分钟的稿件。新版 API 还有设计合理、使用方便、便于扩展等诸多优势。
  2. 批量添加:支持加载关注者转发的稿件,并提供开关项。
  3. 批量添加:支持加载已订阅的合集视频。
  4. 批量添加:增加平均请求间隔。根据 B站点赞批量取消 脚本编写过程中遭遇的情况,原先使用的默认值及最小值显得有些不够保守。
  5. 批量添加:允许「筛选」「过滤」关键词中包含非首末空白符。
  6. 搜索:为搜索框添加默认值功能,通过右键点击搜索框保存、中键点击搜索框清空。相应地,增加该功能的开关项。
  7. 快速切换:修复打开「播放全部」页面后,快速切换按钮没有正确显示稍后再看状态的问题。
  8. 脚本:优化 URL 匹配。
  9. 外部:InputNumber 更新至 V1.1。

「搜索框默认值」这一功能的设计本意实际上与「固定」「收藏」类似,将搜索框默认值与关键字排除相结合便可达到一种高级的「条件式『稍后再看』的『稍后再看』」。

也许有人会认为这一出发点过于奇葩,但这确实是解决作者近两周困扰的绝佳解决方案——某UP主的视频质量颇高,但他的视频属于需慢慢欣赏的类型,而这段时间正忙,若因此将其固定或转移到收藏夹又显得小题大做,不如每次使用关键字排除来解决。

显然,这一功能也有其他较为合理的使用场景。比如某段时间只想看某种类型的视频,灵活使用搜索框默认值便可大幅降低在大量稍后再看视频中寻找目标视频的麻烦。因此,对于用得上这一功能的用户,设置及清空默认值大概都不会被认为是一个低频、敏感的操作,故没有设计二次确认。

V4.26

  1. 批量添加:修复不同标签页中脚本实例互相影响而产生同步时间错误的问题。修复该问题后,配置项「执行时间同步后自动加载稿件」实用性大增,现改为默认开启。
  2. 批量添加:针对配置项「执行时间同步后自动加载稿件」,若同步时间距离当前时间超过 48 小时,不执行自动加载。
  3. 批量添加:适配B站动态主页改版。
  4. 填充缺失状态:适配B站动态主页改版,支持新版顶栏动态面板,支持新版搜索页面。
  5. 填充缺失状态:支持用户空间「主页」和「投稿」。
  6. 快速切换:适配 2022 版播放页。
  7. 列表页面:新增配置项「控制栏随页面滚动」,以达成类似于固顶的效果。
  8. 弹出面板:修复降序排序时无法上下滚动的问题。
  9. 顶栏兼容:不再作为「弹出面板」的子配置项,而是作为全局性的第三方顶栏兼容控制项,归类到「相关调整」中。
  10. 固定:修复固定项会因为一些特殊情况(如轻微的网络波动)而丢失的问题。
  11. 约定:「弹出菜单」->「弹出面板」。额,之前的叫法明显是不对的啊!!!
  12. 约定:「顶栏XX入口弹出面板」可缩写为「XX面板」。
  13. UI:滚动条样式设置现在会影响新版顶栏各入口的弹出面板。
  14. UI:优化文本。
  15. 脚本:兼容第三方的「链接转点击事件」处理。这种处理不算少见,常见目的如强制在新标签页打开链接、净化链接参数、反外链重定向跳转、重定向等。
  16. 外部:UserscriptAPIMessage 更新至 V1.3。

这个动态主页的改版虽然改完跟没改差不多一个样,不这倒值得赞扬,因为B站的每次改版都朝着越来越难用的方向进发,原地踏步就是最大的进步。相比之下,这个新版的搜索页面是真的有点 NT,又慢又丑。

#67482 是一年半前有人提出的小问题:@include *://x.com 会错误匹配到 https://www.example.com/archive/https://x.com。当时做了修复,但经过大半年思考最终还是移除了相关修改,因为,为这种小概率事件打补丁会浪费一种简便且理所应当的 URL 匹配写法。想不到 Tampermonkey v4.16 竟然针对这种情况优化了 @include 的行为,要求 :// 前的 * 必须匹配 URL scheme,属实是一个能令多方满意的好方案,值得赞扬!

V4.25

  1. 批量添加:执行加载步骤后,自动执行正则过滤步骤。且隐藏不必要的时间过滤步骤执行按钮、正则过滤执行按钮。
  2. 弹出菜单:在稿件较少时执行降序排序会以底部对齐形式显示,修复之。
  3. 搜索:修复通配符 * 无法匹配 0 个字符的问题。
  4. 脚本:支持收藏夹播放页(与稍后再看播放页无异,如无特殊说明,「稍后再看播放页」包含此概念)。

1 月 26 日了,B站新版顶栏内部的文字样式还是没能统一——不过B站正向着网页油管化、APP 抖音化全力进发,忙着歼灭分P功能呢,注意不到这种小问题也很正常。B站未来有可能会倒闭,但绝不会变质是吧😅

V4.24

  1. 顶栏入口:适配B站 2022 元旦更新。
  2. 顶栏入口:优化第三方兼容(支持 Bilibili Evolved v2)。
  3. 搜索:优化功能,支持关键字排除、空白符表示或关系等语法。
  4. 排序:增加「发布」「发布↓」排序类型。它们按发布时间对稿件进行排序。
  5. 脚本:移除「隐藏『收藏』中的『稍后再看』」功能。该功能的实现丑陋且复杂,却没有什么意义。

容我吐槽下新版B站在各页面的设计割裂,新版顶栏内部的文字样式甚至都做不到统一……

V4.23

  1. 代码:扩充代码规则至 ["eslint:all", "plugin:unicorn/all"],然后在此基础上做减法。
  2. 代码:偏好于 Object.entries()Object.keys()Object.values()
  3. 批量添加:改进时间同步逻辑。若上一次执行加载步骤时,没有找到新稿件,同步「加载完成时间」。若上一次执行添加步骤成功,同步「加载完成时间」;否则(失败或中断),同步「最后一个添加成功的稿件的投稿时间」。
  4. 批量添加:修复在视频播放页中批量添加管理器显示错乱的问题。
  5. 约定:「menu / 菜单 / 菜单项」->「panel / 面板 / 面板项」。在一开始,这个命名是没有问题的,但现在所谓的「menu」干的事情早已远不是「菜单」二字所能描述的了。
  6. 脚本:弃用 Tampermonkey 提供的 window.onurlchange 特性,改用 UserscriptAPI 提供的实现更为完善、功能更为强大的 urlchange 事件,来对 URL 变化进行跟踪。
  7. 脚本:优化面板开启与关闭流程。
  8. 脚本:面板项回调函数以参数而非 this 回传菜单对象。
  9. 脚本:优化 aidbvid 互转工具类,明确一些细节问题。
  10. 脚本:优化更新处理机制,现在会在必要时发送通知。
  11. 移除记录:修复「数据保存最小时间间隔」总是使用默认值的问题。
  12. 移除记录:优化稍后再看历史数据保存流程。
  13. 移除记录:优化说明及提示文本。
  14. 外部:UserscriptAPI 更新至 V2.2。详见 UserscriptAPI 更新日志
  15. 外部:UserscriptAPIDom 更新至 V1.2,UserscriptAPILogger 更新至 V1.2,UserscriptAPIMessage 更新至 V1.2。
  16. 外部:UserscriptAPIBase 更新至 V1.2,提供更为完善的 urlchange 事件。
  17. 外部:UserscriptAPIWait 更新至 V1.2,优化错误处理流程。
  18. 外部:UserscriptAPIWeb 更新至 V1.2,优化错误处理流程。
  19. 外部:PushQueue 独立成库(V1.1)。
  20. UI:优化文本。

ESLint 确实是个好东西,把规则全开一下子就暴露出 N 个潜在的问题——但反过来也可以说完全没有用,因为这一大堆所有的潜在问题其实几乎没有造成实际上的问题。

unsafeWindow 不是个好东西,困惑了我一年多的时间,不过最终还是妥善解决了—— unsafeWindow 二三事

B站样式修改导致脚本显示不正常已经不是一次两次了,我甚至都想把主 UI 给搬到 Shadow DOM 里了。但有点杀鸡用牛刀的感觉,想想就好。

V4.22

  1. 用户设置:重构。
  2. 脚本:优化版本更新机制和配置读取流程。
  3. 脚本:数值输入框均支持使用上下方向键(配合 Alt/Shift/Ctrl)调整,并提供严格的范围校验和精度控制。
  4. 脚本:修复了一些累计多个版本、一般情况下不会触发的 BUG。
  5. 批量添加:修复合作稿件的合作发布者中存在多名关注的UP主时,该稿件被重复添加至加载列表的问题。
  6. 外部:UserscriptAPIDom 更新至 V1.2。
  7. 外部:引入自定义数值输入框元素 InputNumber V1.0。

V4.21

  1. 外部:UserscriptAPI 更新至 V2.1。详见 UserscriptAPI 更新日志
  2. 外部:UserscriptAPIDom 更新至 V1.1,UserscriptAPILogger 更新至 V1.1,UserscriptAPIWait 更新至 V1.1,UserscriptAPIWeb 更新至 V1.1。
  3. 移除记录:优化生成流程,大幅提高生成效率。理论上可以大幅放宽稍后再看历史数据保存数限制,但基于该功能的设计目的(作为误删后的挽回手段)考虑,不放宽限制。
  4. 移除记录:修复稍后再看历史数据容量无法更新,导致无法有效修改实际保存数量的问题。
  5. 移除记录:修复不开启时间戳时,无法正确按「完全升序」排序的问题。
  6. 移除记录:零碎的问题修复及改进。
  7. 批量添加:增加时间同步功能,作用是将上一次成功执行添加步骤的时间同步到加载步骤中。
  8. 批量添加:切换时间单位会动态修改时间值。
  9. 批量添加:优化时间过滤步骤中时间值的范围限制及校验处理。
  10. 批量添加:批量添加管理器参数不再包含时间过滤步骤中的配置值。
  11. 重定向:开启后,列表页面中的稍后再看页链接会被替换为常规播放页链接。
  12. 重定向:不再停止原页面加载,因为这可能会引起已加载脚本执行错误,也许会造成意外的不良影响。
  13. 固定:右键点击固定按钮可以取消所有固定项。
  14. 弹出菜单:优化特殊情况下的排版,并增加标题悬浮提示。
  15. 脚本:优化初始化流程,避免页面停止加载导致的初始化错误。
  16. 脚本:移除脚本菜单「清空稍后再看历史数据」,以后需前往用户设置执行该操作。
  17. 代码:使用增强的代码规则。

V4.20

  1. 外部:UserscriptAPI 更新至 V2.0,实现 API 模块化。详见 UserscriptAPI 更新日志
  2. 外部:UserscriptAPIMessage 更新至 V1.1,引入对话框组件。
  3. 脚本:本地缓存有效期至少设置为 8 秒,不再允许禁用。
  4. 脚本:移除配置项「禁用页面缓存」。本来就是给调试开后门的,还是不要开放为妙……
  5. 脚本:修复在 Firefox 上有概率无法正常执行的问题。
  6. 脚本:增强内部数据校验。
  7. 移除记录:移除在同一个 URL 对应的页面下至多保存一次稍后再看历史数据的限制,并优化稍后再看历史数据的保存逻辑。
  8. 移除记录:新增配置项「数据保存最小时间间隔」。距离上一次保存稍后再看历史数据间隔超过该时间,才会再次进行保存。
  9. 批量添加:大幅增加批量添加管理器的易用性,如支持使用上下方向键(配合 Alt/Shift/Ctrl)调整时间过滤器、以 Enter 键触发任务执行、优化提示信息等。
  10. 批量添加:优化批量添加流程,避免各步骤任务在执行过程受到其他任务影响。
  11. 批量添加:不再加载已存在于稍后再看的视频投稿。
  12. 批量添加:若投稿存在于稍后再看历史数据中(仅开启移除记录时),则加载后默认为非选状态。
  13. 列表页面:增加设置项「显示批量添加管理器按钮」「显示自动移除控制器」。
  14. 弹出菜单:当搜索框有内容时,弹出时将内容全部选中。
  15. 收藏:改用对话框组件实现稍后再看收藏夹配置。
  16. 用户设置:优化设置项排布及内部处理逻辑。

Firefox 破事真多——果然,在四年前彻底抛弃用了十多年的 Firefox 是明智的选择,正如一年前抛弃 Chrome 拥抱 Edge 一样。

V4.19

  1. 批量添加:功能实现。批量添加管理器可将投稿批量添加到稍后再看中。在脚本菜单、动态主页、列表页面中增加入口按钮,并增加必要的设置项。#97715
  2. 脚本:重新设计稍后再看列表数据缓存机制。
  3. 脚本:修改稍后再看后,根据需要将状态修改同步到其他地方。
  4. 脚本:优化稿件的稍后再看状态判断逻辑。
  5. 脚本:更新兼容性说明。
  6. 顶栏入口:增加快捷功能「打开批量添加管理器」。
  7. 弹出菜单:修复列表滚动跟随项目位置变化的问题。97715#comment-229246
  8. 列表页面:修复页面滚动跟随项目位置变化的问题。97715#comment-229246
  9. 移除记录:优化记录项目生成流程。
  10. 填充缺失状态:优化处理流程。
  11. UI:优化文本。
  12. 代码:弃用事件处理器属性。
  13. 代码:对涉及 undefinednull 的判断与比较采取更合理的实践。
  14. 代码:引入类字段声明。
  15. 代码:引入逻辑空赋值运算符 ??=、逻辑或赋值运算符 ||= 及逻辑与赋值运算符 &&=
  16. 外部:UserscriptAPI 更新至 V1.8,引入网络请求检查、解析、报告功能。详见 UserscriptAPI 更新日志

V4.18

  1. 固定:功能实现。作用是将视频固定在稍后再看列表中,固定项将显示在列表最后,且被禁用自动移除及排序功能。相应地,在弹出菜单及列表页面中增加控制按钮。
  2. 收藏:功能实现。作用是将视频移动至指定收藏夹,然后将其从稍后再看移除。相应地,在弹出菜单及列表页面中增加控制按钮,并提供配置稍后再看收藏夹的配置项。
  3. 排序:重做,改用 flex 布局结合 orderflex-direction 实现。
  4. 排序:增加「固定」排序类型。该排序的主逻辑与「默认」相同,但将固定项显示在列表最前方。
  5. 列表页面:优化处理流程。
  6. 列表页面:显示详细播放进度。
  7. 列表页面:优化已失效视频的显示及交互。
  8. 弹出菜单:简单列表支持「时长」「时长↓」排序。
  9. 弹出菜单:优化已失效视频的显示及交互。
  10. 脚本:修复B站某些 API 只接受 application/x-www-form-urlencoded 类型编码数据而造成的一些问题。
  11. 代码:引入 aidbvid 互转算法。
  12. UI:优化素材,包括且不限于使用矢量图重绘图形。
  13. UI:修复显示被 V3 播放器遮挡的问题。
  14. UI:优化文字排版。
  15. UI:优化布局。
  16. 外部:UserscriptAPI 更新至 V1.7,大幅优化元素等待逻辑。详见 UserscriptAPI 更新日志

「固定」「收藏」这两个功能本质是一样的,就是「『稍后再看』的『稍后再看』」。只不过它们的解决思路不一样,一个是移到稍后再看最后以免妨碍日常浏览,另一个是将默认收藏夹当成暂存区来使。之前我对「『稍后再看』的『稍后再看』」这一重要需求毫无意识,直到上一版本实现了排序功能——随着时间推移,排在列表前方的总是一些希望留到以后再看的视频,无论使用何种排序都无法摆脱它们。

经过一年时间检验,aidbvid 互转算法确实是无法绕开,哪怕能通过各种手段解决,但将其引入利绝对利大于弊。但凡B站后台 API 能在 aidbvid 上统一一点,也不至于此。

V4.17

  1. 排序:支持对稍后再看列表进行排序。
  2. 排序:实现自动排序功能。该功能决定首次打开列表页面或顶栏入口弹出菜单时,如何对稍后再看列表内容进行排序。
  3. 列表页面:增加配置项以显示搜索框,提供对列表页面内容的搜索支持。
  4. 列表页面:增加配置项以显示排序控制器,用于对页面内列表内容进行排序。
  5. 列表页面:在执行排序、搜索、移除操作后,强制触发项目内容更新,避免出现项目显示不完整的情况。
  6. 弹出菜单:增加排序控制器,用于对菜单内列表内容进行排序。相应地,为该功能新增「在弹出菜单底部显示排序控制器」配置项。
  7. 弹出菜单:分P视频一般显示分P总数,鼠标悬浮至上方时显示总时长。
  8. 弹出菜单:优化开启菜单时重新应用搜索的时间点,以避免被用户观察到。
  9. 弹出菜单:避免状态按钮与视频时长重叠,并优化相关显示。
  10. 用户设置:设置页设置项分类逻辑调整。新增「相关调整」大类,用于归类与「稍后再看」无直接联系,但会从各方面影响脚本使用的配置。
  11. 用户设置:在功能性更新设置页的滚动条中标示出更新项的位置,且必须在滚动到最后一项更新项时才能保存。
  12. 用户设置:优化内部处理逻辑。
  13. 顶栏入口:优化第三方兼容。
  14. 脚本:优化主流程。
  15. 脚本:优化初始化流程。
  16. 外部功能:B站顶栏固顶
  17. UI:排除在某些页面官方样式对脚本显示造成的不良影响。
  18. UI:优化滚动条重置的时间点。
  19. UI:优化脚本菜单页面间的层叠显示。
  20. UI:优化位置计算。
  21. UI:优化文本。
  22. 代码:no-useless-call
  23. 外部:UserscriptAPI 更新至 V1.4。详见 UserscriptAPI 更新日志

其实 v4.17.0 并没有更新什么功能,只是 v4.16 累积更新内容太多了,还是升个小版本吧。

马后炮:最后 v4.17 反而承载太多东西了……

V4.16

  1. 脚本:增加配置项「脚本运行时期」。提供「DOMContentLoaded」和「load」两个选项,均对应同名事件。
  2. 脚本:完善脚本菜单运行流程。
  3. 脚本:优化主流程。
  4. 脚本:优化错误处理流程。
  5. 脚本:优化初始化流程。
  6. 脚本:优化 URL 匹配。
  7. 自动移除:列表页面中,现在被自动移除的视频不会从页面上消失,而是将其移动至列表末尾,并以去色加删除线形式来表示。
  8. 自动移除:优化列表页面中的自动移除处理。
  9. 弹出菜单:菜单中增加自动移除控制器,用于直接控制在弹出菜单中打开视频时是否执行自动移除逻辑,也就是给予用户一个临时切换的开关。相应地,为该功能新增「在弹出菜单底部显示自动移除控制器」配置项。
  10. 弹出菜单:彻底解决菜单弹出与关闭冲突造成的种种问题。
  11. 弹出菜单:优化无列表数据及无搜索结果时的显示。
  12. 弹出菜单:增加配置项「在弹出菜单中显示被移除的视频」。开启后,移除的视频会被临时记录下来,在往后打开时显示在列表下方,直至页面刷新为止。
  13. 弹出菜单:现在搜索条件会被保留,下次打开时自动应用,直至页面刷新为止。
  14. 弹出菜单:优化菜单弹出流程以降低误触率,避免用户将鼠标从浏览器工具栏移回网页时误触弹出菜单。
  15. 弹出菜单:优化菜单关闭的渐隐效果。
  16. 弹出菜单:优化菜单上方指示弹出源的小三角的显示。
  17. 移除记录:以移除记录的生成速度为准绳,重新规定相关参数的默认值及取值范围。
  18. 移除记录:新增「完全升序」,在该排序下从后往前回溯以筛选移除记录,且记录以升序排列。
  19. 列表页面:点击视频右方移除按钮后,视频会移动至列表末尾,并以去色加删除线形式来表示。
  20. 列表页面:页面上方的视频数统计,现在会在相关操作结束后更新。
  21. 列表页面:进一步优化已失效视频的交互逻辑。
  22. 重定向:兼容 URL 中 BV 号被第三方修改为 AV 号的情况。
  23. 代码:优先使用函数声明而非函数表达式来定义内部函数。
  24. UI:元素内容及布局优化。
  25. 外部:UserscriptAPI 更新至 V1.3。详见 UserscriptAPI 更新日志

写更新日志的时候,忽然想起很多「鼠标」其实应该是「光标」。但管他呢,现实中我从来没有见过有人把「光标」叫「光标」。JavaScript 中也没有什么 cursorenter,不是吗?

V4.15

  1. 弹出菜单:优化弹出菜单的弹出与关闭逻辑。
  2. 弹出菜单:优化弹出菜单中的数据展示。
  3. 弹出菜单:增加弹出菜单的隐形尺寸,避免鼠标移动到入口与菜单间的空隙而关闭菜单。
  4. 弹出菜单:弹出菜单搜索支持通配符。
  5. 顶栏入口:优化第三方兼容。
  6. 自动移除:对于「若视频在稍后再看中,则移除出稍后再看」配置项,跳过确认视频是否在稍后再看中的检查,直接执行移除。
  7. 填充缺失状态:在动态主页中,手动将视频添加或移除出稍后再看时,更新结果会同步到其他动态分类中。
  8. 脚本:进一步根据脚本设置动态压缩本地缓存尺寸。
  9. 脚本:若稍后再看列表数据获取失败,使用上一次的加载结果而非空数据。
  10. 脚本:优化脚本菜单运行流程。
  11. 脚本:优化数值类型设置项的输入限制逻辑。
  12. 脚本:修复数值类型设置项无法保存为 0 的问题。

v4.15.3 给弹出菜单的搜索增加了正则支持,但晚上躺在床上细想,这个地方真的有必要使用正则表达式吗?

想了一分多钟都没想出使用的场景,想不出稍后再看中有什么东西需要这么复杂的东西来筛选。倒是像最质朴的 ? * 通配符才是真正实用的。随后在 v4.15.4 移除了正则支持,改为通配符支持。

V4.14

  1. 外部:UserscriptAPI 更新至 V1.2,大幅优化条件等待和元素等待逻辑。详见 UserscriptAPI 更新日志
  2. 移除记录:在移除记录对话框中,可直接将视频添加或移除出稍后再看。
  3. 填充缺失状态:支持用户空间「动态」,并优化处理流程。
  4. 顶栏入口:增加「兼容第三方顶栏」配置项。
  5. UI:大幅优化各种组件的加载、定位及内部数据处理。
  6. UI:使用矢量图绘制软件对部分 Base64 图片进行手工重绘以进行压缩。
  7. 脚本:优化脚本菜单运行流程。
  8. 脚本:优化错误处理流程。
  9. 脚本:优化 URL 查询参数清理流程。
  10. 代码:优化异常处理。
  11. 代码:引入可选链操作符 ?. 及空值合并运算符 ??

V4.13

  1. 弹出菜单:移除的视频会被临时记录下来,在往后打开时显示在列表下方,直至页面刷新为止。

V4.12

  1. 移除记录:增加配置项「使用时间戳优化移除记录」。
    在历史数据记录中添加时间戳,用于改善移除记录中的数据排序,使得排序以「视频『最后一次』被观察到处于稍后再看的时间点」为基准,而非以「视频『第一次』被观察到处于稍后再看的时间点」为基准;同时也利于数据展示与查看。
  2. 移除记录:稍后再看历史数据改用数组存储,数据尺寸降低 15%~25%
  3. 移除记录:「历史回溯深度」不再绑定「稍后再看历史数据记录保存数」,并改用更为合理的默认值。
  4. 移除记录:总是获取最新的稍后再看列表数据用于生成移除记录。
  5. 弹出菜单:点击UP主名字可跳转至用户空间。
  6. 脚本:压缩本地缓存,只保留必要信息,数据尺寸至少降低 80%
  7. 脚本:优化已失效视频的显示及交互。
  8. 脚本:优化更新处理机制。
  9. 重定向:部分兼容性处理推迟至主流程中,保证重定向逻辑在第一时间执行。
  10. 内部:增强及优化 PushQueue

V4.11

  1. 外部:UserscriptAPI 更新至 V1.0,大幅优化元素等待逻辑。详见 UserscriptAPI 更新日志
  2. 移除记录:推倒重做,大幅优化存读及处理逻辑。
  3. 弹出菜单:优化弹出逻辑,让数据以最快的速度显示出来,且避免误弹出及特定情况下无法关闭的问题。
  4. 填充缺失状态:支持动态入口菜单。
  5. 重定向:优化错误处理流程。
  6. 脚本:更新推荐的最小本地缓存有效时间,并修正可能是用户被误导而设置出来的过小的值。
  7. 脚本:移除「功能性更新后打开设置页面」配置项。现在总是强制打开功能性更新设置。
  8. 脚本:优化部分监听器的处理。
  9. 脚本:优化脚本菜单运行流程。
  10. 脚本:优化配置保存流程。
  11. 脚本:改用 Tampermonkey 引入的 urlchange 事件对 URL 变化进行跟踪(采用旧版逻辑对 Violentmonkey 作兼容)。
  12. 脚本:优化更新处理机制。
  13. 脚本:增加B站登录验证,检测到为非登录状态直接终止执行。
  14. 脚本:移除过于陈旧的版本更新处理。
  15. 代码:借助新版元素等待 API 进行大幅简化。
  16. UI:文本及排版优化。

V4.10

  1. 列表页面:页面中增加自动移除控制器,用于直接控制在列表页面中打开视频时是否执行自动移除逻辑,也就是给予用户一个临时切换的开关。相应地,为该功能新增「彻底禁用自动移除」配置项。
  2. 重定向:优化处理流程,并修复重定向后丢失锚点的问题。
  3. 脚本:不再显式提醒脚本兼容问题。
  4. 脚本:优化 URL 匹配。

离上一次真正意义上的功能性更新已过去许久,这段时间修修补补都把 v4.9 的小版本推到 19 了。估计在本脚本的加持下,「稍后再看」这一功能已经相当完善了。

另一方面,官方的「稍后再看」也确实以蜗牛般的速度在改进……尽管,从这个脚本第一天创建到现在,共一年半时间,B站程序员并没有让这个功能在实质上变得更好用,反而弄出了前段时间超级 ** 的稍后再看播放页。

其实也没什么好抒发的,只是希望官方能在恶心用户这方面适可而止。这段时间 APP 上的稍后再看被「优化」成了一坨屎的样子,底栏和直播更是作出抖音化的改动,可真把我给恶心到了💢💢💢

V4.9

  1. 确保视频一致性:功能移除。 经过大半年时间,B站的程序员总算发现视频不一致的 BUG 并将其修好。既然如此,这一功能已经没有存在的必要了,移除。
  2. 弹出菜单:重做,不再引用B站原生的稍后再看列表组件,并在其中实现搜索、状态切换、快捷功能等功能。对应地,增加隐藏「收藏」中「稍后再看」功能。感谢 #79115 让我下定重做这一功能的决心。#79115
  3. 用户设置:增加配置项以在设置页中隐藏被禁用项的子项。
  4. 顶栏入口:增加「移除稍后再看已观看视频」快捷功能,可在入口上通过各种方式调用。
  5. 重定向:不再影响「播放全部」等相关功能。
  6. 重定向:修复重定向时没有传递查询参数的问题。该问题会导致重定向时无法执行自动移除功能,以及一系列潜在问题。
  7. 脚本:增加配置项以禁用页面缓存。
  8. 脚本:适配B站稍后再看播放页改版,这次改版导致了重定向以及涉及到稍后再看播放页的种种功能均出现一定问题。

忍不住吐槽一下,之前B站那个稍后再看播放页设计得实在是太蠢了。其设计逻辑极度奇葩,导致 BUG 一堆且巨难用。

上一版本的脚本不得不花了很大力气在该页面上缝缝补补,尤其是「确保视频一致性」这一帮官方修 BUG 的功能,使用了大量奇技淫巧。

实际上这些问题从官方角度非常好解决,这次B站对该页面的更新正好就说明了这一点。

V4.8

  1. 顶栏入口:增加中键点击功能,并增加「清空稍后再看」快捷功能。#64830
  2. 顶栏入口:修复在弹出菜单中,非稍后再看(收藏夹)中的视频卡片也被添加自动移除逻辑的问题。#74371

V4.7

  1. 约定:明确「稍后再看列表数据」和「稍后再看历史数据」这两个概念,在代码以及 UI 上进行统一。其中,前者指单次获取到稍后再看列表数据,大部分情况下特指当前时间点获取到的稍后再看列表数据;后者是前者的历史集合。
  2. 脚本:明确「页面缓存」和「本地缓存」这两个概念,在代码以及 UI 上进行统一。其中,前者指通过 GMObject 保存在内存上的缓存数据,后者指通过 GM_setValue() 保存在脚本数据库上的缓存数据。
  3. 脚本:在本地对稍后再看列表数据进行缓存,本地缓存有效期内将会使用其来代替网络请求,除非是在有必要确保数据正确性的场合。
  4. 脚本:增加配置项,以对稍后再看列表数据本地缓存有效期进行设置。
  5. 代码:配置默认值、极值硬编码进 configMap 中,而不再作为脚本常量看待。

V4.6

  1. 脚本:兼容性处理。
  2. 脚本:匹配时,改用黑名单的方式来排除特殊页面,并修复一系列代码在本不该执行的页面上执行的问题。
  3. 脚本:修复打开稍后再看播放页面后长时间放置而没有切换过去,导致脚本逻辑执行失败的问题。
  4. 脚本:根据脚本传递的 URL 查询参数处理完成后,才将这些参数从 URL 中移除。
  5. 脚本:大量微小的问题修复以及功能改进。

V4.5

  1. 外部:将 API 类剥离出来,作为一个通用代码库使用。(后更名为 UserscriptAPI

V4.4

  1. 填充缺失状态:功能实现。在动态页面、视频播放页面,甚至更多地方填充缺失的稍后再看状态信息。
  2. 移除记录:支持稍后再看列表数据的模糊比对,舍弃可能重复的数据。
  3. 用户设置:高亮显示更新涉及到的功能。

V4.3

  1. 移除记录:修复数据获取失败时往数据库中写入错误数据,并进一步导致脚本运行错误的问题。
  2. UI:引入 CSS 变量进行样式标准化。
  3. 内部:引入 logger API 对日志输出进行标准化。
  4. 代码:从 V2 开始,脚本代码就存在 document-startdocument-idle 两个运行时机,因而被强行割裂为两部分。之前个人一直不愿意将不必要的代码注入到 document-start 时期执行,这给脚本的编写带来非常多的麻烦,现在回想起来就是庸人自扰。

V4.2

  1. 用户设置:重做设置页,采用更为合理的 DOM 结构,方便以后扩展。
  2. 移除记录:现在这个功能不再局限于列表页面,而是作为全局功能,用户可以设置在什么时间点保存稍后再看历史数据。

V4.1

  1. 脚本:当前稍后再看列表数据的获取,改为懒加载方式,为后面要实现的功能开路。
  2. 脚本:对于脚本在 URL 中引入的查询参数,现在会在读取后移除以避免产生不好的用户体验。
  3. 确保视频一致性:若打开稍后再看播放页时,目标视频不在稍后再看中,询问是否跳转到常规播放页。
  4. 移除记录:修复警告项在不恰当时候出现的问题,修复警告信息框显示效果错误的问题。
  5. 内部:引入 request API 处理网络请求,并优化异常处理的方式。

V4.0

  1. 自动移除:功能实现。打开视频时自动将其移除出稍后再看。
  2. 快速切换:放弃借助页面上 Vue 对象进行控制的做法,直接使用B站 API 来实现相关功能。
  3. 脚本:「更新后强制进行初始化」定位修改为「更新后打开设置」,不会进行初始化,并默认开启。
  4. 内部:wait API 支持异步条件。
  5. 代码:开源,Greasy Fork 上使用源代码同步方式更新脚本。

V3.5

  1. 内部:加强各类 API,在一些回调上通过 this 附加必要信息。
  2. 代码:重构,OOP 化。

V3.4

  1. 脚本:与个人的其他脚本之间进行功能适配,确保它们不会因为执行时间点不同而导致不同的表现。
  2. UI:放弃幻想,弃用 transform,彻底解决字体发虚的问题。这个问题在每个浏览器上都会有不同的表现,且会受到扩展和用户脚本的影响,搞不来。

V3.3

  1. 移除记录:明确排序规则,提供升序和降序。

V3.2

  1. 确保视频一致性:功能实现。该功能可避免点击A视频却打开B视频的问题。
  2. 顶栏入口:引入 MutationObserver 对弹出菜单进行处理,真正意义上彻底解决网速不足带来的问题。
  3. 内部:大量 API 功能增强。

V3.1

  1. 脚本:增加配置项,以便分别隐藏列表页面中的「一键清空」和「移除已观看视频」按钮。
  2. 顶栏入口:可对弹出菜单中的滚动条进行美化,或直接将其隐藏。为了保持一致性,顶栏中其他入口,如「历史」「动态」的弹出菜单也会受到影响。
  3. 移除记录:相关数据改为懒加载,优化页面加载速度。
  4. 代码:引入枚举类型,并加强配置的读写校验。

V3.0

  1. 顶栏入口:彻底理解弹出菜单的机制,以及解决相关的疑难问题,终于不会因为鼠标抽搐、网速不给力等原因引入奇奇怪怪的现象。同时,弹出菜单上指示来源的小三角也能正确地指向稍后再看入口或收藏入口。
  2. 移除记录:增加存储列表页面数据条数的显示与清理功能。
  3. 脚本:重置脚本不再清理移除记录使用到的数据与相关配置。
  4. 代码:文档标准化。

V2.10

  1. 顶栏入口:鼠标在顶栏入口与收藏入口之间切换时,弹出菜单中选择的类别也会跟随切换。#54302
  2. 顶栏入口:现在整个稍后再看/收藏弹出菜单中的所有视频,都能设置在当前页面或新标签页打开。
  3. 内部:wait API 增加异步版本,并大幅强化功能及修复相关的隐性 BUG。

V2.9

  1. 移除记录:在用户设置中修改配置时,若设置可能会导致性能问题或内部数据清理,则发出警告。
  2. 用户设置:开启自动刷新后,只有在检测到配置有更改,以及更改的配置必须要刷新页面才能生效时才会进行刷新。

V2.8

  1. 脚本:建立相对完善的版本更新处理机制。
  2. 脚本:增加配置项,以支持在功能性更新后强制初始化。
  3. 移除记录:进行性能测试,确保相关配置的临界范围,并采用更合理的初始值。
  4. 重定向:修复执行重定向后没有终止剩余代码执行的问题,大幅优化重定向速度和用户体验。

V2.7

  1. 快速切换:支持稍后再看播放页。#54196
  2. 内部:实现 message API,并用于代替 alert 来提醒用户信息。

V2.6

  1. 代码:重构。

V2.5

  1. 脚本:将尽可能多的代码执行移至 DOMContentLoaded 事件响应中执行,优化网页加载和重定向速度。
  2. 脚本:用户配置读取错误时的处理逻辑优化。
  3. 脚本:重置脚本时会清理 GM 数据库。
  4. 顶栏入口:增加右键点击功能,并优化左键点击的处理逻辑。
  5. 顶栏入口:点击弹出菜单中的稍后再看视频时,可选择在当前页面或新标签页打开。
  6. 移除记录:增加默认历史回溯深度的设置,并对移除记录功能进行优化。
  7. 代码:引入 ESLint 对代码风格化。

V2.4

  1. 代码:HTML 与 CSS 标识符标准化。

V2.3

  1. 脚本:用户配置校验,以及简单的升级机制构建。
  2. 用户设置:增加配置项,以决定设置完成后是否立即刷新页面。
  3. 顶栏入口:支持对点击时执行的操作进行设置。
  4. 移除记录:支持历史回溯深度的设置,方便定位。
  5. 重定向:处理时停止原页面的加载,大幅优化速度和用户体验。
  6. UI:改善文本表述,尽量使用普通用户能看得懂的语言说话……

V2.2

  1. 脚本:性能优化。
  2. UI:易用性改进。
  3. 代码:格式标准化。

V2.1

  1. 移除记录:稍后再看记录功能更改定位为移除记录,并大幅增强功能功能,使其可保留多个版本的历史信息,并通过对比直接显示出当前移除了哪些视频。
  2. 脚本:增加功能「重置脚本」。
  3. UI:大幅优化,包括且不限于增加动画效果,为用户提供更好的体验。
  4. 内部:实现 PushQueue API,用于保存稍后再看历史数据。

V2.0

  1. 脚本:为脚本提供的功能提供开关,并提供用户友好的设置页。
  2. 稍后再看记录:功能实现。
  3. 重定向:将 B站「稍后再看」重定向 脚本整合进来。
  4. 列表页面:点击视频时,在新标签页中打开视频。@383441#46595

V1

  1. 顶栏入口:功能实现。在顶栏中加入被B站官方移除的稍后再看入口,支持与收藏入口的弹出菜单联动等简单功能。
  2. 快速切换:功能实现。在常规播放页中加入快速切换稍后再看状态的按钮
  3. 内部:初步实现等待元素加载 / 等待条件达成的 wait API。
1
https://gitee.com/liangjiancang/userscript.git
git@gitee.com:liangjiancang/userscript.git
liangjiancang
userscript
userscript
master

搜索帮助