暂且就叫 dilidili 吧
预览
感谢以下项目的帮助
◔.̮◔✧ 嗯。。。为什么会想要搞这个呢?是因为总有一些视频是需要下载的。本来一直都是使用这个下载器(BilibiliVideoDownload)的,但是这个项目已经很久没有更新了,而且之前提的一个 issue 也没有处理。另外当下载的视频很多的时候,管理起来不太方便。所以想能不能自己搞一个。
技术栈
一开始考虑用tauri,但是事与愿违。在 ffmpeg 方面的问题没有解决。虽然目前有类似ffmpeg-next这样的库,但是实际开发中还是没有尝试成功(菜,太菜了(┬_┬))。因此最后选择 electron,渲染进程就选了比较熟悉的 react。
UI
UI方面直接参考了 bilibili 桌面端,简化了一下(并不是因为懒)。
一些坑
-
ffmpeg 路径配置
项目中使用到了 ffmpeg-static 和 fluent-ffmpeg,在开发模式下ffmpeg可执行文件的路径是可以正常获取的,但是在生产模式下获取失败。后来发现是因为 electron-builder 开启 asar 后,路径发生了变化,需要修改。
const binaryPath = ffmpegPath.replace('app.asar', 'app.asar.unpacked') -
视频下载
参考自视频取流说明,发现下载文件时会报一个 403 错误,刚开始以为是 session 错误,后来发现原来是下载接口调用的频次太高导致的。只需要在每个下载任务之间添加延迟即可。
关于签名
签名一直都是一生之敌。奈何穷,只能通过一些方式绕开签名的问题。