Initial commit
This commit is contained in:
42
download-backend/tests/test_manual_download.py
Normal file
42
download-backend/tests/test_manual_download.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import os
|
||||
import yt_dlp
|
||||
|
||||
def download_video(url, save_dir="/home/docker/openlist/ytb-video"):
|
||||
os.makedirs(save_dir, exist_ok=True)
|
||||
|
||||
base_opts = {
|
||||
'merge_output_format': 'mp4',
|
||||
'outtmpl': f'{save_dir}/%(title)s.%(ext)s',
|
||||
'quiet': False,
|
||||
'verbose': True, # 调试模式
|
||||
'retries': 5,
|
||||
'fragment_retries': 5,
|
||||
}
|
||||
|
||||
# 首选格式组合
|
||||
formats = [
|
||||
'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
|
||||
'bestvideo+bestaudio/best'
|
||||
]
|
||||
|
||||
for fmt in formats:
|
||||
opts = dict(base_opts)
|
||||
opts['format'] = fmt
|
||||
print(f"🔧 尝试格式: {fmt}")
|
||||
try:
|
||||
with yt_dlp.YoutubeDL(opts) as ydl:
|
||||
info = ydl.extract_info(url, download=True)
|
||||
if info:
|
||||
filepath = ydl.prepare_filename(info)
|
||||
print(f"✅ 下载完成: {filepath}")
|
||||
return filepath
|
||||
except Exception as e:
|
||||
print(f"⚠️ 格式 {fmt} 下载失败,异常: {e}")
|
||||
continue
|
||||
|
||||
print("❌ 所有格式尝试均失败。")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
video_url = "https://www.youtube.com/watch?v=QL3T2Nzcqcs"
|
||||
download_video(video_url)
|
||||
Reference in New Issue
Block a user