已修改成可以自定义文件保存路径,可以自动合并音频视频文件,且合并后自动删除源文件,由GPT-3.5帮助修改
爬虫代码来源
import os
import requests
import json
import re
from moviepy.audio.io.AudioFileClip import AudioFileClip
from moviepy.video.io.VideoFileClip import VideoFileClip
def my_match(text, pattern):
match = re.search(pattern, text)
return json.loads(match.group(1))
def download_video(old_video_url, video_url, audio_url, video_name, save_path):
headers.update({"Referer": old_video_url})
print("开始下载视频:%s" % video_name)
video_content = requests.get(video_url, headers=headers)
audio_content = requests.get(audio_url, headers=headers)
video_file_path = os.path.join(save_path, f"{video_name}_video.mp4")
audio_file_path = os.path.join(save_path, f"{video_name}_audio.mp4")
with open(video_file_path, 'ab') as output:
output.write(video_content.content)
with open(audio_file_path, 'ab') as output:
output.write(audio_content.content)
print(f"视频已保存到: {video_file_path}")
print(f"音频已保存到: {audio_file_path}")
return video_name
if __name__ == '__main__':
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/63.0.3239.84 Safari/537.36'
}
# 修改b站视频播放界面链接!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
url = 'https://www.bilibili.com/video/BV1194y1T73u/?spm_id_from=333.788.recommend_more_video.0&vd_source=cf986de3ec49a44edb138cd8e0253419'
res = requests.get(url, headers=headers)
playinfo = my_match(res.text, '__playinfo__=(.*?)</script><script>')
initial_state = my_match(res.text, r'__INITIAL_STATE__=(.*?);\(function\(\)')
video_url = playinfo['data']['dash']['video'][0]['baseUrl']
audio_url = playinfo['data']['dash']['audio'][0]['baseUrl']
video_name = initial_state['videoData']['title']
# 修改保存路径!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
custom_save_path = r'E:\Videos\新建文件夹2'
download_video(url, video_url, audio_url, video_name, custom_save_path)
# 设置标题
title = video_name
# 文件路径
video = fr"{custom_save_path}\{title}_video.mp4"
audio = fr"{custom_save_path}\{title}_audio.mp4"
try:
video_clip = VideoFileClip(video) # 视频
audio_clip = AudioFileClip(audio) # 音频
# 连接剪辑
final_clip = video_clip.set_audio(audio_clip)
# 导出视频
final_clip.write_videofile(fr'{custom_save_path}\{title}.mp4')
print('导出完成')
except Exception as e: # 捕获所有异常,但不做处理,继续执行后续代码
print("An error occurred:", e)
print('检查导出路径是否存在同名文件 合并视频是否存在')
# 删除文件
file_path = video
file_path1 = audio
if os.path.exists(file_path):
os.remove(file_path)
print(f"文件 {file_path} 已删除。")
else:
print(f"文件 {file_path} 不存在.")
if os.path.exists(file_path1):
os.remove(file_path1)
print(f"文件 {file_path1} 已删除。")
else:
print(f"文件 {file_path1} 不存在.")