# 话不多说,直接上源码
import urllib, requests
import urllib.request as req
import re
import json
import subprocess
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36',
'referer': 'https://www.bilibili.com/'
}
video_path = './video/'
movie_path = './movie/'
def get_html_data(url_path):
data_html = requests.get(url_path, headers=headers, proxies=proxies).text
return data_html
def get_download_url():
url = 'https://www.bilibili.com/video/av288087621/'
data_html = get_html_data(url)
title = re.findall('<span class="tit">(.*?)</span>', data_html)[0]
json_data = re.findall('<script>window\.__playinfo__=(.*?)</script>', data_html)[0]
json_data = json.loads(json_data)
video_url = json_data['data']['dash']['audio'][0]['backupUrl'][0]
movie_url = json_data['data']['dash']['video'][0]['backupUrl'][0]
download_data(title, video_url, movie_url)
def download_data(title, video_url, movie_url):
# 下载音频数据
video_data = requests.get(video_url, headers=headers, proxies=proxies).content
# 下载视频数据
movie_data = requests.get(movie_url, headers=headers, proxies=proxies).content
local_save_data(title, video_data, movie_data)
def local_save_data(title, video_data, movie_data):
# 保存音频数据
with open(video_path + title + '.mp3', 'wb') as w:
w.write(video_data)
# 保存视频数据
with open(movie_path + title + '.mp4', 'wb') as w:
w.write(movie_data)
merge_data(title)
def merge_data(title):
print("视频合成开始:%s" % title)
COMMAND = f"ffmpeg -i {movie_path + title}.mp4 -i {video_path + title}.mp3 -c:v copy -c:a aac -strict experimental {movie_path}output.mp4"
subprocess.Popen(COMMAND, shell=True)
print("视频合成结束:%s" % title)
if __name__ == '__main__':
get_download_url()