This commit is contained in:
lz_db
2026-10-25 13:26:40 +08:00
parent 494f667719
commit 7fae7387f5
6 changed files with 111 additions and 37 deletions
+8 -4
View File
@@ -1110,7 +1110,8 @@ class _SourceCreate(BaseModel):
account: str = "" # aidrama91:源站登录账号
password: str = "" # aidrama91:源站登录密码
category_ids: list[int] = _Field(default_factory=lambda: [4]) # aidrama91:源站分类
page_size: int = _Field(20, ge=1, le=20)
page_size: int = _Field(20, ge=1, le=50)
delay: float = _Field(0.3, ge=0, le=60) # 每条/每页之间的等待秒数
class _SourceUpdate(BaseModel):
@@ -1121,7 +1122,8 @@ class _SourceUpdate(BaseModel):
account: str | None = None
password: str | None = None
category_ids: list[int] | None = None
page_size: int | None = _Field(None, ge=1, le=20)
page_size: int | None = _Field(None, ge=1, le=50)
delay: float | None = _Field(None, ge=0, le=60)
def _source_dict(s) -> dict:
@@ -1137,6 +1139,7 @@ def _source_dict(s) -> dict:
"account": cfg.get("account", ""),
"category_ids": cfg.get("category_ids") or [],
"page_size": cfg.get("page_size") or 20,
"delay": cfg.get("delay", 0.3),
"has_token": bool(cfg.get("token")),
"last_sync_at": s.last_sync_at.strftime("%Y-%m-%d %H:%M:%S") if s.last_sync_at else "",
"created_at": s.created_at.strftime("%Y-%m-%d %H:%M:%S"),
@@ -1187,7 +1190,8 @@ async def create_source(req: _SourceCreate, request: Request, db: AsyncSession =
cfg = {}
if req.kind in ("aidrama91", "aidrama91_vlog"):
cfg = {"account": req.account, "password": req.password,
"category_ids": req.category_ids or [4], "page_size": req.page_size}
"category_ids": req.category_ids or [4], "page_size": req.page_size,
"delay": req.delay}
s = CollectionSource(name=req.name.strip(), kind=req.kind, list_url=req.list_url.strip(),
config=_json.dumps(cfg, ensure_ascii=False),
category_id=cid, source_id=req.source_id)
@@ -1223,7 +1227,7 @@ async def update_source(source_id: int, req: _SourceUpdate, db: AsyncSession = D
d["name"] = d["name"].strip()
# 接口类源的账号/密码/分类等写入 config
cfg_keys = ("account", "password", "category_ids", "page_size")
cfg_keys = ("account", "password", "category_ids", "page_size", "delay")
cfg = _json.loads(s.config or "{}")
for k in cfg_keys:
if k in d:
+6
View File
@@ -484,6 +484,9 @@ async def sync_source(
should_cancel: 可选回调,返回 True 时在每页/每条边界退出循环(用于手动取消)
"""
cfg = load_config(source)
# 每条/每页之间的间隔可由采集源 config 的 delay 自定义(秒),未配置时用默认值
if cfg.get("delay") is not None:
delay = float(cfg["delay"])
stat: dict = {
"kind": KIND, "dramas_new": 0, "dramas_exist": 0,
"episodes_created": 0, "episodes_skipped": 0, "pages": 0, "total": 0,
@@ -748,6 +751,9 @@ async def sync_vlog_source(
) -> dict:
"""vlog 短视频翻页增量采集。should_cancel 返回 True 时每页/每条边界退出"""
cfg = load_config(source)
# 每条/每页之间的间隔可由采集源 config 的 delay 自定义(秒),未配置时用默认值
if cfg.get("delay") is not None:
delay = float(cfg["delay"])
stat: dict = {
"kind": VLOG_KIND, "videos_new": 0, "videos_exist": 0,
"pages": 0,