|
@@ -0,0 +1,90 @@
|
|
|
|
+# 导入数据请求模块
|
|
|
|
+import requests
|
|
|
|
+# 导入正则表达式模块
|
|
|
|
+import re
|
|
|
|
+# 导入json模块
|
|
|
|
+import json
|
|
|
|
+# 导入合并模块
|
|
|
|
+from moviepy.editor import *
|
|
|
|
+
|
|
|
|
+# 设置
|
|
|
|
+url = 'https://www.bilibili.com/video/BV1LxSuYDEBR/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=f6247aa12dae1ff1bce74ef0af381757'
|
|
|
|
+headers = {
|
|
|
|
+ "Referer": url,
|
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
|
|
|
|
+ 'cookie': 'buvid3=D82F9D33-E75C-8D6E-6D2D-D128A352B3EC99573infoc; '
|
|
|
|
+ 'b_nut=1730271799; '
|
|
|
|
+ '_uuid=363DA659-CAA7-AEE3-31EF-105ADAD95EFA299807infoc; '
|
|
|
|
+ 'enable_web_push=DISABLE; '
|
|
|
|
+ 'buvid4=A8A4CC10-7B3C-8459-B07C-EB4E11E948D401840-024103007-fmI38SPP%2F5%2BxXWrCTYgty62zOzJos1uEW8lnI07A3XTkLJ6dLJvsmsAJBqLNPrF9; '
|
|
|
|
+ 'rpdid=0zbfvUnKtc|3XngooMd|T30|3w1T62JV; '
|
|
|
|
+ 'header_theme_version=CLOSE; '
|
|
|
|
+ 'DedeUserID=35990046; '
|
|
|
|
+ 'DedeUserID__ckMd5=bf34a8eab39f0c11; '
|
|
|
|
+ 'buvid_fp_plain=undefined; '
|
|
|
|
+ 'LIVE_BUVID=AUTO3317306871682983; '
|
|
|
|
+ 'CURRENT_QUALITY=80; '
|
|
|
|
+ 'fingerprint=afd86aa8ba10b52e21767b02b25b933b; '
|
|
|
|
+ 'buvid_fp=afd86aa8ba10b52e21767b02b25b933b; '
|
|
|
|
+ 'CURRENT_FNVAL=4048; '
|
|
|
|
+ 'bili_ticket=eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzIyNjg3OTMsImlhdCI6MTczMjAwOTUzMywicGx0IjotMX0.XrtK4fW5yyBnEWTn4gQeSTZAh_8KweejUzSk9tPDC08; '
|
|
|
|
+ 'bili_ticket_expires=1732268733; '
|
|
|
|
+ 'PVID=3; bmg_af_switch=1; '
|
|
|
|
+ 'bmg_src_def_domain=i2.hdslb.com; '
|
|
|
|
+ 'b_lsid=AEA3F28F_1934D6025DD; '
|
|
|
|
+ 'SESSDATA=994c56c3%2C1747721973%2C32480%2Ab1CjC6H2WiSR2TdOw7R4ED2MVj0RDd_OeOczPS9dMUYYuj8I9ilx01iewdYO_1V7J5VSoSVkVtaE1tV0hxRHIwb2tndmJraTd3X3pvcXBleHI4NDhRN3o5YnAtOWlVX1lwVXhTc210RS05VDFkUnVaMUQ3MjBiQ0h1dENpdi1VOU9hLUxycHUzR2RBIIEC; '
|
|
|
|
+ 'bili_jct=4cd051b6642a32eeb57f558eac9f02f7; '
|
|
|
|
+ 'sid=6w3kthlu; '
|
|
|
|
+ 'home_feed_column=5; '
|
|
|
|
+ 'browser_resolution=1528-712; '
|
|
|
|
+ 'bsource=search_bing; '
|
|
|
|
+ 'bp_t_offset_35990046=1002173800399241216'
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+# 发送请求
|
|
|
|
+response = requests.get(url=url, headers=headers)
|
|
|
|
+html = response.text
|
|
|
|
+
|
|
|
|
+# 提取,合法化并显示视频标题
|
|
|
|
+title = re.findall('title="(.*?)"', html)[0]
|
|
|
|
+if title:
|
|
|
|
+ illegal_chars = fr'<|>\/:"*?'
|
|
|
|
+ def remove_illegal_chars(title_ill):
|
|
|
|
+ for char in illegal_chars:
|
|
|
|
+ title_ill = title_ill.replace(char, "")
|
|
|
|
+ return title_ill
|
|
|
|
+ title = remove_illegal_chars(title)
|
|
|
|
+print(title)
|
|
|
|
+
|
|
|
|
+# 提取视频信息
|
|
|
|
+info = re.findall('window.__playinfo__=(.*?)</script>', html)[0]
|
|
|
|
+json_data = json.loads(info)
|
|
|
|
+
|
|
|
|
+# 提取音视频链接
|
|
|
|
+# TODO:设置数值来声明文件品质
|
|
|
|
+video_url = json_data['data']['dash']['video'][1]['baseUrl']
|
|
|
|
+audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
|
|
|
|
+
|
|
|
|
+# 获取音视频内容
|
|
|
|
+video_content = requests.get(url=video_url, headers=headers).content
|
|
|
|
+audio_content = requests.get(url=audio_url, headers=headers).content
|
|
|
|
+
|
|
|
|
+# 设置保存地址
|
|
|
|
+A_path = 'D:/pyp/Spider/bilibili_pachong/bili_test/audio/'
|
|
|
|
+V_path = 'D:/pyp/Spider/bilibili_pachong/bili_test/video/'
|
|
|
|
+Synth_path = 'D:/pyp/Spider/bilibili_pachong/bili_test/File/'
|
|
|
|
+
|
|
|
|
+# 保存文件数据
|
|
|
|
+with open(V_path + title + '.mp4', mode='wb') as v:
|
|
|
|
+ v.write(video_content)
|
|
|
|
+with open(A_path + title + '.mp3', mode='wb') as a:
|
|
|
|
+ a.write(audio_content)
|
|
|
|
+
|
|
|
|
+# 合并视频
|
|
|
|
+audio_path = fr"{A_path}{title}{'.mp3'}"
|
|
|
|
+audio_clip = AudioFileClip(audio_path)
|
|
|
|
+video_path = fr"{V_path}{title}{'.mp4'}"
|
|
|
|
+video_clip = VideoFileClip(video_path)
|
|
|
|
+audio_clip = audio_clip.set_duration(video_clip.duration)
|
|
|
|
+video_clip_with_audio = video_clip.set_audio(audio_clip)
|
|
|
|
+video_clip_with_audio.write_videofile(fr"{Synth_path}{title}{'.mp4'}", codec="libx264", audio_codec="aac")
|