udpate add bulk update of TV eps
Local Docker Build (Dev) / build-dev (push) Successful in 5s

This commit is contained in:
2025-11-03 15:52:42 -05:00
parent 1e292434c0
commit 3e3957234d
4 changed files with 229 additions and 6 deletions
+73 -1
View File
@@ -1573,7 +1573,79 @@ def register_web_routes(app, dependencies):
@app.post("/api/bulk/update-source")
async def api_bulk_update_source(media_type: str, old_source: str, new_source: str):
return {"error": "Bulk operations not available in web container. Use core container on port 8085."}
@app.post("/api/episodes/bulk-update-dates")
async def api_bulk_update_episode_dates(request: Request):
"""Bulk update episode dates"""
try:
data = await request.json()
episodes = data.get('episodes', [])
date_source = data.get('date_source', 'airdate')
custom_date = data.get('custom_date')
if not episodes:
return {"success": False, "message": "No episodes provided"}
db = dependencies["db"]
sonarr = dependencies.get("sonarr_client")
updated_count = 0
failed_count = 0
for ep in episodes:
imdb_id = ep.get('imdb_id')
season = ep.get('season')
episode = ep.get('episode')
if not all([imdb_id, season is not None, episode is not None]):
failed_count += 1
continue
try:
dateadded = None
source = "manual"
if date_source == 'airdate':
# Get airdate from Sonarr
if sonarr:
episode_data = sonarr.get_episode(imdb_id, season, episode)
if episode_data and episode_data.get('airDateUtc'):
dateadded = episode_data['airDateUtc']
source = "sonarr:airdate"
elif date_source == 'import':
# Get import date from Sonarr history
if sonarr:
import_date = sonarr.get_episode_import_date(imdb_id, season, episode)
if import_date:
dateadded = import_date
source = "sonarr:import"
elif date_source == 'custom':
# Use custom date
if custom_date:
dateadded = custom_date
source = "manual:custom"
if dateadded:
db.upsert_episode_dates(imdb_id, season, episode, dateadded, source)
updated_count += 1
else:
failed_count += 1
except Exception as e:
print(f"❌ Error updating episode {imdb_id} S{season:02d}E{episode:02d}: {e}")
failed_count += 1
return {
"success": True,
"updated": updated_count,
"failed": failed_count,
"message": f"Updated {updated_count} episode(s), {failed_count} failed"
}
except Exception as e:
print(f"❌ Bulk update error: {e}")
return {"success": False, "message": str(e)}
# Reports
@app.get("/api/reports/missing-dates")
async def api_missing_dates_report():