將B站視頻json格式的字幕轉換爲srt格式的字幕

在B站下載的視頻對應的字幕是json格式,在potplayer中不能導入json格式的字幕,在網上查找了一番,python

發現已經有人用python寫了json轉換爲srt的代碼,見https://blog.csdn.net/mondaiji/article/details/104294430json

但那只是針對一個json文件的轉換,我在此基礎上改成批量把json轉換爲srt文件, 每次把須要轉換的json文件放置在一個文件夾下,spa

在下面的代碼中輸入文件夾的路徑,就能夠批量把json文件轉換爲srt文件,存放在當前文件夾下的名爲srt的子文件夾下。.net

 

import json import math import os def convert_json_to_srt(json_files_path): json_files = os.listdir(json_files_path) srt_files_path = os.path.join(json_files_path, 'srt') #更改後綴後字幕文件的路徑 isExists = os.path.exists(srt_files_path) if not isExists: os.mkdir(srt_files_path) for json_file in json_files: file_name = json_file.replace(json_file[-5:], '.srt') #改變轉換後字幕的後綴
        file = ''  # 這個變量用來保存數據
        i = 1
        # 將此處文件位置進行修改,加上utf-8是爲了不處理中文時報錯
        with open(os.path.join(json_files_path, json_file), 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(os.path.join(srt_files_path, file_name), 'w', encoding='utf-8') as f: f.write(file) # 將數據寫入文件
                        
if __name__ == '__main__': json_folder_path = 'C:\\Users\\XXXXXXX' #json字幕文件的路徑
    convert_json_to_srt(json_folder_path)
相關文章
相關標籤/搜索