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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM