关于我也搞了一个BV下载器这件事

189 阅读1分钟

icon.png

暂且就叫 dilidili

GitHub 项目地址

预览

1.png

感谢以下项目的帮助

◔.̮◔✧ 嗯。。。为什么会想要搞这个呢?是因为总有一些视频是需要下载的。本来一直都是使用这个下载器(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 错误,后来发现原来是下载接口调用的频次太高导致的。只需要在每个下载任务之间添加延迟即可。

关于签名

签名一直都是一生之敌。奈何穷,只能通过一些方式绕开签名的问题。