First wire from video.db -> UI, kettui-style. - api/video/ : isolated Flask blueprint (registered at /api/video with one additive line in web_server.py). Reads only video.db; imports nothing from the music API or DB. - GET /api/video/dashboard -> VideoDatabase.dashboard_stats(): live library/ download/watchlist/wishlist counts (real 0s on an empty DB). - video-dashboard.js now fetches it and fills the stat cards + Watchlist/ Wishlist header badges (formatted bytes/speed); falls back to zeros on error. uptime/memory stay at markup defaults for now (not video-domain). - Tests: dashboard_stats counts (empty + populated), endpoint returns zeroed JSON via a Flask test client, blueprint exposes the route, and the video API imports nothing from music. 93 video/integrity tests green.
24 lines
733 B
Python
24 lines
733 B
Python
"""Video dashboard endpoint — live counts from video.db.
|
|
|
|
GET /api/video/dashboard -> {library:{...}, downloads:{...}, watchlist, wishlist}
|
|
With an empty database every value is a real 0.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from flask import jsonify
|
|
|
|
from utils.logging_config import get_logger
|
|
|
|
logger = get_logger("video_api.dashboard")
|
|
|
|
|
|
def register_routes(bp):
|
|
@bp.route("/dashboard", methods=["GET"])
|
|
def video_dashboard():
|
|
from . import get_video_db
|
|
try:
|
|
return jsonify(get_video_db().dashboard_stats())
|
|
except Exception:
|
|
logger.exception("Failed to build video dashboard stats")
|
|
return jsonify({"error": "Failed to load video dashboard stats"}), 500
|