web: update web interface for tv eps missing date
Local Docker Build (Dev) / build-dev (push) Successful in 4s

This commit is contained in:
2025-10-15 09:55:28 -04:00
parent 913aed1f60
commit 909df0cc83
4 changed files with 130 additions and 8 deletions
+6 -1
View File
@@ -18,7 +18,7 @@ from api.models import (
from api.web_routes import (
get_movies_list, get_tv_series_list, get_series_episodes, get_series_sources, get_missing_dates_report,
get_dashboard_stats, update_movie_date, update_episode_date, bulk_update_source,
get_movie_date_options, get_episode_date_options
get_movie_date_options, get_episode_date_options, debug_series_date_distribution
)
@@ -1059,6 +1059,11 @@ def register_routes(app, dependencies: dict):
"""Get list of available episode sources for filtering"""
return await get_series_sources(dependencies)
@app.get("/api/debug/series-date-distribution")
async def _debug_series_dates():
"""Debug endpoint showing TV series date distribution"""
return await debug_series_date_distribution(dependencies)
@app.get("/api/reports/missing-dates")
async def _missing_dates_report():
"""Get report of content missing dateadded"""
+59
View File
@@ -209,6 +209,65 @@ async def get_series_sources(dependencies: dict):
return {"sources": sources}
async def debug_series_date_distribution(dependencies: dict):
"""Debug function to show TV series date distribution"""
db = dependencies["db"]
with db.get_connection() as conn:
cursor = conn.cursor()
# Get series with episode date statistics
cursor.execute("""
SELECT
s.imdb_id,
s.path,
COUNT(e.episode) as total_episodes,
COUNT(CASE WHEN e.dateadded IS NOT NULL AND e.dateadded != '' THEN 1 END) as episodes_with_dates,
COUNT(CASE WHEN e.dateadded IS NULL OR e.dateadded = '' THEN 1 END) as episodes_without_dates
FROM series s
LEFT JOIN episodes e ON s.imdb_id = e.imdb_id
GROUP BY s.imdb_id, s.path
HAVING COUNT(e.episode) > 0
ORDER BY total_episodes DESC
LIMIT 50
""")
series_stats = []
complete_count = 0
incomplete_count = 0
none_count = 0
for row in cursor.fetchall():
stats = dict(row)
total = stats['total_episodes']
with_dates = stats['episodes_with_dates']
without_dates = stats['episodes_without_dates']
if without_dates == 0:
category = "complete"
complete_count += 1
elif with_dates == 0:
category = "none"
none_count += 1
else:
category = "incomplete"
incomplete_count += 1
stats['category'] = category
stats['title'] = stats['path'].split('/')[-1] if stats['path'] else stats['imdb_id']
series_stats.append(stats)
return {
"series_sample": series_stats[:20], # First 20 for debugging
"distribution": {
"complete": complete_count,
"incomplete": incomplete_count,
"none": none_count,
"total": complete_count + incomplete_count + none_count
}
}
async def get_series_episodes(dependencies: dict, imdb_id: str):
"""Get all episodes for a specific TV series"""
db = dependencies["db"]