添加校招鸭数据
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,54 @@
|
|||||||
|
"""读取校招鸭公告 URL 文件并批量处理(一次性执行)。
|
||||||
|
|
||||||
|
运行(项目根目录下):
|
||||||
|
python init_xiaozhaoya.py
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from app.core.database import close_db, init_db
|
||||||
|
from app.core.logger import log
|
||||||
|
from app.service.announcement_batch_service import save_announcements
|
||||||
|
|
||||||
|
|
||||||
|
URLS_PATH = Path(__file__).resolve().parent / "doc" / "xiaozhaoya_announcement_links.json"
|
||||||
|
|
||||||
|
|
||||||
|
def load_urls() -> list[str]:
|
||||||
|
"""从本地 JSON 读取公告地址,过滤无效值并保持原始顺序去重。"""
|
||||||
|
with URLS_PATH.open("r", encoding="utf-8") as json_file:
|
||||||
|
payload = json.load(json_file)
|
||||||
|
|
||||||
|
if not isinstance(payload, list):
|
||||||
|
raise ValueError(f"公告地址 JSON 必须是数组:{URLS_PATH}")
|
||||||
|
|
||||||
|
urls: list[str] = []
|
||||||
|
seen: set[str] = set()
|
||||||
|
for value in payload:
|
||||||
|
if not isinstance(value, str):
|
||||||
|
continue
|
||||||
|
url = value.strip()
|
||||||
|
if not url.startswith(("http://", "https://")) or url in seen:
|
||||||
|
continue
|
||||||
|
seen.add(url)
|
||||||
|
urls.append(url)
|
||||||
|
|
||||||
|
log.info("从文件读取到 {} 条公告地址(原始 {} 条)", len(urls), len(payload))
|
||||||
|
return urls
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
"""读取 URL,初始化数据库并直接调用批量处理服务。"""
|
||||||
|
urls = load_urls()
|
||||||
|
init_db()
|
||||||
|
try:
|
||||||
|
save_announcements(urls)
|
||||||
|
finally:
|
||||||
|
close_db()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user