ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

想囤B站大会员4K视频到本地,我用一个Python脚本只花了一个晚上

想囤B站大会员4K视频到本地,我用一个Python脚本只花了一个晚上 想囤B站大会员4K视频到本地我用一个Python脚本只花了一个晚上【免费下载链接】bilibili-downloaderB站视频下载支持下载大会员清晰度4K持续更新中项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader你有没有遇到过这种情况B站大会员刚充完追的剧却突然显示已下架或者辛辛苦苦把一整套付费课程收藏进列表想着周末慢慢看结果周末一到视频没了。我上周就撞上了。一部追了半个月的番晚上十点还在列表里第二天早上直接灰掉。更气人的是我手机客户端里缓存的文件因为大会员过期直接没法播放。那一刻我下定决心在线的东西永远只是借来的只有躺在我硬盘里的才是我的。于是我开始满世界找B站视频下载的靠谱方案。在线解析站试了三四个不是排队一小时就是下到一半断链。最后是朋友丢给我一个开源项目——bilibili-downloader一个用 Python 写的 B 站视频下载工具。我照着 README 折腾了一个晚上从普通视频到大会员 4K、再到充电专属视频全部跑通。这篇就把我踩过的坑和完整的下载流程写下来帮你少走弯路。装依赖这步为什么我折腾了两次项目要求 Python 3.8 以上现在机器上基本都是这个版本往上。先把仓库拉下来git clone https://gitcode.com/gh_mirrors/bil/bilibili-downloader cd bilibili-downloader pip3 install -r requirements.txt依赖就四样httpx异步发请求速度的关键、beautifulsoup4解析视频页面、moviepy合并音视频、tqdm画进度条。都是常见库正常情况一分钟装完。我第一次栽在没看提示直接用pip而不是pip3结果装进了旧版 Python 的环境里运行时报ModuleNotFoundError: httpx。换成pip3就好了。如果你机器上还装着 Python 2记得统一用pip3。还有个提前剧透的细节合并音视频这步工具会先检查你有没有装ffmpeg有就优先用它合并速度飞快没有也没关系自动退回moviepy方案。我建议顺手装一个后面你会感谢自己。下载大会员4K视频卡在Cookie这一步最冤普通视频不填 Cookie 也能下但想拿 4K 高清、想下载充电专属内容必须让工具认出你的会员身份。这个身份凭证就是 Cookie——浏览器登录后发给你的一串通行证。具体操作就三步浏览器登录 B 站随便打开一个视频页面按F12打开开发者工具切到网络标签按Ctrl R刷新点第一个请求在请求头里找到Cookie整段复制然后把整串内容粘到config.py里的COOKIE变量上就完事了。注意两件事这串 Cookie 里的SESSDATA大约 30 天过期过期后重新复制一遍即可其余不用动别把 Cookie 贴到任何公开场合这等于把账号密码拱手送人把想下的视频写进列表一个坑提前给你排掉下载哪些视频同样在config.py里维护一个URL列表搞定。支持普通视频、分P视频和充电专属视频URL [ # 普通视频 https://www.bilibili.com/video/BV1M4411c7P4/, # 分P视频指定下载第2集 https://www.bilibili.com/video/BV1TnsZzHEcz/?p2, # 充电专属视频 https://www.bilibili.com/video/BV1W1wKeWEVe/, ]这里我要重点说一个新手 99% 会踩的坑。如果你把分P链接写成BV号?p2BV号后面没有斜杠B 站服务器会把这种链接重定向一次重定向过程中登录状态直接丢失画质掉到 480P。我当时下载一整套课程第一集还好好的第二集开始全是糊的排查了半天才发现是这个原因。工具的作者显然也被坑过他在 strategy/bilibili_executor.py 里专门写了一层 URL 规范化逻辑自动把BV号?p2补成BV号/?p2从根上保住 1080P 甚至 4K 画质。所以只要你用的是这个工具这个坑已经被提前填平了。敲下 python main.py 之后我盯着屏幕看了一分钟配置好config.py运行主程序python3 main.py终端先会打印任务概况——待下载数量、并发模式、输出目录然后进入逐条下载。程序默认同时下载 2 个视频而每个视频内部视频流和音频流是分开并发拉的进度条各自独立速度、已下载大小一目了然。我最惊喜的是这个工具把善后做得极其干净下载完成后自动合并音视频自动清理临时文件最后给出一份下载摘要——成功几个、失败几个、每个文件存到哪个目录清清楚楚。下载失败也不用慌失败的 URL 会被自动写进项目根目录的failed_urls.txt格式可以直接复制回config.py重试不用对着屏幕抄地址。藏在源码里的三个细节值得单独夸用下来发现作者在细节上确实下了功夫挑三个我最服的一是断点续传。看 strategy/bilibili_executor.py 里的下载逻辑每次请求都会带上Range头先检查本地已有文件大小从断点继续下载而不是从头再来。我下载一个 1.4G 的 4K 视频中途断网重跑之后直接接着断点走这种动辄几个 G 的文件这个设计太救命了。更贴心的是它自带 5 次重试网络抖动时自动等待后重连。二是清晰度自动选最优。在 models/video.py 里能看到完整的画质映射表从 8K、杜比视界 4K、超清 4K 到 1080P60、1080P 都有。工具会自动挑选能拿到的最清晰档位并按 dash 格式把视频流和音频流分开下载再合并——这也是为什么它比那些整段拉流的下载器快得多。三是分P文件的命名避坑。视频标题里可能带:/\|?*这类 Windows 不认的字符工具在设置标题时会统一清洗掉分P视频则在文件名里加_P2、_P3这样的标识防止十几集的视频互相覆盖。我一次下载了六集分P课程文件名规规矩矩零冲突。想二次开发这个目录结构一看就懂如果你以后想改功能或者加新的视频类型这个项目的结构也相当清爽models/视频、分类等数据模型画质映射表在这里strategy/下载策略普通视频和番剧各走各的实现config.py所有配置集中在这一个文件main.py入口负责编排下载、合并、摘要全流程最让我欣赏的是它用了策略模式BilibiliStrategy是抽象基类DefaultStrategy管普通视频BangumiStrategy管番剧电影新增一种视频类型只要再写一个策略类挂上去完全不用动主流程。想加新场景是加代码而不是改代码这就是好设计的味道。写在最后回到开头那个被下架的夜晚。现在我硬盘里躺着那部番的完整 4K 版本还有一整套付费课程通勤路上随便看再也不怕哪天链接灰掉。bilibili-downloader 把B站视频下载这件事的门槛降到了复制粘贴级别——装依赖、粘 Cookie、贴链接、跑起来四步走完你的内容就真正归你所有了。如果你也受够了缓冲、下架和客户端那套奇怪的存储路径花一个晚上跑一遍这个流程。自己动手存下来的每一份内容都是你的个人资产攒着攒着就成了一座图书馆。【免费下载链接】bilibili-downloaderB站视频下载支持下载大会员清晰度4K持续更新中项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表