添加校招鸭数据
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