做了个一站式 Bilibili 音乐下载器,以下是我的思考

195 天前
 amber0317

👉立即试用: https://bili.amono.me/BV1Ag4y1b7pa (请使用支持 WASM 的现代浏览器)

我偶尔会在 B 站上听歌,因为很多唱见的翻唱都是只在 B 站投稿的,音乐软件不一定会及时更新。

如果每次打开网页听,又麻烦又费流量,搞不好还要给叔叔当 PCDN ;想方设法把视频存下来,在本地手动转音频,补上 ID3 标签和封面扔进收藏,这一整套忙下来,听歌的兴致早就没了。

于是我写了这个小工具帮忙。它提供一站式音乐下载服务:下载+转换+嵌入元数据/封面,整个流程浓缩在短短数十秒的浏览器会话中,无需任何手动干预,到手的文件可以直接丢进音乐库;而且借助 ffmpeg 和 WASM 的力量,所有的魔法都发生在浏览器里,下载和转换速度完全取决于你的网速与 CPU ,既做到了免安装,也省去了服务器维护和运行成本。


这算是我的独立开发生涯首作。简单分享一下设计和实现过程中的一些思路,希望能给你一些启发:

3903 次点击
所在节点    分享创造
57 条回复
zitionguo
194 天前
@choah +1
KevinDo2
194 天前
地址作为输入框 本质上是个很麻烦的输入方式。
如果我想下载,我认为的逻辑应该是,复制视频地址(不是 bv 号,而是整个)---打开你的网站---输入地址---自动获取。
amber0317
194 天前
@choah @zitionguo CF Pages 的 Worker 一般会解析 B 站视频链接到香港 CDN 节点,这个我没有办法控制,可能会导致连通性问题
amber0317
194 天前
@KevinDo2 谢谢,复制网址是个很优秀的思路!也许可以做成打开网页 -> 访问剪贴板自动获取链接?
XIU2
194 天前
@amber0317 我看像 the1812/Bilibili-Evolved 油猴脚本里面的下载功能,就可以选择 dash(仅音频),还有一些开源的 B 站视频下载软件里,大都提供了仅下载音频的功能,你可以去参考一下它们的实现方式。

另外,如楼上所说,我这边也发现下载速度较慢,而且时不时会中断似的(我看下载速度归零了一段时间),而如果我用油猴脚本、B 站视频下载器去下载视频/音频的话,速度都挺快的(都是国内 CDN )。
incubus
194 天前
https://github.com/jaysonlong/webvideo-downloader

这种交互方式很好,通过浏览器插件拦截下载请求,在发送请求到本地服务实现后续操作
subframe75361
194 天前
ffmpeg wasm 大了点,可以精简编译一下
inhzus
194 天前
好看,简洁!(其他意见同楼上诸位)
mailx3
194 天前
太牛了,支持一下
RoyRao
194 天前
支持一下 OP ,不知道有没有开源打算,可以学习一波

同时赞成楼上的提议,可以搞成 NPM 包用于 JS 原生调用,那就很爽了
maemolee
194 天前
@amber0317 #2 如果是需要用户这么使用,十分建议写一个 Bookmarklet 放在官网上,实现用户的傻瓜式使用。
Masoud2023
194 天前
b 站的 cdn 没 cors 策略吗,怎么实现在前端侧直接拉到视频源文件的?
Masoud2023
194 天前
。。好像还真没有
zhumengyang
194 天前
https://acghelper.com/ 我用的这个,可以下载视频、音频
amber0317
194 天前
@RoyRao @mayne95 开源链接已经 append
7gugu
194 天前
做的很棒,做成一个书签,直接从页面上提取 BV 号再跳转到 OP 的站点会更棒👍
clouds
194 天前
music free 支持 B 站,理论上可以实现同等功能,支持安卓/windows 客户端。
zddhub
194 天前
有用!支持 mp4 吗?
voidmnwzp
194 天前
分段视频怎么办呢
AMZsowhat
194 天前
好好好 提个建议 有没有可能做成 chrome/油猴插件呢 懒人会更爱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/989277

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX