first commit

This commit is contained in:
micialware committed 2026-10-09 22:15:22 +03:00
commit 865786f210
16 files changed
+743

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
"""Сканирует VIDEO_DIR, добавляет новые .mp4/.webm в БД. Удаляет из БД пропавшие файлы."""
from __future__ import annotations
import os
import sys
from db import connect, init_db
ALLOWED_EXT = {".mp4", ".webm", ".mov", ".m4v"}
def scan_directory(video_dir: str) -> tuple[int, int]:
init_db()
if not os.path.isdir(video_dir):
print(f"Нет папки: {video_dir}", file=sys.stderr)
return 0, 0
on_disk = {
f for f in os.listdir(video_dir)
if os.path.isfile(os.path.join(video_dir, f))
and os.path.splitext(f)[1].lower() in ALLOWED_EXT
}
with connect() as con:
in_db = {r["filename"] for r in con.execute("SELECT filename FROM videos")}
new = sorted(on_disk - in_db)
gone = sorted(in_db - on_disk)
con.executemany("INSERT OR IGNORE INTO videos(filename) VALUES (?)", [(f,) for f in new])
if gone:
ph = ",".join("?" * len(gone))
con.execute(f"DELETE FROM videos WHERE filename IN ({ph})", gone)
print(f"Видео на диске: {len(on_disk)}, добавлено: {len(new)}, удалено: {len(gone)}")
return len(new), len(on_disk)
if __name__ == "__main__":
video_dir = sys.argv[1] if len(sys.argv) > 1 else os.environ.get("VIDEO_DIR", "./videos")
scan_directory(video_dir)