写了一个哔哩哔哩视频下载 Chrome 插件 SakiDown(已开源) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
stararenas

写了一个哔哩哔哩视频下载 Chrome 插件 SakiDown(已开源)

  •  1
     
  •   stararenas 2 月 11 日 2325 次点击
    这是一个创建于 72 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开箱即用,支持非 DRM 加密的个人投稿/番剧/课堂,完整支持合集/播放列表/稍后再看。支持封面和弹幕下载。

    之前嫌大部分哔哩哔哩视频下载软件使用太麻烦,Chrome 插件体验又很一般(对批量下载支持不好,且对于超过 3GB 的大文件下载会遇到 Chrome 内存墙问题)。于是在刚学 Javascript 没多久的情况下,踩了无数坑,花了 2 个多月写了这个插件。

    合并音频流和视频流部分没有用到 ffmpeg.wasm ,而是自己针对哔哩哔哩的 dash 流,在 AI 帮助下写了专门的合并算法,已经稳定运行了 2 个月没出问题。用 mp4box -info 检查合并后的视频,与 yt-dlp 下载合并后的视频,返回的信息一致。

    因为是原生 Javascript ,所以可以直接用源代码模式运行,除 Bilibili 官方接口外无任何网络请求,数据保存在本地,且可以完整导出已完成任务的 json 数据。

    如果大家有时间的话,能否赏脸使用一下呢?这个开源的版本虽然还有很多缺陷,不过核心使用流程上还是很流畅的。

    项目地址: https://github.com/weiyunjun/sakidown

    如果你有任何问题,欢迎提交 issue 。谢谢你看到这里。

    17 条回复    2026-02-23 11:59:29 +08:00
    Shiroka
        1
    Shiroka  
       2 月 11 日 via Android   5
    ada65line
        2
    ada65line  
       2 月 11 日 via iPhone
    试用了一下感觉界面和效果都很不错。唯一稍微让我一开始有点困惑的地方是“纯音频”策略里面的画质选项。不过我理解这个只是因为复用了通用 UI 而已,并不会有实际的问题。

    另外,这个插件会上 chrome web store 吗?
    ZztGqk
        3
    ZztGqk  
       2 月 11 日 via iPhone
    借楼问一下分发插件只能走 chrome store 是吧,不上的话热更新有什么好方案么?上传 cdn 分发?总不让用户拖拽升级吧?另外现在框架流行走 wxt ?
    minami
        4
    minami  
       2 月 11 日 via Android
    还在 go 还在 go
    Saunak
        5
    Saunak  
       2 月 11 日
    有提供一批 url ( csv 或者 json ),批量下载 b 站或者油管的工具么?
    stararenas
        6
    stararenas  
    OP
       2 月 11 日
    @ada65line 不打算上架任何 Web Store ,因为这会增加信任成本(你无法保证开源仓库的代码和 Web Store 部分代码的一致性)。并且,这会显著增加项目接到律师函的风险,这对我来说是没有必要的(我需要更多的反馈来帮助我学习编程)。将 GitHub 作为唯一的分发渠道,有助于保持项目本身,以及我个人的健康。只要哔哩哔哩二创社区还可以持续产出我喜欢的内容,我就有动力维护下去。
    stararenas
        7
    stararenas  
    OP
       2 月 11 日
    @ZztGqk 还真是,版本更新可以选择 git pull 。或者按你说的拖拽升级...
    2b5X607vRr3OB6ad
        8
    2b5X607vRr3OB6ad  
       2 月 12 日 via iPhone
    支持一下
    kandaakihito
        9
    kandaakihito  
       2 月 12 日
    @Shiroka 兄弟,你动啊
    aisles1
        10
    aisles1  
       2 月 12 日
    @Shiroka #1 我真求你了
    pingxu
        11
    pingxu  
       2 月 12 日
    我是用官方客户端下载然后用自己的脚本合并修改
    stararenas
        12
    stararenas  
    OP
       2 月 12 日
    @pingxu 官方客户端指的是 app 缓存吗?我之前研究过,二进制部分在开头塞了几个 0 导致无法直接被一些剪辑软件识别(你可以用 hex editor 查看)。直接通过 api 获取的数据不存在该问题。当然合并的话问题不大,ffmpeg 帮你处理了这些情况。
    pingxu
        13
    pingxu  
       2 月 12 日
    @stararenas windows 端的哔哩哔哩,以前白色版能直接下载,后来不给用了,现在是红色版的,确实塞了几个 0 ,不过删掉几个 0 后合并视频和音频文件即可。
    henix
        14
    henix  
       2 月 12 日
    我之前用的一个 chrome 插件已经被律师函了( ̄ ̄")
    goodryb
        15
    goodryb  
       2 月 13 日
    太好了,以前用 yt-dlp 还要捣腾 cookies ,用这个登录后就直接可以下载了。 只不过 b 站的码率实在是压得太低
    goodryb
        16
    goodryb  
       2 月 13 日
    @Saunak 你这个需求感觉 yt-dlp 比较适合
    stararenas
        17
    stararenas  
    OP
       2 月 23 日   1
    @ada65line 现在,当下载视频画面关闭时,偏好画质和偏好编码的下拉选择框会变灰,无法修改(此处不能隐藏偏好画质和偏好编码选项本身,不然会导致更严重的困惑:我之前选好的选项去哪里了)。设置界面已经小幅度重构为声明式结构,后续迭代会很方便。欢迎反馈。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2581 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 15:36 PVG 23:36 LAX 08:36 JFK 11:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86