20240212请问如何将B站下载的软字幕转换成为SRT格式?
20240212请问如何将B站下载的软字幕转换成为SRT格式?
2024/2/12 12:47
百度搜索:字幕 json 转 srt
json srt

https://blog.csdn.net/a_wh_white/article/details/120687363?share_token=2640663e-f468-4737-9b55-73c808f5dcf0
https://blog.csdn.net/a_wh_white/article/details/120687363
【python】实现将json字幕转srt,并将繁体中文翻译为简体中文
走着走着就走神了 已于 2022-04-13 12:55:45 修改
代码(json_to_srt)
import json
import math
import os
file = '' # 这个变量用来保存数据
i = 1
for doc in os.listdir(): # 遍历当前文件夹的所有文件
if (doc[-4:] == 'json'): # 若是json文件则进行处理
name = doc[:-5] # 提取文件名
# 将此处文件位置进行修改,加上utf-8是为了避免处理中文时报错
with open(doc, encoding='utf-8') as f:
datas = json.load(f) # 加载文件数据
f.close()
for data in datas['body']:
start = data['from'] # 获取开始时间
stop = data['to'] # 获取结束时间
content = data['content'] # 获取字幕内容
file += '{}\n'.format(i) # 加入序号
hour = math.floor(start) // 3600
minute = (math.floor(start) - hour * 3600) // 60
sec = math.floor(start) - hour * 3600 - minute * 60
minisec = int(math.modf(start)[0] * 100) # 处理开始时间
file += str(hour).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(sec).zfill(2) + ',' + str(
minisec).zfill(2) # 将数字填充0并按照格式写入
file += ' --> '
hour = math.floor(stop) // 3600
minute = (math.floor(stop) - hour * 3600) // 60
sec = math.floor(stop) - hour * 3600 - minute * 60
minisec = abs(int(math.modf(stop)[0] * 100 - 1)) # 此处减1是为了防止两个字幕同时出现
file += str(hour).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(sec).zfill(2) + ',' + str(
minisec).zfill(2)
file += '\n' + content + '\n\n' # 加入字幕文字
i += 1
with open('./{}.srt'.format(name), 'w', encoding='utf-8') as f:
f.write(file) # 将数据写入文件
f.close()




问题一:
百度:but no encoding declared; see https://python.org/dev/peps/pep-0263/ for deta
SyntaxError: Non-UTF-8 code starting with '\xb1' in file L:\json2srt\json2sr
https://blog.csdn.net/qq_39624528/article/details/86617197
Python常见错误
https://blog.csdn.net/weixin_43865196/article/details/104048879
python错误:but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
操作系统:windows
python版本:3.6版本
解决: 在文章的第一行 加入 :
# coding=gbk
操作系统:windows
python版本:2.7版本
错误原因 : 是 xxx.py文件里有中文字符
改正方法 :文件的第一行 加上
# -*-coding:utf8 -*-
问题二:
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>python json2srt.py
Traceback (most recent call last):
File "N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json\json2srt.py", line 18, in <module>
start = data['from'] # 获取开始时间
TypeError: string indices must be integers
百度:TypeError: string indices must be integers
https://blog.csdn.net/qq_36746815/article/details/127098919
python错误:TypeError: string indices must be integers
https://blog.csdn.net/hihell/article/details/123370933
Python 错误:TypeError String Indices Must be Integers 【已解决】
https://www.cnblogs.com/jiaoliuxuexi/p/12603090.html
TypeError: string indices must be integers
问题三:
rainlanuit 2022.07.18
如果用来同时处理多个json文件的话,把第5、6行的两个全局变量放到外层for循环里。不然除了第一个json文件正常,其余全是叠加的。
最终结果:
json2srt.py
# coding=gbk
import json
import math
import os
for doc in os.listdir(): # 遍历当前文件夹的所有文件
file = '' # 这个变量用来保存数据
i = 1
if (doc[-4:] == 'json'): # 若是json文件则进行处理
name = doc[:-5] # 提取文件名
# 将此处文件位置进行修改,加上utf-8是为了避免处理中文时报错
with open(doc, encoding='utf-8') as f:
datas = json.load(f) # 加载文件数据
f.close()
#for data in datas:
for data in datas['body']:
start = data['from'] # 获取开始时间
stop = data['to'] # 获取结束时间
content = data['content'] # 获取字幕内容
file += '{}\n'.format(i) # 加入序号
hour = math.floor(start) // 3600
minute = (math.floor(start) - hour * 3600) // 60
sec = math.floor(start) - hour * 3600 - minute * 60
minisec = int(math.modf(start)[0] * 100) # 处理开始时间
file += str(hour).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(sec).zfill(2) + ',' + str(minisec).zfill(2) # 将数字填充0并按照格式写入
file += ' --> '
hour = math.floor(stop) // 3600
minute = (math.floor(stop) - hour * 3600) // 60
sec = math.floor(stop) - hour * 3600 - minute * 60
minisec = abs(int(math.modf(stop)[0] * 100 - 1)) # 此处减1是为了防止两个字幕同时出现
file += str(hour).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(sec).zfill(2) + ',' + str(minisec).zfill(2)
file += '\n' + content + '\n\n' # 加入字幕文字
i += 1
with open('./{}.srt'.format(name), 'w', encoding='utf-8') as f:
f.write(file) # 将数据写入文件
f.close()



参考资料:
https://blog.csdn.net/mondaiji/article/details/104294430?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163385446816780357213901%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163385446816780357213901&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-104294430.first_rank_v2_pc_rank_v29&utm_term=python%E4%B8%ADjson%E8%BD%ACsrt&spm=1018.2226.3001.4187
https://blog.csdn.net/mondaiji/article/details/104294430
Python实现json字幕转换为srt字幕
百度:b站自动生成字幕怎么下载
https://www.bilibili.com/read/cv19103155/?jump_opus=1
2022年10月15日 08:45-[2021]B站CC字幕下载的两种姿势(超超超超超简单)
2022年10月15日 08:45 6537浏览 · 41喜欢 · 15评论
视频地址: [2021]B站CC字幕下载的两种姿势(超超超超超简单)
重庆梁平扩展现实大学
粉丝:182文章:118
Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。
C:\Users\Administrator>cd N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json
C:\Users\Administrator>n:
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>dir *.py
驱动器 N 中的卷是 IMG12
卷的序列号是 C06C-70D2
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json 的目录
2024/02/12 13:07 1,736 json2srt.py
1 个文件 1,736 字节
0 个目录 479,031,091,200 可用字节
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>python json2srt.py
SyntaxError: Non-UTF-8 code starting with '\xd5' in file N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json\json2srt.py on line 5, but no encoding declared; see https://python.org/dev/peps/pep-0263/ for details
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>python json2srt.py
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>python json2srt.py
SyntaxError: Non-UTF-8 code starting with '\xb1' in file N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json\json2srt.py on line 5, but no encoding declared; see https://python.org/dev/peps/pep-0263/ for details
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>python json2srt.py
Traceback (most recent call last):
File "N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json\json2srt.py", line 18, in <module>
start = data['from'] # 获取开始时间
TypeError: string indices must be integers
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>python json2srt.py
N:\DOCX\20240212请问如何将B站下载的软字幕转换成为SRT格式?\json>
相关文章:
20240212请问如何将B站下载的软字幕转换成为SRT格式?
20240212请问如何将B站下载的软字幕转换成为SRT格式? 2024/2/12 12:47 百度搜索:字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…...
《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)
文章目录 6.1 使用 CSS 变量进行设计:魔法配方的调配6.1.1 基础知识6.1.2 重点案例:创建可定制的主题6.1.3 拓展案例 1:响应式字体大小6.1.4 拓展案例 2:使用 CSS 变量创建动态阴影效果 6.2 calc(), min(), max() 等函数的应用&am…...
2024-02-11 多进程、多线程 work
1. 创建一个多进程服务器和多线程服务器 a. 多进程 #include<myhead.h> #define PORT 9999 //端口号 #define IP "192.168.125.113" //IP地址//定义信号处理函数,用于回收僵尸进程 void handler(int signo) {if(signo S…...
详解结构体内存对齐及结构体如何实现位段~
目录 编辑 一:结构体内存对齐 1.1对齐规则 1.2.为什么存在内存对齐 1.3修改默认对齐数 二.结构体实现位段 2.1什么是位段 2.2位段的内存分配 2.3位段的跨平台问题 2.4位段的应用 2.5位段使用的注意事项 三.完结散花 悟已往之不谏,知来者犹可…...
Linux网络编程——tcp套接字
文章目录 主要代码关于构造listen监听accepttelnet测试读取信息掉线重连翻译服务器演示 本章Gitee仓库:tcp套接字 主要代码 客户端: #pragma once#include"Log.hpp"#include<iostream> #include<cstring>#include<sys/wait.h…...
【计算机网络】协议层次及其服务模型
协议栈(protocol stack) 物理层链路层网络层运输层应用层我们自顶向下,所以从应用层开始探究应用层 协议 HTTP 提供了WEB文档的请求和传送SMTP 提供电子邮件报文的传输FTP 提供两个端系统之间的文件传输报文(message)是…...
prometheus之redis_exporter部署
下载解压压缩包 mkdir /opt/redis_exporter/ cd /opt/redis_exporter/ wget http://soft.download/soft/linux/prometheus/redis_exporter/redis_exporter-v1.50.0.linux-amd64.tar.gz tar -zxvf redis_exporter-v1.50.0.linux-amd64.tar.gz ln -s /opt/redis_exporter/redis_…...
js 解构赋值
搬运:JavaScript系列之解构赋值_js解构赋值-CSDN博客...
Vivado用ILA抓波形保存为CSV文件
将ILA观察到的波形数据捕获为CSV文件,抓10次,把文件合并,把源文件删除 运行方法:Vivado的 Tcl console 窗口输入命令 set tcl_dir F:/KLD_FPGA/Code/sim set tcl_filename TCL_ILA_TRIG_V1.2.tcl source $tcl_dir/$tcl_filenam…...
微软AD域替代方案,助力企业摆脱hw期间被攻击的窘境
在红蓝攻防演练(hw行动)中,AD域若被攻击成功,是其中一个扣分最多的一项内容。每年,宁盾都会接到大量AD在hw期间被攻击,甚至是被打穿的企业客户。过去,企业还会借助2FA双因子认证加强OA、Exchang…...
Git教程I
Git教程I 本地Git创建git仓库将修改存到暂存区将暂存区提交到当前分支查看提交历史回退版本恢复到更晚的版本创建新分支切换分支简单的分支合并冲突分支合并不使用fast forward: --no-ff 远程Git连接远程仓库将本地分支上传到远程仓库从远程仓库拉取 本地Git 学习如何使用本地…...
containerd中文翻译系列(十)镜像验证
下面将介绍默认的 "bindir"ImageVerifier插件实现。 要启用图像验证,请在 containerd 配置中添加类似下面的一段: [plugins][plugins."io.containerd.image-verifier.v1.bindir"]bin_dir "/opt/containerd/image-verifier/b…...
假期day9(2024/2/14)
获取数据库查询的值并调用值使用函数:sqlite3_get_table 在回调函数中获取数据库查询值,无法在其他函数调用:使用函数sqlite3_exec(db, sql, select_callback, &flag, &errmsg) 创建表 create table if not exists 表名…...
Leetcode 674 最长连续递增序列
题意理解: 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l < i < r,都有 nums[i…...
力扣题目训练(8)
2024年2月1日力扣题目训练 2024年2月1日力扣题目训练404. 左叶子之和405. 数字转换为十六进制数409. 最长回文串116. 填充每个节点的下一个右侧节点指针120. 三角形最小路径和60. 排列序列 2024年2月1日力扣题目训练 2024年2月1日第八天编程训练,今天主要是进行一些…...
理解JAVA EE设计模式
理解JAVA EE设计模式 在Web应用程序的设计和开发阶段,开发人员在开发类似的项目时可能会遇到相似的问题。每名开发人员可能会遇到的问题找出不同或相似的解决方案。但是,这导致一些时间和精力浪费在为相似的问题寻找解决方案上。因此,要啊节省时间和精力,需要记录常见问题…...
GEE:梯度提升树(Gradient Boosting Tree)回归教程(样本点、特征添加、训练、精度、参数优化)
作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…...
k8s-资源限制与监控 15
资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额):即运行Pod期间,可能内存使用量会增加࿰…...
【Ubuntu】在.bashrc文件中误设置环境变量补救方法
这里是vim也不在PATH中了,因为 解决方法就是在输入vim之后提示的vim路径下用vim打开该文件,然后改回来...
Imgui(1) | 基于imgui-SFML改进自由落体小球
Imgui(1) | 基于imgui-SFML改进自由落体小球 0. 简介 使用 SFML 做2D图形渲染的同时,还想添加一个按钮之类的 GUI Widget, 需要用 Dear Imgui。由于 Imgui 对于2D图形渲染并没有提供类似 SFML 的 API, 结合它们两个使用是一个比较好的方法, 找到了 imgui-SFML 这个…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...
