原创 菜鸟哥 菜鸟学Python 1月27日

公众号 “菜鸟学Python

438篇原创,设为 “星标”,一起学Python!


我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python

对于很多B站的忠实小伙伴们来说,在B站上看各个Up主们为大家分享各种内容是一件非常幸福的事情,可是大家也会遇到视频中没有提供弹幕的尴尬局面,比如大家在B站看小姐姐的时候,经常会遇到没有字幕的情况,这种听不清小姐姐说什么,又没有弹幕加以解释的情况,会很别扭~~


因此,小编今天就带领大家来为B站的小姐姐们配上好看的字幕,让大家在欣赏小姐姐的同时也能有字幕的陪伴。


00.整体的思路如下:

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_02



01.视频下载及音频处理首先,我们要选定我们想要添加字幕的视频,然后,将视频下载到本地,这里下载B站视频方式有很多,比如可以利用Chrome浏览器的插件《bilibili哔哩哔哩下载助手》来进行视频的下载。将视频下载完成后,我们就可以提取视频中的音频数据,这里可以利用moivepy这个库来进行处理,一行代码即可搞定。程序如下:

audio = AudioFileClip("video.flv").write_audiofile("audio.mp3")
上述的程序中,利用AudioFileClip来提取视频中的音频信息,然后保存到本地的音频文件中即可。以上我们便提取完成了音频。



02.音频转字幕文件有的小伙伴可能会疑惑,为什么要提取音频数据呢,这是因为我们要利用技术来将我们听不清的音频转成文字,我们虽然听的不清楚,但是利用技术可以帮助我们很好的“听音识字”。对于处理好的音频,我们可以利用下面的网站,进行音频到字幕文件的转换

网址:https://aismartvip.com/


我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_03

大家可以按照上述的操作,点击上传音频,然后按照自己的喜好设置任务的名称,最后点击开始上传,网页会自动进行语音的识别,并转换成字幕文件。这里为什么要转换为字幕文件呢,因为字幕文件中带有时间,我们可以根据时间信息,来设定弹幕的发送时间。

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_04

转换完成后,大家还可以进行字幕的完善,包括时间的调整,字幕文字的更改和时间段的增加或者删除。修改完成后,大家就可以直接下载字幕文件了,生成的字幕文件如下图所示。

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_05

生成的字幕文件中,分别包含了字幕的序号,还有每个字幕的时间段以及字幕的内容,接下来就是如何将字幕文件发送到B站视频上去了。



03.发送弹幕

对于弹幕的发送,这里我们利用的是bilibili_api库,注意,小编使用的是1.0.0版本的,由于bilibili_api库更新的非常快,而且不同版本之间兼容性不是特别好,所以要想运行下面的程序且不出错误的话,需要大家安装1.0.0版本的bilibili_api库。安装方式也很简单,只需要pip install bilibili-api==1.0.0即可完成安装。

01).首先,需要将弹幕文件处理为列表形式,而列表中的元素是“(时间,弹幕内容)”的元组形式。程序如下图所示:

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_06

上述的程序中,首先读入字幕文件,然后按照弹幕文件的行号,来进行处理,如果是时间,那么就处理成相应的时间格式,如果是弹幕内容,则直接放入到元组中。


02).处理好字幕文件后,接下来就可以发送弹幕了,对于弹幕,我们需要设置一个弹幕类对象,它的要求如下所示:

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_07

这里需要重点关注四个参数,分别是text,表示弹幕的内容,dm_time表示的是弹幕出现的时间,这两个内容我们已经在上面的弹幕文件处理中设置完成,然后是mode参数,指定的是弹幕在屏幕中的位置是哪里,而font_size指定的就是弹幕的大小。弹幕的发送程序如下所示:

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_08


上述程序中的sessdata和csrf是用来进行身份验证的信息,程序首先初始化一个VideoOperator类,用来向视频发送弹幕,而发送的弹幕信息则是通过构造Danmaku类来进行实现。需要注意的是,这里要间隔一定的时间才能进行弹幕的发送,否则会被检测为刷屏而不允许发弹幕。间隔时间的话,在20秒以上最为稳妥。


03).如何获取key,这里的sessdata和csrf该如何获取呢?

我摊牌了!我用Python帮B站的小姐姐配好看的字幕!_Python_09


大家点击想要添加字幕的视频页面,点击左上方的小锁,然后点击Cookie后,找到右边的SESSDATA和bili_jct,这两个cookie下的“内容”就是我们需要的sessdata和csrf信息。


说了这么多,最后一起来看一下效果展示:



怎么样,学Python很有意思吧,还等啥赶紧操练起来给喜欢的小姐姐up主发送一波排山倒海的字幕吧。


如果您觉得本篇对你有用,可以收藏或者转发给有兴趣学Python的同学,原创不易记得来个三连哦!再次感谢!我们下篇见!