fix(renamer): improve episode offset warning messages (#962)

The warning "Episode offset 0 would result in negative episode" was
misleading and caused log spam. The actual issue was either:
1. Parsed episode was 0 or negative (parsing failure or special episode)
2. A negative offset would make a valid episode negative

Changes:
- Differentiate between parsing issues vs offset issues in log messages
- Use debug level for parsed episode issues (likely special episodes)
- Keep warning level only for actual offset problems
- Include original episode value in warning for better debugging
- Handle edge case where parsed episode is 0 by falling back to 1

Fixes #962

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
Estrella Pan
2026-01-27 06:46:14 +01:00
parent 3146029d0b
commit 24f1f72941

View File

@@ -39,12 +39,22 @@ class Renamer(DownloadClient):
season_num = file_info.season
season = f"0{season_num}" if season_num < 10 else season_num
# Apply episode offset
adjusted_episode = int(file_info.episode) + episode_offset
original_episode = int(file_info.episode)
adjusted_episode = original_episode + episode_offset
if adjusted_episode < 1:
adjusted_episode = int(file_info.episode) # Safety: don't go below 1
logger.warning(
f"[Renamer] Episode offset {episode_offset} would result in negative episode, ignoring"
)
if original_episode < 1:
# Parsed episode is 0 or negative - likely a parsing issue or special episode
# Use episode 1 as fallback to avoid invalid filenames
adjusted_episode = 1
logger.debug(
f"[Renamer] Parsed episode {original_episode} is invalid, using episode 1"
)
else:
# Offset would make episode negative - ignore the offset
adjusted_episode = original_episode
logger.warning(
f"[Renamer] Episode offset {episode_offset} would make episode {original_episode} negative, ignoring offset"
)
episode = f"0{adjusted_episode}" if adjusted_episode < 10 else adjusted_episode
if method == "none" or method == "subtitle_none":
return file_info.media_path
@@ -95,9 +105,10 @@ class Renamer(DownloadClient):
):
# Season comes from folder which already has offset applied
# Only apply episode offset
adjusted_episode = int(ep.episode) + episode_offset
original_ep = int(ep.episode)
adjusted_episode = original_ep + episode_offset
if adjusted_episode < 1:
adjusted_episode = int(ep.episode)
adjusted_episode = 1 if original_ep < 1 else original_ep
return Notification(
official_title=bangumi_name,
season=ep.season,