前言

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

1 cc字幕下载

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

02.我们先点开一个有cc字幕的视频,首先关闭cc字幕,并打开调试台(右键点击检查 or F12)的 Network



03.因为一个视频有很多的东西需要传输,这里Network存在很多条信息,我们点击clear让他少一点,之后点击开启字幕,让他传输字幕json文件来,我们发现下面突然出现一个json文件



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

另一种方法(简单)

打开视频,并开启字幕,打开控制台的 Network,在Filter里键入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',' ') # 获取字幕内容 并去除掉里面莫名其妙的换行
file += content + ' ' # 加入字幕文字
# 5句话换一行
if i % 5 == 0 :
file += '\n'
i += 1 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

参考

简书 攻城老湿

csdn pengjunlee 使用Python解析JSON

B站英文教学视频的字幕获取 学习必看!的更多相关文章

  1. android studio教学视频资源(点开即看)

    android studio教学视频资源(点开即看) 自从Google推出android studio之后.包含github在内的非常多第三方代码库项目很多其它的採用的android studio编译 ...

  2. [C#]为微软ASP.NET官方教学视频增加字幕

    前言 Microsoft Virtual Academy提供了学习ASP.NET的大量视频材料.(注1) 由于视频服务器位于海外,国内浏览速度并不理想,幸好官方提供了视频的下载地址以及英文字幕文件. ...

  3. 小白必看Python视频基础教程

    Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...

  4. java秀发入门到优雅秃头路线导航【教学视频+博客+书籍整理】

    目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...

  5. java入门到秃路线导航,元芳你怎么看?【教学视频+博客+书籍整理】

    目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...

  6. WTM系列教学视频全免费

    WTM框架问世以来,受到越来越多开发者的喜爱,为了回报大家的厚爱,原本在CSDN上的教学视频已经全部免费,900多分钟的视频,而且还会继续更新. 为了方便大家观看,在B站上也同步更新,地址如下: CS ...

  7. 马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

    马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文 ...

  8. Unity3D大风暴之入门篇(海量教学视频版)

    智画互动开发团队 编   ISBN 978-7-121-22242-9 2014年2月出版 定价:79.00元 328页 16开 编辑推荐 长达800分钟的高清教学视频,手把手教会初学者 数个开发案例 ...

  9. 微软虚拟学院MVA 字幕获取方法

    微软虚拟学院(MVA)上有一些不错的视频教程,但是,蛋疼的一点那就是视频要不就慢,要不就卡,总之当你的思维跟着视频深入的时候,duang~,卡一下,说不定就要重头开始,所幸的是提供了视频下载,下载速度 ...

随机推荐

  1. 有关80386cpu在保护模式下的虚拟地址,线性地址和实际物理地址的关系

    80386cpu是8086cpu的升级版,其具有32位的寄存器.(32根地址线和32根数据线) 8086cpu其是16位的寄存器但是其地址线有20根,其寻址范围为2的20次方,但是有一个16位的寄存器 ...

  2. Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布

    Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...

  3. 用fseek和ftell获取文件的大小

    #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc,char ...

  4. 面试 CSS篇清除浮动及display:inline-block

    一. 在div使用display:inline-block时,HTML代码中的回车换行键会被转化为一个空白符 如图 <style type="text/css"> *{ ...

  5. Logstash 的命令行入门 ( 附上相关实验步骤 )

    Logstash 的命令行入门 ( 附上相关实验步骤 ) 在之前的博客中,我们已经在 Macbook Big Sur 环境下安装了 ELK 的相关软件,并且已经可以成功运行对应的模块: 如果没有安装的 ...

  6. 7.CentOS文件和目录 以及系统与设置命令

    CentOS文件和目录 etc------系统中的配置文件 bin------系统预设执行文件的放置目录 sbin------系统预设执行文件的放置目录 usr------系统预设执行文件的放置目录 ...

  7. mybatis-plus批量插入saveBatch太慢?我愿意称rewriteBatchedStatements为神

    最近在做项目优化,代码优化之后,测试接口,好家伙.一个定时任务接口执行要10秒左右. 一点点追踪,给每个方法打上执行时间,一点点缩小范围.好家伙,终于让我锁定了目标. 这是mybatis-plus的批 ...

  8. jmeter自动停止监听--AutoStop Listener

    如下图:

  9. docker 日志位置

    日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日志 一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (Ce ...

  10. 用urllib库几行代码实现最简单爬虫

    """ 使用urllib.request()请求一个网页内容,并且把内容打印出来. """ from urllib import reque ...