fix: Address critical issues from PR review
Fix 4 critical issues identified in code review:
**Error Handling Improvements:**
- Replace bare except blocks with specific exception handlers
- Add logging for TimeoutException and ConnectError
- Prevent silent failures in season loading
- Remove misleading "0 episodes" on error
**Robustness Fixes:**
- Add safe None handling in title comparison (main.py)
Prevents crash when title is None
- Add URL validation before encodeURIComponent (anime.js)
Prevents crash when anime.url is undefined
- Fix unreachable code in retry logic (recommendations.py)
Preserve retry context in exception messages
**Changes:**
- animesama.py: Specific exception handling with print statements
- main.py: Safe None handling with (x.get('title') or '')
- anime.js: URL validation before encoding
- recommendations.py: Better exception messages with retry context
All fixes tested and working correctly.
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:
@@ -943,8 +943,13 @@ class AnimeSamaDownloader(BaseAnimeSite):
|
||||
'url': season_url,
|
||||
'episode_count': None # Will fetch later if needed
|
||||
}
|
||||
except Exception:
|
||||
except httpx.TimeoutException:
|
||||
# Silent skip - season likely doesn't exist
|
||||
pass
|
||||
except httpx.ConnectError as e:
|
||||
print(f"[ANIME-SAMA] Connection error checking season {season_num}: {e}")
|
||||
except Exception as e:
|
||||
print(f"[ANIME-SAMA] Unexpected error checking season {season_num}: {e}")
|
||||
return None
|
||||
|
||||
# Check seasons 1-10 in parallel
|
||||
@@ -970,8 +975,11 @@ class AnimeSamaDownloader(BaseAnimeSite):
|
||||
# Skip seasons with no episodes
|
||||
print(f"[ANIME-SAMA] Skipping Saison {season_info['season']} (no episodes)")
|
||||
return None
|
||||
except Exception:
|
||||
return None
|
||||
except httpx.TimeoutException:
|
||||
print(f"[ANIME-SAMA] Timeout fetching episodes for season {season_info['season']}")
|
||||
except Exception as e:
|
||||
print(f"[ANIME-SAMA] Error fetching episodes for season {season_info['season']}: {e}")
|
||||
return None
|
||||
|
||||
if seasons:
|
||||
episode_tasks = [fetch_episode_count(s) for s in seasons]
|
||||
@@ -999,19 +1007,20 @@ class AnimeSamaDownloader(BaseAnimeSite):
|
||||
# Get episode count for this season
|
||||
try:
|
||||
episodes = await self.get_episodes(season_url)
|
||||
seasons.append({
|
||||
'season': season_num,
|
||||
'title': f'Saison {season_num}',
|
||||
'url': season_url,
|
||||
'episode_count': len(episodes) if episodes else 0
|
||||
})
|
||||
except Exception:
|
||||
seasons.append({
|
||||
'season': season_num,
|
||||
'title': f'Saison {season_num}',
|
||||
'url': season_url,
|
||||
'episode_count': 0
|
||||
})
|
||||
episode_count = len(episodes) if episodes else 0
|
||||
if episode_count > 0:
|
||||
seasons.append({
|
||||
'season': season_num,
|
||||
'title': f'Saison {season_num}',
|
||||
'url': season_url,
|
||||
'episode_count': episode_count
|
||||
})
|
||||
else:
|
||||
print(f"[ANIME-SAMA] Skipping season {season_num} (no episodes)")
|
||||
except httpx.TimeoutException:
|
||||
print(f"[ANIME-SAMA] Timeout fetching episodes for season {season_num}")
|
||||
except Exception as e:
|
||||
print(f"[ANIME-SAMA] Error fetching episodes for season {season_num}: {e}")
|
||||
|
||||
# Sort by season number
|
||||
seasons.sort(key=lambda x: x['season'])
|
||||
|
||||
Reference in New Issue
Block a user