fix: migrations, auth, providers health check, E2E tests, remove neko-sama
CI / Test (Python 3.11) (push) Has been cancelled
CI / Test (Python 3.12) (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Summary (push) Has been cancelled

- Add proper Alembic initial migration (0001_initial_schema.py)
- Migrate refresh tokens from JSON file to SQLite (RefreshTokenTable)
- Remove Neko-Sama provider entirely (redirects to Gupy, not a host)
- Fix provider health check always showing UNKNOWN
  - Run check_all_health() on startup
  - Fix POST /providers/health/check background task bug
  - Add HTMX refresh after manual health check trigger
- Fix anime search relevance scoring with MIN_RELEVANCE_THRESHOLD=0.5
- Replace bare 'except:' with 'except Exception:' across codebase
- Add Playwright E2E test suite (12 tests, auth setup, helpers)
- Fix toast container blocking clicks via pointer-events: none
- Remove obsolete Jest/Vite test files and config
- Clean up obsolete test_watchlist scripts
- Update sonarr model comment for active providers
This commit is contained in:
Kimi Agent
2026-05-12 11:45:56 +00:00
parent 693615a7dc
commit 520be53901
47 changed files with 654 additions and 3437 deletions
+10 -6
View File
@@ -490,15 +490,16 @@ class AnimeSamaDownloader(BaseAnimeSite):
part.replace("saison", "").replace("Saison", "")
)
break
except:
pass
except Exception:
logger.debug("Could not parse season number from URL part")
episode = "01"
if season_num:
return f"{anime_name} - S{season_num} - Episode {episode}.mp4"
else:
return f"{anime_name} - Episode {episode}.mp4"
except:
except Exception:
logger.debug("Could not generate filename, using default")
return "Anime - Episode 01.Mp4"
def _generate_anime_name(self, anime_url: str) -> str:
@@ -511,7 +512,8 @@ class AnimeSamaDownloader(BaseAnimeSite):
return parts[i + 1].replace("-", " ").title()
# Fallback
return "Anime"
except:
except Exception:
logger.debug("Could not extract anime name from URL")
return "Anime"
def _extract_season_number(self, anime_url: str) -> int | None:
@@ -522,7 +524,8 @@ class AnimeSamaDownloader(BaseAnimeSite):
if "saison" in part.lower():
return int(part.replace("saison", "").replace("Saison", ""))
return None
except:
except Exception:
logger.debug("Could not extract season number from URL")
return None
async def _extract_from_lpayer(
@@ -744,7 +747,8 @@ class AnimeSamaDownloader(BaseAnimeSite):
if match:
return match.group(1)
except:
except Exception:
logger.debug("Could not extract video URL from scripts")
pass
return None