­

B站英文教學影片的字幕獲取 學習必看!

前言

最近在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

Tags: