fix: add web_creator client fallback, friendlier YouTube bot error
- Try multiple YouTube player clients for better compatibility - Show user-friendly error suggesting upload when YouTube blocks download Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
be3b1ca706
commit
0e4eec4f12
|
|
@ -45,6 +45,8 @@ def _base_opts() -> dict:
|
||||||
shutil.copy2(COOKIES_FILE, tmp.name)
|
shutil.copy2(COOKIES_FILE, tmp.name)
|
||||||
tmp.close()
|
tmp.close()
|
||||||
opts["cookiefile"] = tmp.name
|
opts["cookiefile"] = tmp.name
|
||||||
|
# Enable remote EJS challenge solver for YouTube
|
||||||
|
opts["extractor_args"] = {"youtube": {"player_client": ["default", "web_creator"]}}
|
||||||
return opts
|
return opts
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,15 @@ async def process_job(ctx: dict, job_id: str):
|
||||||
os.makedirs(job_media_dir, exist_ok=True)
|
os.makedirs(job_media_dir, exist_ok=True)
|
||||||
|
|
||||||
if job.source_type == "youtube":
|
if job.source_type == "youtube":
|
||||||
video_info = await download.download_video(job.source_url, job_media_dir)
|
try:
|
||||||
|
video_info = await download.download_video(job.source_url, job_media_dir)
|
||||||
|
except Exception as dl_err:
|
||||||
|
if "Sign in to confirm" in str(dl_err) or "bot" in str(dl_err):
|
||||||
|
raise ValueError(
|
||||||
|
"YouTube blocked this download (bot detection). "
|
||||||
|
"Try uploading the video file directly instead."
|
||||||
|
)
|
||||||
|
raise
|
||||||
job.title = video_info.title
|
job.title = video_info.title
|
||||||
job.duration = video_info.duration
|
job.duration = video_info.duration
|
||||||
job.media_path = video_info.video_path
|
job.media_path = video_info.video_path
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue