This commit is contained in:
lz_db
2026-10-17 19:04:05 +08:00
parent 28b11b4365
commit 1253c159f5
43 changed files with 2652 additions and 114 deletions
+41
View File
@@ -0,0 +1,41 @@
"""短剧采集 CLI
用法:
.venv/bin/python scripts/collect_short_dramas.py # 全量增量同步
.venv/bin/python scripts/collect_short_dramas.py --pages 1 --size 3 # 试跑
.venv/bin/python scripts/collect_short_dramas.py --drama-id 130 # 手动更新单部
"""
import argparse
import asyncio
import logging
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from app.database import SessionFactory # noqa: E402
from app.services.collection_service import sync_drama_by_id, sync_short_dramas # noqa: E402
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
async def main() -> None:
parser = argparse.ArgumentParser(description="短剧采集")
parser.add_argument("--drama-id", type=int, default=0, help="只同步指定源站短剧 id")
parser.add_argument("--pages", type=int, default=0, help="最多同步的列表页数,0=全部")
parser.add_argument("--size", type=int, default=20, help="每页条数")
parser.add_argument("--sort", choices=["heat", "latest"], default="heat")
parser.add_argument("--delay", type=float, default=0.25, help="上游请求间隔秒")
args = parser.parse_args()
async with SessionFactory() as db:
if args.drama_id:
stat = await sync_drama_by_id(db, args.drama_id)
else:
stat = await sync_short_dramas(
db, max_pages=args.pages, page_size=args.size, sort_by=args.sort, delay=args.delay
)
print("同步完成:", stat)
if __name__ == "__main__":
asyncio.run(main())