用途:从 Crossref 增量抓取期刊文章元数据,并写入 PostgreSQL 的 journals 表,按 DOI 去重。
主要能力:按 --from-date 指定起始日期;从 journals_issn 表读取 ISSN 种子(journal、issn1);调用 Crossref 的 /journals/{issn}/works 接口并用 type:journal-article,from-pub-date:<from-date> 过滤;仅保留 container-title 与目标期刊标题(忽略大小写)一致的条目;用游标分页直到无匹配;插入时使用 ON CONFLICT (doi) DO NOTHING;存储 title、doi、journal、authors、date、abstract(Crossref 无摘要时可为空)。
使用方式:先设置用户管理的 KB_ 前缀环境变量 KB_DB_HOST、KB_DB_PORT、KB_DB_NAME、KB_DB_USER、KB_DB_PASSWORD、KB_LOG_DIR(日志目录,必填)。运行时执行:python3 scripts/fetch_meta_to_kb.py --from-date 2024-05-01。若通过 exec 工具调用,超时设为 1800 秒(30 分钟)。日志写入 ${KB_LOG_DIR}/fetch-meta-to-kb-YYYYMMDD-HHMMSS.log(UTC 时间戳,每次运行一个文件)。面向用户的汇总应基于本次运行输出,优先使用脚本生成的 RUN_SUMMARY_JSON;若不可用,只解析本次运行日志。total_inserted 仅指本次运行去重后插入的行数,而非表内累计。
限制:仅实现 Crossref 增量抓取与插入 journals,不覆盖其他功能;公告指标不得通过数据库全局或时间窗口 SQL(如 WHERE date >= ...)计算。脚本为 scripts/fetch_meta_to_kb.py。定价、平台支持与更多详情暂未提供。