fix(anime): batch_download list crash + title 오분류 fallback 수정
This commit is contained in:
@@ -91,6 +91,12 @@ async def handle_anime_message(
|
||||
mode = parsed.get("download_mode", "auto")
|
||||
episode = parsed.get("episode")
|
||||
result = await pipeline.download(title, mode=mode, episode=episode)
|
||||
# resolve 실패 시 batch fallback (title이 애니 제목이 아닌 경우)
|
||||
if not result.success and not episode:
|
||||
logger.info(f"단건 resolve 실패 → 배치 fallback: '{title}'")
|
||||
dl_filter = parsed.get("filter", "")
|
||||
batch_mode = "sub_only" if "sub" in dl_filter else "auto"
|
||||
result = await pipeline.batch_download(mode=batch_mode)
|
||||
elif action == "download" and not title:
|
||||
# 이번 분기 전체 다운로드 (자막 최신화 등)
|
||||
dl_filter = parsed.get("filter", "")
|
||||
@@ -143,19 +149,34 @@ async def handle_anime_message(
|
||||
))
|
||||
return
|
||||
|
||||
# 결과 임베드
|
||||
embed = discord.Embed(
|
||||
title=f"🎬 {result.message[:100]}" if result.message else "🎬 결과",
|
||||
description=result.message[:2000] if result.message else "완료",
|
||||
color=0x2ECC71 if result.success else 0xE74C3C,
|
||||
)
|
||||
if result.errors:
|
||||
embed.add_field(
|
||||
name="⚠️ 오류",
|
||||
value="\n".join(f"• {e}" for e in result.errors[:5])[:1000],
|
||||
inline=False,
|
||||
# 결과 임베드 — batch_download는 list[DownloadResult] 반환
|
||||
if isinstance(result, list):
|
||||
successes = [r for r in result if r.success]
|
||||
failures = [r for r in result if not r.success]
|
||||
lines = []
|
||||
for r in result:
|
||||
icon = "✅" if r.success else "❌"
|
||||
name = r.anime.subject if r.anime else "?"
|
||||
lines.append(f"{icon} {name}: {r.message[:60]}")
|
||||
embed = discord.Embed(
|
||||
title=f"📥 일괄 다운로드 ({len(successes)}/{len(result)}건 성공)",
|
||||
description="\n".join(lines)[:2000] if lines else "처리 완료",
|
||||
color=0x2ECC71 if not failures else 0xF39C12,
|
||||
)
|
||||
await safe_send_embed(message.channel, embed)
|
||||
await safe_send_embed(message.channel, embed)
|
||||
else:
|
||||
embed = discord.Embed(
|
||||
title=f"🎬 {result.message[:100]}" if result.message else "🎬 결과",
|
||||
description=result.message[:2000] if result.message else "완료",
|
||||
color=0x2ECC71 if result.success else 0xE74C3C,
|
||||
)
|
||||
if result.errors:
|
||||
embed.add_field(
|
||||
name="⚠️ 오류",
|
||||
value="\n".join(f"• {e}" for e in result.errors[:5])[:1000],
|
||||
inline=False,
|
||||
)
|
||||
await safe_send_embed(message.channel, embed)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"애니 핸들러 오류: {e}", exc_info=True)
|
||||
|
||||
Reference in New Issue
Block a user