feat(web): refresh palette, simplify ranking toolbar and drop export

This commit is contained in:
kairee committed 2026-11-01 00:37:20 +08:00
1 parent 6a053bdfe8
commit c2ef998720
16 files changed
+141 -206

No files matched your search

+6 -15
View File
@@ -523,14 +523,13 @@ class DashboardQueries:
q: str | None = None,
page: int = 1,
page_size: int = 20,
export: bool = False,
) -> dict[str, Any]:
if sort not in VIDEO_SORTS:
raise ValueError(f"不支持的排序: {sort}")
if growth_days < 1 or growth_days > 365:
raise ValueError("growth_days 必须在 1~365 之间")
page = max(1, int(page))
page_size = max(1, min(int(page_size), 200 if not export else 10_000))
page_size = max(1, min(int(page_size), 200))
def run(conn: sqlite3.Connection) -> dict[str, Any]:
latest = self._latest_date(conn) or self._today()
@@ -607,9 +606,8 @@ class DashboardQueries:
growth_available = any(
item.get("growth", {}).get("available") for item in items
)
if not export:
start = (page - 1) * page_size
items = items[start:start + page_size]
start = (page - 1) * page_size
items = items[start:start + page_size]
available = True
reason = None
if sort in {"growth", "growth_rate"} and not growth_available:
@@ -732,12 +730,11 @@ class DashboardQueries:
min_videos: int = 1,
page: int = 1,
page_size: int = 20,
export: bool = False,
) -> dict[str, Any]:
if sort not in UP_SORTS:
raise ValueError(f"不支持的 UP 排序: {sort}")
page = max(1, int(page))
page_size = max(1, min(int(page_size), 200 if not export else 10_000))
page_size = max(1, min(int(page_size), 200))
min_videos = max(1, int(min_videos))
def run(conn: sqlite3.Connection) -> dict[str, Any]:
@@ -813,9 +810,8 @@ class DashboardQueries:
key = sort_map[sort]
items.sort(key=lambda item: (key(item), item["up_mid"]), reverse=True)
total = len(items)
if not export:
start = (page - 1) * page_size
items = items[start:start + page_size]
start = (page - 1) * page_size
items = items[start:start + page_size]
return {
"sort": sort,
"within_days": within_days,
@@ -1115,8 +1111,3 @@ class DashboardQueries:
"telegram_enabled": bool(cfg.telegram.enabled),
}
return self.db.read(run)
def export_videos(self, **filters) -> dict[str, Any]:
filters.pop("page", None)
filters.pop("page_size", None)
return self.list_videos(**filters, export=True)