Add year support to anime folder names

- Add year property to Serie entity with name_with_year
- Add year column to AnimeSeries database model
- Add get_year() method to AniworldLoader provider
- Extract year from folder names before fetching from API
- Update SerieScanner to populate year during rescan
- Update add_series endpoint to fetch and store year
- Optimize: check folder name for year before API call
This commit is contained in:
2026-01-11 19:47:47 +01:00
parent ccbd9768a2
commit 40ffb99c97
7 changed files with 241 additions and 28 deletions

View File

@@ -693,10 +693,26 @@ async def add_series(
detail="Could not extract series key from link",
)
# Step B: Create sanitized folder name from display name
# Step B: Fetch year from provider and create folder name with year
name = request.name.strip()
# Fetch year from provider
year = None
if series_app and hasattr(series_app, 'loader'):
try:
year = series_app.loader.get_year(key)
logger.info(f"Fetched year for {key}: {year}")
except Exception as e:
logger.warning(f"Could not fetch year for {key}: {e}")
# Create folder name with year if available
if year:
folder_name_with_year = f"{name} ({year})"
else:
folder_name_with_year = name
try:
folder = sanitize_folder_name(name)
folder = sanitize_folder_name(folder_name_with_year)
except ValueError as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
@@ -729,14 +745,16 @@ async def add_series(
name=name,
site="aniworld.to",
folder=folder,
year=year,
)
db_id = anime_series.id
logger.info(
"Added series to database: %s (key=%s, db_id=%d)",
"Added series to database: %s (key=%s, db_id=%d, year=%s)",
name,
key,
db_id
db_id,
year
)
# Step D: Add to SerieList (in-memory only, no folder creation)
@@ -746,17 +764,19 @@ async def add_series(
name=name,
site="aniworld.to",
folder=folder,
episodeDict={}
episodeDict={},
year=year
)
# Add to in-memory cache without creating folder on disk
if hasattr(series_app.list, 'keyDict'):
series_app.list.keyDict[key] = serie
logger.info(
"Added series to in-memory cache: %s (key=%s, folder=%s)",
"Added series to in-memory cache: %s (key=%s, folder=%s, year=%s)",
name,
key,
folder
folder,
year
)
# Step E: Trigger targeted scan for missing episodes