Add scheduled sync, disk space awareness, and subtitle downloads
- auto-sync daemon: background thread checks every hour and syncs followed channels for users with sync_interval_hours set (6/12/24h options) - disk stats: /api/stats now returns total/used/free/download bytes; Stats page shows a disk usage bar - subtitles: subtitle_langs setting (e.g. "en,sv") passed through all download paths; yt-dlp writes .srt files alongside the video - Settings page: sync interval dropdown + subtitle languages input Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import text
|
||||
|
||||
from ..auth_utils import get_current_user
|
||||
from ..config import settings
|
||||
from ..database import get_db
|
||||
from ..models import User, UserTagAffinity
|
||||
|
||||
@@ -120,6 +124,15 @@ def get_stats(
|
||||
{"uid": uid},
|
||||
).mappings().first()
|
||||
|
||||
try:
|
||||
disk = shutil.disk_usage(settings.download_path)
|
||||
download_bytes = sum(
|
||||
e.stat().st_size for e in os.scandir(settings.download_path) if e.is_file()
|
||||
)
|
||||
except Exception:
|
||||
disk = None
|
||||
download_bytes = 0
|
||||
|
||||
return {
|
||||
"total_watched": totals["total_watched"] or 0,
|
||||
"total_watch_seconds": totals["total_watch_seconds"] or 0,
|
||||
@@ -141,6 +154,12 @@ def get_stats(
|
||||
"total_liked": liked_count["n"] or 0,
|
||||
"top_categories": [dict(r) for r in top_categories],
|
||||
"taste_profile": [dict(r) for r in taste_profile],
|
||||
"disk": {
|
||||
"total_bytes": disk.total if disk else None,
|
||||
"free_bytes": disk.free if disk else None,
|
||||
"used_bytes": disk.used if disk else None,
|
||||
"download_bytes": download_bytes,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user