实现MP3自由
缘起
这个事情还得从大半年前说起。今年1月,有人发布消息,称B站员工倪某因为与某用户产生言语冲突,使用技术手段封禁该用户的访问权限。事情的经过非常清楚,年轻人意气用事罢了,但B站暴露出来的管理问题,比如开发人员有权随意在生产环境操作,还是令人震惊的。当然事后B站迅速切割,称已经开除这名员工,自然也不必多说。详情请戳这里
需要注意的一点,网络上还暴了倪某的博客,以及他的github, 详细信息一览无余。出于好奇,访问了他的github,里面就有这个从B站下载视频的项目。老实说,作为B站的员工,一天“赚好几千块钱”他却暴露这个公司网站的视频下载方式,这种行为真的难评。
B站项目
项目下载下来后,发现是Node.js的,启动后,输入B站视频bvid,即可下载和播放该视频MP3,MP4甚至弹幕。有趣的是,Node.js里面还有个Python调用:
const { spawn } = require('child_process');
module.exports = function parseDash(obj,bvid) {
return new Promise((res,rej) => {
let videoUrl = obj.video[0].base_url;
let audioUrl = obj.audio[0].base_url;
let py = spawn("python3", ['./spider.py', videoUrl, audioUrl, bvid])
py.stdout.on("data", (path) => {
res(path);
console.log("视频保存成功!!!")
})
})
}
填坑
开开心心的下载了十几个歌曲,放到车载播放器上,结果放不出来,发现是采样频率不支持的缘故,最后又用ffmpeg重写采样频率为44.1K,重新又折腾一遍,这才能播放。
def rewriteMP3(bvid):
# 重写MP3文件, 使用车载Player播放时需要
cmd = f'ffmpeg -i "public/{bvid}.mp3" -ar 44100 -acodec libmp3lame -b:a 192k -ac 2 "public/{bvid}-44K.mp3" '
subprocess.call(cmd, shell=True)
最后
倪某的个人博客和github都已经删了,现在是无法访问状态,大概预示着他职业生命的结束。所以现在这个社会,人还是需要爱惜自己羽毛的,而我居然以这样的方式掺合进了一个项目,也是无语。
感兴趣的猛戳这里,小伙咂,你的代码还会流传下去的……