Skip to main content
L

dsh-lit-fetch

loyalchiiina/dsh-lit-fetch

DSH literature fetcher: search academic papers via DOI, download PDFs through Sci-Hub mirrors and Open Access fallback, generate batch access HTML manifests.

Install

dsh plugin --profile web add github:loyalchiiina/dsh-lit-fetch

README

dsh-lit-fetch

DSH literature fetcher — search academic papers, download PDFs by DOI (Sci-Hub mirrors with Open Access fallback), and generate a batch-access HTML manifest.

DSH 文献获取插件 — 快捷搜索学术文献、通过 DOI 批量下载 PDF(Sci-Hub 镜像 + 开放获取兜底)、生成批量获取清单 HTML。

功能总览 · At a glance(中英对照 / Bilingual)

中文English
search_papers:按 DOI 精确查询(Crossref)search_papers: exact DOI lookup via Crossref
按标题/关键词检索(OpenAlex,最多 20 条)Title/keyword search via OpenAlex, up to 20 results
返回标题、作者、期刊、年份、DOI、官方链接Returns title, authors, journal, year, DOI and canonical link

下载 / Download

中文English
download_papers:按 DOI 批量下载 PDFdownload_papers: batch PDF download by DOI
Sci-Hub 优先:遍历 8 个镜像域名,解析 iframe/embed 取直链Sci-Hub first: walks 8 mirrors, resolves the PDF link from iframe/embed
开放获取兜底:Unpaywall 查 OA 免费版本OA fallback: Unpaywall lookup for a free version
PDF 魔数校验(%PDF-)+ 最小体积校验(≥3KB)拦截假文件Magic-byte (%PDF-) and minimum-size (≥3 KB) checks reject bogus files
并发下载(默认 4,上限 8),先写 .part 再原子重命名Concurrent downloads (default 4, max 8), .part then atomic rename
每篇返回状态:ok / scihub-fail / oa-fail / closed-access / no-doiPer-paper status: ok / scihub-fail / oa-fail / closed-access / no-doi
结果写入 _lit_fetch_report.jsonWrites _lit_fetch_report.json into the output directory

清单 / Manifest

中文English
generate_manifest:把拿不到的文献生成可点击清单generate_manifest: clickable list of papers that could not be fetched
输出「批量获取入口.html」,含 DOI 官方链接与状态徽章Emits 批量获取入口.html with DOI links and status badges
提供「顺序打开全部」按钮,逐条间隔 800ms 打开A "open all in order" button opens each link 800 ms apart

宿主路由 / Host route

中文English
注册 /lit-fetch 前缀路由,返回插件存活与版本信息Registers a /lit-fetch prefix route reporting liveness and version

使用方式 · Usage

在 DSH 对话中对 agent 说 / Talk to the agent in a DSH session:

  1. 搜索 · Search:「帮我找关于 static mixer CFD 的文献」→ agent 调用 search_papers
  2. 下载 · Download:「把这些 DOI 下载到 D:\papers\」→ agent 调用 download_papers
  3. 生成清单 · Manifest:「给没下载到的文献生成获取清单」→ agent 调用 generate_manifest

下载策略 · Download strategy

  1. Sci-Hub 优先:遍历 8 个域名(sci-hub.ren / ee / st / ru / se / wf / hk、tesble.com), 解析 iframe/embed 提取 PDF 直链,流式下载并校验 %PDF 魔数。
  2. 开放获取兜底:Sci-Hub 无收录时查 Unpaywall,寻找 OA 免费版本(best_oa_location 优先, 其次遍历 oa_locations)。
  3. 最终兜底:两者均失败 → 记入清单,生成 HTML 供手动获取(向作者索取 / NSTL 文献传递)。

Sci-Hub first — walks the 8 mirrors, resolves the direct PDF link from iframe/embed. OA fallback — Unpaywall when Sci-Hub has nothing. Final fallback — the HTML manifest.

已知限制 · Known limitations

  • Sci-Hub 2021 年后基本停止收录新文献(Elsevier/Wiley/ACS 2021+ 文章大概率无收录)。
  • 直连 Sci-Hub 镜像较慢(Cloudflare 限速),建议开启 VPN/代理后使用。
  • OA 兜底仅查 Unpaywall;某些文献有 arXiv 预印本但 Unpaywall 未收录。
  • Sci-Hub stopped indexing new papers after 2021, and mirror throughput is often throttled. The OA fallback only consults Unpaywall.

安装 · Installation

dsh plugin --profile desktop add dsh-lit-fetch
# 或从本地目录 link
# cp -r dsh-lit-fetch ~/.dsh/local-plugins/

技术细节 · Technical notes

  • 宿主端纯 Node.js,无 Python 依赖 / Host-side pure Node.js, no Python dependency
  • PDF 魔数校验 + 体积校验 / Magic-byte and size validation
  • 流式下载 + 原子落盘(.part → rename)/ Streaming download with atomic rename
  • 并发控制(默认 4,最大 8)/ Bounded concurrency
  • 下载报告 JSON 自动落盘 / Automatic JSON report

License

MIT

Related plugins