API tidak resmi untuk mengunduh kertas dari 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 dapat dengan mudah dipasang dengan 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.
Ada 2 mode pembaruan yang dapat Anda tentukan dengan opsi: -m
atau --mode
crawl
: [Default] Merangkak situs web Domain Scihub yang diperbarui waktu-nyata (alias, sumber domain scihub) untuk mendapatkan domain scihub yang tersedia. URL situs web SCIHUB Domain Source dikonfigurasi dalam file konfigurasi global di bagian [scihub.domain.updater.crawl]
dengan kunci scihub_domain_source
. Anda dapat menggunakan scidownl config --location
untuk menunjukkan lokasi file konfigurasi global dan mengeditnya.
; Global config file: global.ini
; ...
[scihub.domain.updater.crawl]
scihub_domain_source = http://tool.yovisun.com/scihub
; ...
Contoh menggunakan mode 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
: Hasilkan kombinasi sesuai dengan aturan domain scihub dan cari domain scihub yang tersedia. Ini akan memakan waktu lebih lama dari mode crawl
.
Contoh menggunakan mode 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 Gunakan SQLite sebagai database lokal untuk menyimpan semua domain scihub yang diperbarui secara lokal. Anda dapat mendaftarkan semua domain scihub yang disimpan dengan domain.list
perintah.
$ 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 |
+--------------------+----------------+---------------+
Selain kolom URL yang mudah dipahami, kolom SuccessTimes
digunakan untuk merekam jumlah unduhan kertas yang berhasil menggunakan URL ini, dan kolom FailedTimes
digunakan untuk merekam jumlah unduhan kertas yang gagal menggunakan URL ini. Kedua kolom ini digunakan untuk menghitung prioritas memilih domain scihub saat mengunduh kertas.
$ 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.
Menggunakan opsi -d
atau --doi
untuk mengunduh kertas dengan doi, opsi -p
atau --pmid
untuk mengunduh kertas dengan pmid, dan opsi -t
atau --title
untuk mengunduh kertas dengan judul. Anda dapat menentukan opsi ini untuk beberapa kali, dan bahkan mencampurnya.
# 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
Secara default, kertas yang diunduh dinamai oleh judul kertas. Dengan opsi -o
atau --out
, Anda dapat menyesuaikan lokasi output dari makalah yang diunduh, yang bisa menjadi jalur absolut atau jalur relatif, dan direcotry atau jalur file.
Output PAEPR ke direktori:
$ 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.
Keluarkan kertas dengan jalur file.
$ 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
Perhatikan bahwa jika ada lebih dari satu makalah yang akan diunduh, nilai opsi --out
akan selalu dianggap sebagai direktori, bukan jalur file.
$ scidownl download --pmid 31395057 --pmid 24686414 --out paper
# will be downloaded to ./paper/ directory:
# ./paper/<paper-title-1>.pdf
# ./paper/<paper-title-2>.pdf
Jika beberapa direktori dalam opsi tidak ada, Scidownl akan membuatnya untuk Anda?
Dengan opsi -u
atau --scihub-url
, Anda dapat menggunakan URL scihub spesifik yang Anda inginkan, daripada membiarkan Scidownl secara otomatis memilih satu untuk Anda dari domain scihub yang disimpan lokal. Disarankan untuk membiarkan Scidownl memilih URL scihub, jadi Anda tidak perlu menggunakan opsi ini secara normal.
$ scidownl download --pmid 31395057 --scihub-url http://sci-hub.se
Anda dapat menggunakan fungsi scihub_download
untuk mengunduh kertas.
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 )
Lebih banyak contoh dapat dilihat dalam contoh.
Hak Cipta (C) 2022 Tishacy.
Berlisensi di bawah lisensi MIT.