Eine inoffizielle API zum Herunterladen von Papieren von Scihub.
# Download with a DOI and filenmae is the paper's title.
$ scidownl download --doi https://doi.org/10.1145/3375633
# Download with a PMID and a user-defined filepath
$ scidownl download --pmid 31395057 --out ./paper/paper-1.pdf
# Download with a title
$ scidownl download --title " ImageNet Classification with Deep Convolutional Neural Networks " --out ./paper/paper-1.pdf
# Download with a proxy: SCHEME=PROXY_ADDRESS
$ scidownl download --pmid 31395057 --out ./paper/paper-1.pdf --proxy http=socks5://127.0.0.1:7890
Scidownl könnte einfach mit PIP installiert werden.
$ pip3 install -U scidownl
$ git clone https://github.com/Tishacy/SciDownl.git
$ cd Scidownl && python3 setup.py install
$ scidownl -h
Usage: scidownl [OPTIONS] COMMAND [ARGS]...
Command line tool to download pdfs from Scihub.
Options:
-h, --help Show this message and exit.
Commands:
config Get global configs.
domain.list List available SciHub domains in local db.
domain.update Update available SciHub domains and save them to local db.
download Download paper(s) by DOI or PMID.
$ scidownl domain.update --help
Usage: scidownl domain.update [OPTIONS]
Update available SciHub domains and save them to local db.
Options:
-m, --mode TEXT update mode, could be ' crawl ' or ' search ' , default mode is
' crawl ' .
-h, --help Show this message and exit.
Es gibt 2 Aktualisierungsmodi, die Sie mit einer Option angeben können: -m
oder --mode
crawl
: [Standard] Crawling Die Echtzeit aktualisierte SciHub-Domains-Website (AKA, SciHub Domain Source), um SCIHub-Domänen verfügbar zu erhalten. Die URL der SciHub Domain Source -Website ist in der globalen Konfigurationsdatei im Abschnitt [scihub.domain.updater.crawl]
mit dem Schlüssel von scihub_domain_source
konfiguriert. Sie können scidownl config --location
verwenden, um den Speicherort der globalen Konfigurationsdatei anzuzeigen und zu bearbeiten.
; Global config file: global.ini
; ...
[scihub.domain.updater.crawl]
scihub_domain_source = http://tool.yovisun.com/scihub
; ...
Ein Beispiel für die Verwendung des crawl
-Modus:
$ scidownl domain.update --mode crawl
[INFO] | 2022/03/07 21:07:50 | Found 6 valid SciHub domains in total: [ ' http://sci-hub.ru ' , ' http://sci-hub.se ' , ' https://sci-hub.ru ' , ' https://sci-hub.st ' , ' http://sci-hub.st ' , ' https://sci-hub.se ' ]
[INFO] | 2022/03/07 21:07:50 | Saved 6 SciHub domains to local db.
search
: Generieren Sie Kombinationen gemäß den Regeln der SciHub -Domänen und suchen Sie nach verfügbaren SciHub -Domänen. Dies dauert länger als crawl
-Modus.
Ein Beispiel für die Verwendung der search
:
$ scidownl domain.update --mode search
[INFO] | 2022/03/07 21:08:44 | # Search valid SciHub domains from 1352 urls
[INFO] | 2022/03/07 21:08:48 | # Found a SciHub domain url: https://sci-hub.ru
[INFO] | 2022/03/07 21:08:48 | # Found a SciHub domain url: https://sci-hub.st
...
[INFO] | 2022/03/07 21:09:04 | Found 6 valid SciHub domains in total: [ ' https://sci-hub.ru ' , ' https://sci-hub.st ' , ...]
[INFO] | 2022/03/07 21:09:04 | Saved 6 SciHub domains to local db.
Scidownl Verwenden Sie SQLite als lokale Datenbank, um alle aktualisierten SciHub -Domänen lokal zu speichern. Sie können alle gespeicherten SciHub -Domänen mit der domain.list
auflisten.
$ scidownl domain.list
+--------------------+----------------+---------------+
| Url | SuccessTimes | FailedTimes |
| --------------------+----------------+--------------- |
| http://sci-hub.ru | 0 | 0 |
| https://sci-hub.ru | 0 | 0 |
| https://sci-hub.st | 0 | 0 |
| http://sci-hub.st | 0 | 0 |
| https://sci-hub.se | 0 | 0 |
| http://sci-hub.se | 0 | 0 |
+--------------------+----------------+---------------+
Zusätzlich zur leicht verständlichen URL-Spalte wird die Spalte SuccessTimes
verwendet, um die Anzahl erfolgreicher Papier-Downloads mit dieser URL aufzunehmen, und die Spalte FailedTimes
wird verwendet, um die Anzahl der fehlgeschlagenen Papier-Downloads mit dieser URL aufzuzeichnen. Diese beiden Spalten werden verwendet, um die Priorität der Auswahl einer SciHub -Domäne beim Herunterladen von Papieren zu berechnen.
$ scidownl download --help
Usage: scidownl download [OPTIONS]
Download paper(s) by DOI or PMID.
Options:
-d, --doi TEXT DOI string. Specifying multiple DOIs is supported,
e.g., --doi FIRST_DOI --doi SECOND_DOI ...
-p, --pmid INTEGER PMID numbers. Specifying multiple PMIDs is supported,
e.g., --pmid FIRST_PMID --pmid SECOND_PMID ...
-t, --title TEXT Title string. Specifying multiple titles is
supported, e.g., --title FIRST_TITLE --title
SECOND_TITLE ...
-o, --out TEXT Output directory or file path, which could be an
absolute path or a relative path. Output directory
examples: /absolute/path/to/download/,
./relative/path/to/download/, Output file examples:
/absolute/dir/paper.pdf, ../relative/dir/paper.pdf.
If --out is not specified, paper will be downloaded
to the current directory with the file name of the
paper's title. If multiple DOIs or multiple PMIDs are
provided, the --out option is always considered as
the output directory, rather than the output file
path.
-u, --scihub-url TEXT Scihub domain url. If not specified, automatically
choose one from local saved domains. It's recommended
to leave this option empty.
-h, --help Show this message and exit.
Verwenden von Option -d
oder --doi
zum Herunterladen von Papieren mit DOI, Option -p
oder --pmid
zum Herunterladen von Papieren mit PMID und Option -t
oder --title
zum Herunterladen von Papieren mit Titeln. Sie können diese Optionen mehrmals angeben und sogar mischen.
# with a single DOI
$ scidownl download --doi https://doi.org/10.1145/3375633
# with multiple DOIs
$ scidownl download --doi https://doi.org/10.1145/3375633 --doi https://doi.org/10.1145/2785956.2787496
# with a single PMID
$ scidownl download --pmid 31395057
# with multiple PMIDs
$ scidownl download --pmid 31395057 --pmid 24686414
# with a single title
$ scidownl download --title " ImageNet Classification with Deep Convolutional Neural Networks "
# with multiple titles
$ scidownl download --title " ImageNet Classification with Deep Convolutional Neural Networks " --title " Aggregated residual transformations for deep neural networks "
# with a mix of DOIs and PMIDs
$ scidownl download --doi https://doi.org/10.1145/3375633 --pmid 31395057 --pmid 24686414
Standardmäßig wird das heruntergeladene Papier vom Titel der Zeitung benannt. Mit Option -o
oder --out
, können Sie den Ausgangsort von heruntergeladenen Papieren anpassen. WHCIH könnte ein absoluter Pfad oder ein relativer Pfad und ein Direcotry oder ein Dateipfad sein.
Ausgabe der PAEPR in ein Verzeichnis:
$ scidownl download --pmid 31395057 --out /absolute/path/of/a/directory/
# NOTE that the '/' at the end of the directory path is required, otherwise the last segment will be treated as the filename rather than a directory.
$ scidownl download --pmid 31395057 --out ../relative/path/of/a/directory/
# The '/' at the end of the directory path is required too.
Ausgabe des Papiers mit dem Dateipfad.
$ scidownl download --pmid 31395057 --out /absolute/dir/paper.pdf
$ scidownl download --pmid 31395057 --out ../relative/dir/paper.pdf
$ scidownl download --pmid 31395057 --out relative/dir/paper.pdf
$ scidownl download --pmid 31395057 --out paper # will be downlaoded as ./paper.pdf
Beachten Sie , dass der Wert der Option --out
immer mehr als ein Verzeichnis und nicht als Dateipfad betrachtet wird, wenn mehr als ein Papiere heruntergeladen werden müssen.
$ scidownl download --pmid 31395057 --pmid 24686414 --out paper
# will be downloaded to ./paper/ directory:
# ./paper/<paper-title-1>.pdf
# ./paper/<paper-title-2>.pdf
Wenn einige Verzeichnisse in der Option nicht vorhanden sind, erstellt Scidownl sie für Sie?
Mit der Option -u
oder --scihub-url
können Sie eine bestimmte SciHub -URL verwenden, die Sie möchten, anstatt Scidownl automatisch für Sie aus lokalen gespeicherten SciHub -Domänen auszuwählen. Es wird empfohlen, Scidownl eine SciHub -URL auszuwählen, sodass Sie diese Option bei normalem Gebrauch nicht verwenden müssen.
$ scidownl download --pmid 31395057 --scihub-url http://sci-hub.se
Sie können die scihub_download
-Funktion verwenden, um Papiere herunterzuladen.
from scidownl import scihub_download
paper = "https://doi.org/10.1145/3375633"
paper_type = "doi"
out = "./paper/one_paper.pdf"
proxies = {
'http' : 'socks5://127.0.0.1:7890'
}
scihub_download ( paper , paper_type = paper_type , out = out , proxies = proxies )
Weitere Beispiele sind in Beispielen zu sehen.
Copyright (C) 2022 Tishacy.
Lizenziert unter der MIT -Lizenz.