B站英文字幕获取

前言

最近在B站看一些纯英文的课程,视频课程有的是纯中文字幕的,有的是纯英文字幕的。由于英文的重要性,一份字幕的文档在我们观看后,留着日后粗略再读是很有益处的。但是为了得到这个英文字幕走了许多弯路。最开始竟然用在线AI视频转文本的方式,用了九锤听写(效果相对好),i笛云听(效果相对差)。最后才发现,B站的字幕很多时候都是一个json文件。那我们可以获取这个文件,用python将它的conent(字幕)提取出来,做一个文本文件。

转换结果

image

1 cc字幕下载

01.cc字幕是视频下方黑底白字的那一栏,如果没有则不可以下载.

02.打开视频,并开启字幕,打开控制台的 Network,在Filter里键入json,点击刷新视频即可。

双击json文件,ctrl+A全部复制,并粘贴到一个.txt文件中,后改后缀为.json

2 python批量json字幕文件转换

我们将需要转换的json文件都放到一个新建的文件夹下,这个文件夹里只有json文件,并且不存在子文件夹。路径名称需要全部英文。

import json
import os

def convert_json_to_txt(json_files_path):    
    json_files = os.listdir(json_files_path) #返回该路径下的json文件列表
    txt_files_path = os.path.join(json_files_path, 'txt') #拼接出在json文件夹中的子txt文件夹 
    isExists = os.path.exists(txt_files_path) #判断这个文件存不存在 不存在建立相应的文件夹 txt
    if not isExists:
        os.mkdir(txt_files_path)
    
    for json_file in json_files:        
        file_name = json_file.replace(json_file[-5:], '.txt') #改变转换后字幕的后缀 .json是5个字符
        file = ''  # 这个变量用来保存数据
        i = 1
        # 将此处文件位置进行修改,加上utf-8是为了避免处理中文时报错
        with open(os.path.join(json_files_path, json_file), encoding='utf-8') as f:
            datas = json.load(f)# 加载文件数据 json.load()将josn文件对象转换为python字典对象
            f.close()
                    
        for data in datas['body']:
            content = data['content'].replace('\n',' ')  # 获取字幕内容 并去除掉里面莫名其妙的换行
            if content[-1] == '.' :  # 每两句话就更换段落
                i=i+1
                file += content + ' '   # 加入字幕文字
                if i % 2 == 0 :
                    file +=  '\n\n'# 加入段落
            else:
                file += content + ' '   # 加入字幕文字
        with open(os.path.join(txt_files_path, file_name), 'w', encoding='utf-8') as f:
            f.write(file)  # 将数据写入文件
                        
if __name__ == '__main__':   
    json_folder_path = 'F:\\Code\\json\\Json' #json字幕文件的路径(注意路径的格式)
    convert_json_to_txt(json_folder_path)

注意要点

  • 将if __name__ == '__main__':里的文件路径改成自己的。
  • 这个程序不要多次使用,用过一次之后就清除对应的json文件,和txt文件夹,否则会报错。或者再次用的时候新建文件夹来存储新的json字幕,再改程序中的路径来用。
  • 电脑里要有python才可以运行脚本

os.listdir('C:\\')
['$360Section', '$Recycle.Bin', '$WinREAgent', 'AMD', 'Documents and Settings', 'DumpStack.log.tmp', 'hiberfil.sys', 'hp', 'inetpub', 'Intel', 'KRECYCLE', 'pagefile.sys', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'QMDownload', 'Recovery', 'SDKTemp', 'swapfile.sys', 'SWSetup', 'System Volume Information', 'SYSTEM.SAV', 'Users', 'Windows', 'Windows.old']
os.path.join('C:\\','txt')
'C:\\txt'
os.path.join('C:\\a','txt')
'C:\\a\\txt'
os.path.exists('C:\\a\\txt')
False

修改1:2021.7.18
修改了排版格式问题,由原来的五段字幕换行,改为两句话更换段落。排版更加好看了。

文章会随时改动,要到博客园里看偶。一些网站会爬取本文章,但是可能会有出入。
https://www.cnblogs.com/asmurmur/

参考
博客园 WWBlog 批量将B站视频json格式的字幕转换为srt格式的字幕
简书 攻城老湿 b站视频下载和字幕下载的方法
csdn pengjunlee 使用Python解析JSON

posted @ 2021-06-27 18:09  Dba_sys  阅读(1473)  评论(2编辑  收藏  举报