python批量合成bilibili的m4s緩存文件為MP4格式 ver2.5
相對之前版本更新內(nèi)容:
※ 根據(jù)UP主分類存放導(dǎo)出的視頻。
※ 新增一種標(biāo)題格式
注意:需要安裝ffmpeg才可使用
ffmpeg下載地址: https://ffmpeg.zeranoe.com/builds/
ffmpeg安裝方法:
解壓好下載的壓縮包后,再將bin目錄加入Path環(huán)境變量中 按Win+R 運行 輸入cmd 在彈出的框框中輸入 ffmpeg ,如果沒有出現(xiàn)"既不是內(nèi)部或外部命令"之類的話就是安裝成功了
參考鏈接: http://chabaoo.cn/article/153806.htm
運行截圖
工具源碼
import os import json import random import time import requests # 清除所有空格 def clearSpace(str): return str.replace(" ", "").replace(" ", ""); # 獲取指定Uid的Up主名 def getUpNameByUid(uid): try: url = 'https://space.bilibili.com/' + str(uid) html = requests.get(url) html.encoding = 'UTF-8' html = html.text index1 = html.find("<title>") + len("<title>") index2 = html.find("的個人空間", index1) result = html[index1:index2] if (result != ""): return result else: return uid except Exception: return uid # 獲取時間戳 def getTimeStamp(): t = time.localtime(time.time()) return str(t.tm_year) + '_' + str(t.tm_mon) + '_' + str(t.tm_mday) + '_' + str(t.tm_hour) + \ str(t.tm_min) + str(t.tm_sec) + str(random.randint(10, 99)) # 更正文件名 def correctFileName(name): n_list = list(name) for i in range(0, len(n_list)): index = 0 for i in n_list: if ( i == '\\' or i == '/' or i == ':' or i == '*' or i == '?' or i == '\"' or i == '<' or i == '>' or i == '|'): n_list.pop(index) index = index + 1 return ''.join(n_list) # 讀取json文件 def getVideoName(path): f = open(path, encoding='utf-8') setting = json.load(f) try: result = setting['page_data']['download_subtitle'] # 注意多重結(jié)構(gòu)的讀取語法 except KeyError: try: result = setting['title'] + ' 第' + setting['ep']['index'] + '話 ' + setting['ep']['index_title'] except KeyError: try: result = setting['title'] except KeyError: result = getTimeStamp() return result def getVideoOwner(path): try: f = open(path, encoding='utf-8') setting = json.load(f) return clearSpace(getUpNameByUid(setting['owner_id'])) except Exception: return "" # 獲取文件列表 def getFileList(file_dir): # 定義四個列表 title = [] owner = [] videoPath = [] audioPath = [] # 遍歷文件目錄 for root, dirs, files in os.walk(file_dir): if ('entry.json' in files): title.append(getVideoName(str(root) + '\\entry.json')) owner.append(getVideoOwner(str(root) + '\\entry.json')) if ('video.m4s' in files and 'audio.m4s' in files): videoPath.append(str(root) + '\\video.m4s') audioPath.append(str(root) + '\\audio.m4s') if (len(title) < len(videoPath)): title.append(getTimeStamp()) if ('0.blv' in files): title.pop() return [title, owner, videoPath, audioPath] # 輸出mp4文件 def getMP4(title, owner, video_path, audio_path): # 生成輸出目錄 if not os.path.exists("./output"): os.mkdir("./output") # 循環(huán)生成MP4文件 for i in title: reName = correctFileName(i) # 開始生成MP4文件 if not os.path.exists("./output/" + reName + ".mp4"): # 獲取臨時文件時間戳 t_stamp = getTimeStamp() # 開始合成 os.system( "ffmpeg -i " + video_path[title.index(i)] + " -i " + audio_path[ title.index(i)] + " -codec copy ./output/" + t_stamp + ".mp4") # 設(shè)置所屬Up主 curOwner = owner[title.index(i)] if curOwner != "": if not os.path.exists("./output/" + curOwner): os.mkdir("./output/" + curOwner) os.rename("./output/" + t_stamp + ".mp4", "./output/" + curOwner + "/" + reName + ".mp4") else: # 將臨時文件時間戳改為標(biāo)題名 os.rename("./output/" + t_stamp + ".mp4", "./output/" + reName + ".mp4") print("正在合成...") print("標(biāo)題:" + reName) print("UP主:" + curOwner) print("視頻源:" + video_path[title.index(i)]) print("音頻源:" + audio_path[title.index(i)]) time.sleep(1) print("歡迎使用批量合成M4S工具 ver2.5") fileDir = str(input("請輸入含M4S文件的目錄:")) f = getFileList(fileDir) getMP4(f[0], f[1], f[2], f[3]) print("合成完畢")
已編譯好的可執(zhí)行文件(EXE):
鏈接: https://pan.baidu.com/s/1bLOg6GGJ5Wp7gcW73sXzvg
提取碼: yqvm
到此這篇關(guān)于python批量合成bilibili的m4s緩存文件為MP4格式 ver2.5的文章就介紹到這了,更多相關(guān)python批量合成bilibili緩存文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python 批量下載bilibili視頻的gui程序
- 利用python 下載bilibili視頻
- python中使用you-get庫批量在線下載bilibili視頻的教程
- Python爬蟲 bilibili視頻彈幕提取過程詳解
- Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點選驗證碼功能
- python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析
- Python腳本如何在bilibili中查找彈幕發(fā)送者
- Python破解BiliBili滑塊驗證碼的思路詳解(完美避開人機識別)
- Python實現(xiàn)bilibili時間長度查詢的示例代碼
- Python爬蟲爬取Bilibili彈幕過程解析
- python破解bilibili滑動驗證碼登錄功能
- 寫一個Python腳本自動爬取Bilibili小視頻
相關(guān)文章
Python Mysql數(shù)據(jù)庫操作 Perl操作Mysql數(shù)據(jù)庫
python對mysql數(shù)據(jù)庫的一些操作實現(xiàn)代碼2009-01-01利用Python網(wǎng)絡(luò)爬蟲爬取各大音樂評論的代碼
這篇文章主要介紹了如何用Python網(wǎng)絡(luò)爬蟲爬取網(wǎng)易云音樂評論,文章用代碼詳細(xì)的示范了如何爬取網(wǎng)易云音樂評論,對正在學(xué)習(xí)的小伙伴有參考價值,需要的朋友可以參考下2021-04-04django 微信網(wǎng)頁授權(quán)登陸的實現(xiàn)
這篇文章主要介紹了django 微信網(wǎng)頁授權(quán)登陸的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python操作Redis之設(shè)置key的過期時間實例代碼
這篇文章主要介紹了Python操作Redis之設(shè)置key的過期時間實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01