1
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user