Scihubから論文をダウンロードするための非公式API。
# 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は、PIPで簡単にインストールできます。
$ 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.
オプションで指定できる2つの更新モードがあります: -m
または--mode
crawl
:[デフォルト]リアルタイムの更新されたSCIHUBドメインWebサイト(別名、Scihubドメインソース)をクローリングして、利用可能なSCIHUBドメインを取得します。 SCIHUBドメインソースWebサイトURLは、 scihub_domain_source
のキーを使用して[scihub.domain.updater.crawl]
セクションのグローバル構成ファイルで構成されています。 scidownl config --location
を使用して、グローバル構成ファイルの場所を表示して編集できます。
; Global config file: global.ini
; ...
[scihub.domain.updater.crawl]
scihub_domain_source = http://tool.yovisun.com/scihub
; ...
crawl
モードを使用する例:
$ 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
:SCIHUBドメインのルールに従って組み合わせを生成し、利用可能なSCIHUBドメインを検索します。これにはcrawl
モードよりも時間がかかります。
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はSQLiteをローカルデータベースとして使用して、更新されたすべてのSCIHUBドメインをローカルに保存します。 Command domain.list
を使用して、保存されたすべてのscihubドメインをリストできます。
$ 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 |
+--------------------+----------------+---------------+
わかりやすいURL列に加えて、 SuccessTimes
列を使用して、このURLを使用して成功した紙のダウンロードの数を記録し、 FailedTimes
列を使用して、このURLを使用して失敗した紙のダウンロードの数を記録します。これらの2つの列は、論文をダウンロードするときにScihubドメインを選択する優先順位を計算するために使用されます。
$ 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.
option -d
または--doi
を使用して、doi、option -p
または--pmid
を使用して論文をダウンロードして、pmidを使用したペーパーをダウンロードし、option -t
または--title
タイトルのあるペーパーをダウンロードするタイトルをダウンロードします。これらのオプションを複数回指定し、さらにはそれらを組み合わせることができます。
# 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
デフォルトでは、ダウンロードされた論文の名前は論文のタイトルで命名されています。 Option -o
または--out
使用すると、ダウンロードされた論文の出力場所をカスタマイズできます。WHCIHは、絶対的なパスまたは相対パス、および監督またはファイルパスになる可能性があります。
PAEPRをディレクトリに出力します。
$ 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.
ファイルパスでペーパーを出力します。
$ 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
ダウンロードする論文が複数ある場合、 --out
オプションの値は、ファイルパスではなく、常にディレクトリと見なされることに注意してください。
$ scidownl download --pmid 31395057 --pmid 24686414 --out paper
# will be downloaded to ./paper/ directory:
# ./paper/<paper-title-1>.pdf
# ./paper/<paper-title-2>.pdf
オプションの一部のディレクトリが存在しない場合、Scidownlはそれらを作成しますか?
option -u
または--scihub-url
を使用すると、Scidownlがローカル保存されたScihubドメインから自動的に1つを選択できるようにするのではなく、必要な特定のScihub URLを使用できます。 ScidownlにScihub URLを選択させることをお勧めします。そのため、通常の使用でこのオプションを使用する必要はありません。
$ scidownl download --pmid 31395057 --scihub-url http://sci-hub.se
scihub_download
関数を使用して、論文をダウンロードできます。
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 )
より多くの例を例で見ることができます。
著作権(c)2022 Tishacy。
MITライセンスに基づいてライセンスされています。