用途:当用户提供 DOI(如 10.1038/s41586-020-2649-2)或 arXiv ID(如 1706.03762),或要求按关键词(如 attention mechanism)搜索论文时,尝试从多个开放获取来源下载 PDF,并返回保存路径。
主要能力:多来源开放获取检索,按优先级回退直到找到 PDF;支持 DOI 下载、arXiv ID 下载、关键词搜索加下载(可设 max_results)三种输入模式;可配置输出目录与网络行为(超时、重试、来源优先级);文件仅写入配置的输出目录,命名格式为 {first_author}{year}{title}.pdf,最长 80 字符并安全截断;返回每个已保存 PDF 的完整绝对路径。
来源优先级:Semantic Scholar、OpenAlex、Unpaywall、arXiv、PubMed、Crossref;某来源不可用、无开放获取链接或超时时自动尝试下一个。
依赖:Python >= 3.8、requests >= 2.0.0,以及访问上述服务的 HTTPS 网络。
用法示例: python scripts/download.py --doi "10.1038/s41586-020-2649-2" --output "~/Downloads/ResearchPapers" python scripts/download.py --arxiv "1706.03762" --output "~/Downloads/ResearchPapers" python scripts/download.py --search "attention mechanism" --max-results 3 --output "~/Downloads/ResearchPapers" 也可在 Python 中导入 download_by_doi、download_by_arxiv、search_download 调用。
配置:config.json 可设 output_dir、timeout(建议 30-120 秒)、max_retries、preferred_sources。
限制:不绕过付费墙或受限内容;无需凭据;不执行外部代码,仅做网络请求与写文件。无效标识符、未找到开放获取版本、超时或来源不可用会给出明确错误。缺少必要标识符、文件或凭据时不适用。