import html
import subprocess
import time
import requests
from loguru import logger
class DownLoad:
@classmethod
def download_video(cls, video_url, video_path_url):
video = video_path_url + 'video.mp4'
url_type = html.unescape(video_url).split('?')[0]
if ".m3u8" in url_type:
logger.info(f"[+] {video_url}开始下载m3u8格式的视频")
ffmpeg_cmd_oss = [
"ffmpeg",
"-y", # 覆盖输出文件
"-i", video_url, # 输入文件
"-c", "copy", # 复制视频流
"-bsf:a", "aac_adtstoasc", # 转换 AAC 音频格式
video # 输出文件
]
subprocess.run(ffmpeg_cmd_oss)
return video
else:
try:
for i in range(3):
payload = {}
headers = {}
response = requests.request("GET", video_url, headers=headers, data=payload, timeout=240)
if response.status_code == 200:
# 以二进制写入模式打开文件
with open(f"{video}", "wb") as file:
# 将响应内容写入文件
file.write(response.content)
return video
return video
except Exception:
return video