the1812 / Bilibili-Evolved

强大的哔哩哔哩增强脚本
Other
22.14k stars 1.59k forks source link

[组件-下载视频][插件-下载视频 - aria2 输出支持][组件-查看封面] 为aria2提供可下载封面的功能 #4798

Open oxygenkun opened 2 weeks ago

oxygenkun commented 2 weeks ago
  1. 优化视频下载组件的结构,现在在调用 downloadExtraAssets 时候再获取 assets 的 blob 并下载

  2. 扩展视频下载组件的接口,插件可以处理 assets 的下载逻辑

  3. 扩展视频封面组件和 aria2 插件以支持 aria2 下载封面

the1812 commented 2 days ago

设计上有一些问题:

那么, 这个封面就属于一种新的类型, 不应该是 extraAssets, 而是 DownloadVideoAction 上一个新的属性, 比如叫 onlineAssets. 这样就不需要加入 proxyExtraAssets 这种特化判断. 原先的 extraAssets 中的封面资源, 可以交由 DownloadVideoOutput 处理, 当使用了 onlineAssets 下载封面时, 直接将 extraAssets 中的封面资源删除掉. 这要求 extraAssets 的下载晚于 DownloadVideoOutput.runAction, 直接交换这里的两行顺序即可.

oxygenkun commented 2 days ago

那么, 这个封面就属于一种新的类型, 不应该是 extraAssets, 而是 DownloadVideoAction 上一个新的属性, 比如叫 onlineAssets. 这样就不需要加入 proxyExtraAssets 这种特化判断.

onlineAssets 理解,近期可以改,把 proxyExtraAssets 去掉 (引入的原因是为了避免下载时候对原来的 action.extraAssets 有副作用,干脆就全部放在plugin里处理了。如果没这方面要求,直接在列表中删除也没问题)。

原先的 extraAssets 中的封面资源, 可以交由 DownloadVideoOutput 处理, 当使用了 onlineAssets 下载封面时, 直接将 extraAssets 中的封面资源删除掉. 这要求 extraAssets 的下载晚于 DownloadVideoOutput.runAction, 直接交换这里的两行顺序即可.

现在的逻辑是构建 extraAssets 的时候就获取 blob 了,不改这部分逻辑调整顺序也行(不止两行)。但是我觉得把下载好的blob放在assets里面也不是很恰当, 修改成在 downloadExtraAssets 中获取 blob 更合理,构造的时候只存储下载的函数和参数。

the1812 commented 1 day ago

现在的逻辑是构建 extraAssets 的时候就获取 blob 了,不改这部分逻辑调整顺序也行(不止两行)。但是我觉得把下载好的blob放在assets里面也不是很恰当,修改成在 downloadExtraAssets 中获取 blob 更合理,构造的时候只存储下载的函数和参数。

这一点当然没问题的, 后置下载 blob + 调整顺序才能避免多余的下载