1

GitHub - vooidzero/B23Downloader: 下载B站视频、直播、漫画(能看=能下载)。使用 Q...

 2 years ago
source link: https://github.com/vooidzero/B23Downloader
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client



B23Downloader

B23Downloader: 下载B站 视频/直播/漫画

Main Window

简单,但也够用了。没有历史记录功能。(当然,对于正在下载的任务,关闭程序后再打开还是在的)

在上图中,选择的下载位置为 E:/tmp,那么选中的两个视频分别下载到

  • E:/tmp/天气之子 原版.flv
  • E:/tmp/天气之子 预告花絮 MV1 爱能做到的还有什么.flv

如上图,下载位置还是 E:/tmp,选中的两项分别下载到文件夹

  • E:/tmp/恋如雨止 81 第81话/
  • E:/tmp/恋如雨止 82 最终话/

漫画是一页一页下载的,在该示例中,82 最终话 将下载为 E:/tmp/恋如雨止 82 最终话/01.jpg - 32.jpg(32 张图片)。

目前删除漫画下载任务会粗暴地删除整个文件夹,如示例中的 E:/tmp/82 最终话/

上图中,对话框的标题为 【哔哩哔哩英雄联盟赛事】【直播】HLE vs LNG,其命名规则为【<用户名>】<房间标题>,示例中用户名为 哔哩哔哩英雄联盟赛事,房间标题为 【直播】HLE vs LNG

下载文件的命名为 <标题> <下载开始时间>.flv,比如【哔哩哔哩英雄联盟赛事】【直播】HLE vs LNG [2021.10.05] 18.59.22.flv,其所在文件夹为上图中所选的 E:/tmp/

目前的直播下载任务策略为:

  • 暂停直播下载任务后重新开始,会写入另一个文件,比如 【哔哩哔哩英雄联盟赛事】【直播】HLE vs LNG [2021.10.05] 19.32.11.flv
  • 删除任务不会删除任何相关文件
  • 任务不会被保存,即退出程序后再启动,之前的直播下载任务不被保留

如果添加直播下载任务时,正在下载的任务数量超过最大可同时下载任务数(代码里硬编码为 3),那么这个直播下载任务会处于“等待下载”状态。

支持的 URL 输入

部分类型可以使用编号:

  • 视频 BV 或 av 号,如 BV1ab411c7Stav35581924
  • 剧集 ssid 或 epid,如 ss28341ep281280
  • live+直播房间号,如 live6

暂未实现“设置”功能(以后有时间会加上的),代理跟随系统,你可以设置全局代理来下载地域限制内容(比如代理服务器在香港,那么可以下载“仅限港澳台地区”的动漫)。

Build-Issues

B23Downloader 使用 Qt 6 (C++ 17) 开发,虽然 Release 只有 Windows 64-bit 的,但你可以在其他桌面平台编译使用。

由于所有请求链接均采用 HTTPS,所以依赖 OpenSSL库。在 Windows 上,虽然 Qt Installer 可以勾选 OpenSSL Toolkit,但 Qt Installer 并不会设置好相关环境,于是会出现找不到 SSL 库的错误(如 TLS initialization failed),解决方法参考 TLS initialization failed on GET Request - Stack Overflow.

  • 正在考虑代码重构

  • 2021/10/08 - 2021/10/11

    解决了一个老问题:下载的直播视频文件无法拖动进度条(需要极长时间来完成响应)

    比对下载的直播原始数据和 B 站常规(非直播)视频 FLV,发现了以下问题: B站录播姬的做法是在头部留一个 spacer 大数组,其结构是: 如果关键帧 3 秒一个的话,占用一百多 KB 就能够支撑 5 小时。
    我的实现做了个小优化,把结构改成了:
    参考:Adoebe Flash Video File Format Specification Version 10.1.pdf

  • 2021/10/02

    在 Windows 上保证只运行一个实例

最后感谢 SocialSisterYi/bilibili-API-collect: 哔哩哔哩-API收集整理,虽然 B23Downloader 里用的 API 有很大一部分是我自己后面找的。以后有时间也为这个仓库贡献一下。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK