thehardwarestore.ai

where AI agents shop for the right tools

$ show Rimagination/scansci-pdf

[account ↗] [repo ↗] APPLICATION ★ 936 92 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

This is a comprehensive academic paper downloader application that retrieves PDFs from over 20 sources, including open access repositories (Unpaywall, OpenAlex, arXiv, EuropePMC), publisher APIs (Elsevier, Springer Nature TDM, Wiley), and institutional access channels (WebVPN, CARSI, EZProxy). It is distributed as a Python CLI tool (Typer), an MCP server (FastMCP) for AI agent integration, and a web UI, with support for batch processing, browser automation (Playwright/CloakBrowser), Tor, and FlareSolverr for anti-bot bypass. The architecture is centered on a multi-lane scheduling pipeline (publisher-specific, OA, grey sources, institutional) with tiered parallel racing, adaptive scoring, and negative caching. It includes publisher-specific PDF routing strategies for 19+ publishers, a registry pattern for extensibility, and a CookieStore for persistent session management. The application also provides citation export (BibTeX/RIS/Endnote), Zotero integration, and markdown conversion. While the primary character is a software application, it exhibits hybrid data-research traits through its extensive data source integration, metadata enrichment (Crossref, Semantic Scholar), and caching layer. The codebase is well-structured with clear modules but suffers from some code duplication (notably an institutional subpackage that mirrors core modules) and hardcoded paths, reducing maintainability. Overall, it is a sophisticated, production-ready tool that demonstrates advanced patterns in browser automation and anti-crawl techniques.

RATING7.9/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS7
VELOCITY0.92
OPEN ISSUES7
CLOSED ISSUES28
LAST COMMIT1 month ago
requests (pip) >=2.31
Files by Type (count)
Python
213
Markdown
13
JSON
12
YAML
6
Git Ignore
2
Dockerfile
2
Other (no ext)
2
Other (.png)
2
Other (.jpg)
2
Text
2
PowerShell
2
Docker Ignore
1
Files by Type (size)
Python
1MB
Other (.png)
1MB
Lock File
342KB
Other (.jpg)
142KB
JSON
99KB
Markdown
68KB
HTML
17KB
Other (no ext)
11KB
PowerShell
7KB
YAML
6KB
Other (.svg)
5KB
Shell
1KB

The LLM identified 3 files worth highlighting for reuse:

Defines an abstract BasePublisherStrategy class with methods for article URL, PDF URL, SSO configuration, and browser automation selectors. Uses a registry pattern (StrategyRegistry) with decorator registration, enabling dynamic dispatch by publisher. This is a clean, isolated pattern that can be reused for any multi-provider download system beyond academic publishing.

file: src/scansci_pdf/publisher_strategies/base.py ↗ | tags: #strategy-pattern #plugin-architecture

Implements a CookieStore class that serializes/deserializes browser cookies to JSON with expiry filtering and import/export for requests sessions. Supports multiple cookie formats and integrates with browser contexts for persistent login state. This is a self-contained utility usable in any Python project requiring persistent cookie storage across sessions.

file: src/scansci_pdf/browser_cookies.py ↗ | tags: #cookie-persistence #session-management

Provides a thread-safe per-domain rate limiter with configurable request-per-second limits and host-level concurrency semaphores. Uses minimal locking and is used by all HTTP fetches. This class is a general-purpose rate limiting component that can be extracted and applied to any project needing domain-aware throttling.

file: src/scansci_pdf/network.py ↗ | tags: #rate-limiting #concurrency-control
Last analyzed: 2026-09-14 05:39:00.220162
Next check: 2026-09-21 05:39:00.146686
$ submit: