API ที่ไม่เป็นทางการสำหรับการดาวน์โหลดเอกสารจาก 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 สามารถติดตั้งได้อย่างง่ายดายด้วย 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 ที่อัปเดตตามเวลาจริง (aka, แหล่งโดเมน SCIHUB) เพื่อรับโดเมน SCIHUB ที่มีอยู่ URL เว็บไซต์ Scihub Domain Source ได้รับการกำหนดค่าในไฟล์ config ทั่วโลกในส่วน [scihub.domain.updater.crawl]
พร้อมคีย์ของ scihub_domain_source
คุณสามารถใช้ scidownl config --location
เพื่อแสดงตำแหน่งของไฟล์ config ทั่วโลกและแก้ไข
; 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 ที่อัปเดตทั้งหมดในพื้นที่ คุณสามารถแสดงรายการโดเมน Scihub ทั้งหมดที่บันทึกไว้ด้วย domain.list
คำสั่ง
$ 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 นี้ คอลัมน์ทั้งสองนี้ใช้เพื่อคำนวณลำดับความสำคัญของการเลือกโดเมน 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.
การใช้ตัวเลือก -d
หรือ --doi
เพื่อดาวน์โหลดเอกสารด้วย doi ตัวเลือก -p
หรือ --pmid
เพื่อดาวน์โหลดเอกสารด้วย pmid และตัวเลือก -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
โดยค่าเริ่มต้นกระดาษที่ดาวน์โหลดจะถูกตั้งชื่อตามชื่อของกระดาษ ด้วยตัวเลือก -o
หรือ --out
, คุณสามารถปรับแต่งตำแหน่งเอาต์พุตของเอกสารที่ดาวน์โหลดได้ WHCIH อาจเป็นเส้นทางที่แน่นอนหรือเส้นทางสัมพัทธ์และ direcotry หรือเส้นทางไฟล์
ส่งออก 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 จะสร้างให้คุณ?
ด้วยตัวเลือก -u
หรือ --scihub-url
คุณสามารถใช้ URL SCIHUB เฉพาะที่คุณต้องการแทนที่จะปล่อยให้ Scidownl เลือกโดยอัตโนมัติสำหรับคุณจากโดเมน Scihub ที่บันทึกไว้ในท้องถิ่น ขอแนะนำให้ให้ Scidownl เลือก URL Scihub ดังนั้นคุณไม่จำเป็นต้องใช้ตัวเลือกนี้ในการใช้งานปกติ
$ 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