feat: Enhance Anilife extraction with aggressive resource blocking, headless mode, and robust JSON output handling.

This commit is contained in:
2025-12-29 00:32:41 +09:00
parent b2542af2da
commit 56d0d57a70
2 changed files with 76 additions and 69 deletions

View File

@@ -1314,22 +1314,29 @@ class AniLifeQueueEntity(FfmpegQueueEntity):
logger.error(f"Camoufox subprocess failed: {result.stderr}")
raise Exception(f"Subprocess error: {result.stderr}")
# JSON 결과 파싱
cf_result = json_module.loads(result.stdout)
logger.debug(f"Camoufox result: success={cf_result.get('success')}, current_url={cf_result.get('current_url')}")
# JSON 결과 파싱 (엄격한 분리를 통해 stdout에는 JSON만 남음)
try:
cf_result = json_module.loads(result.stdout)
except json_module.JSONDecodeError as e:
logger.error(f"Failed to parse Camoufox result: {e}")
logger.error(f"Raw stdout: {result.stdout}")
return
if cf_result.get("error"):
logger.error(f"Camoufox error: {cf_result['error']}")
elapsed = cf_result.get("elapsed", "?")
logger.info(f"Camoufox extraction finished in {elapsed}s (success={cf_result.get('success')})")
# _aldata 추출
if cf_result.get("success") and cf_result.get("aldata"):
if not cf_result.get("success"):
logger.error(f"Camoufox failed: {cf_result.get('error')}")
if cf_result.get("html"):
logger.debug(f"Failed page HTML length: {len(cf_result['html'])}")
return
# _aldata 추출 성공
if cf_result.get("aldata"):
aldata_value = cf_result["aldata"]
logger.debug(f"Got _aldata from Camoufox: {aldata_value[:50]}...")
elif cf_result.get("html"):
provider_html = cf_result["html"]
logger.debug(f"Provider page loaded via Camoufox, length: {len(provider_html)}")
logger.debug(f"Got _aldata ({cf_result.get('source', 'unknown')})")
else:
logger.error("No aldata or HTML returned from Camoufox")
logger.error("Success reported but no aldata returned")
return
except subprocess.TimeoutExpired: