██╗ ██╗███╗ ██╗██╗ ██╗██╗ ██╗██████╗ ██║ ██║████╗ ██║██║ ██║██║ ██║██╔══██╗ ██║ ██║██╔██╗ ██║██║ ██║██║ ██║██████╔╝ ╚██╗ ██╔╝██║╚██╗██║██║ ██║██║ ██║██╔══██╗ ╚████╔╝ ██║ ╚████║╚██████╔╝███████╗██║██████╔╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚══════╝╚═╝╚═════╝ ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██║ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗ ██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║██║ ██║ ██║███████║██║ ██║█████╗ ██████╔╝ ██║ ██║██║ ██║██║███╗██║██║╚██╗██║██║ ██║ ██║██╔══██║██║ ██║██╔══╝ ██╔══██╗ ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║███████╗╚██████╔╝██║ ██║██████╔╝███████╗██║ ██║ ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝ Python CLI tool download sách từ VNULIB
- Tải sách (có thể đọc preview online) trên VNULIB (HCM)
Ví dụ: https://ir.vnulib.edu.vn/handle/VNUHCM/8108
- Hỗ trợ link:
book
,preview
,page
? - Hỗ trợ tải nhiều sách (lần lượt từng sách)
- Tải sách - Multithreading?
- Tạo PDF các file sách - Multiprocessing?
- Xoá ảnh sau khi tải (phù hợp khi dùng tạo PDF)
- Chưa có nha chờ kiếp sau
Important
Cần cài đặt trình duyệt Chrome (cần cho Selenium Webdriver)
- Mở tool
- Input
VARIABLE | VALUE | DEFAULT | DESCRIPTION | EXAMPLE |
---|---|---|---|---|
USERNAME |
string |
Username tài khoản | 1500023520000 |
|
PASSWORD |
string |
Password tài khoản | examplePass |
|
LINKS |
string string ... |
Link ảnh trang sách (Có thể nhiều sách, cách nhau bằng khoảng cách) |
link_1 link_2 |
|
TIMEOUT |
int |
20 |
Timeout (s) khi sử dụng Selenium và request lấy mỗi ảnh từ server | 20 |
BROWSER |
chrome ,path/to/local/chrome_driver |
chrome |
Trình duyệt để sử dụng Selenium Webdriver khi có cần xử lý book , preview |
chrome |
HEADLESS ? |
y , n , ... |
y |
Selenium Webdriver headless mode | y |
CREATE_PDF |
y , n , ... |
y |
Tạo file PDF từ các ảnh đã tải về | y |
CLEAN_IMG |
y , n , ... |
y |
Xoá ảnh sau khi đã tạo PDF | y |
Warning
- Vì sử dụng Multithreading, nếu tải quá nhiều sách có thể ảnh hưởng đến server
Important
- Nếu trong tương lai việc sử dụng link
book
haypreview
không được, hãy thử linkpage
(vì các phần tử trang web có thể thay đổi)
Note
- Ảnh và sách sẽ được tải về
./Downloads/
- Kiểm tra log tại
./log/
- Trong quá trình tải ảnh của sách, nếu quá thời gian
TIMEOUT
thì trang sẽ huỷ tải, thay bằng ảnh error
Tip
- Khi có >= 1 link là
book
/preview
: Tool sẽ sử dụng Selenium Webdriver để xử lý, cần phải dùng tài khoản thư viện để login - Trái lại, khi toàn bộ link là
page
: Tool không cần dùng Selenium Webdriver, nênUSERNAME
,PASSWORD
,BROSWER
,HEADLESS
không còn quan trọng (nhập bừa / để trống) page
link: Trong link có query&page=
:1
: Tool sẽ tự động check và tải trang sách đến khi đạt giới hạn (Single thread)- >
1
: Tool tự nhận đấy là limit của file sách hoặc chủ đích sử dụng (Multithreading)
- Có thể chạy tool theo các cách:
Note
Thứ tự ưu tiên giá trị biến: arguments
> config.yml
> user input
- Để không phải nhập input mỗi lần chạy
- Tạo file
config.yml
bằng 1 trong 2 cách:- Chạy trước tool 1 lần sẽ tự tạo file
config.yml
- Copy nội dung của file
config-sample.yml
và paste vào fileconfig.yml
- Chạy trước tool 1 lần sẽ tự tạo file
- Chỉnh
config.yml
- Windows:
.\VNULIB-Downloader-windows.exe --help
- Mac OS:
./VNULIB-Downloader-macos --help
- Linux:
./VNULIB-Downloader-ubuntu --help
- Ví dụ (Windows):
.\VNULIB-Downloader-windows.exe --link "link1" "link2" --username "1500023520000" --password "examplePass" --browser "~/chrome_driver.exe" --headless --create-pdf --clean-imgs
-
Install Python
-
Clone repo
git clone "https://github.com/KevinNitroG/VNULIB-Downloader" --depth 1 --filter=blob:none
-
Create virtual environment (optional)
- Create virtual environment
python -m venv .venv
- Active virtual environment
- For Windows
.venv\Scripts\activate
- For Mac / Linux
source .venv/bin/activate
- For Windows
- Deactive virtual environment
deactivate
- Create virtual environment
-
Install requirements
pip install -r requirements/requirements.txt
-
Run tool
python main.py
Note
Linux / Mac hãy thử pip3
và python3
nếu pip
và python
không chạy
TERM | EXPLANTION | EXAMPLE |
---|---|---|
book |
Link của sách | https://ir.vnulib.edu.vn/handle/VNUHCM/8108 |
preview |
Preview link của sách | https://ir.vnulib.edu.vn/flowpaper/?bitsid=4e5aa1b6-d1fb-4478-9740-ad9a8558ee62 or https://ir.vnulib.edu.vn/flowpaper/simple_document.php?subfolder=69/37/45/&doc=69374546227582323703697992942653251709&bitsid=4e5aa1b6-d1fb-4478-9740-ad9a8558ee62&uid=63a80468-b67g-4ab0-855b-f4df246b123iy |
page |
Link ảnh của 1 trang sách | https://ir.vnulib.edu.vn/flowpaper/services/view.php?doc=69374546227582323703697992942653251709&format=jpg&page=1&subfolder=69/37/45/ |
Selenium Webdriver |
Hỗ trợ automation bằng trình duyệt | - |
headless |
Khi chạy trình duyệt sẽ không hiện ra thành cửa sổ, chỉ ẩn dưới nền | - |
Multithreading |
Đa luồng | - |
Multiprocessing |
Đa xử lý | - |
Note
- Download các ảnh cho lần lượt từng link. 1 link sẽ có nhiều ảnh. Multithreading để tải các ảnh của 1 sách đồng thời (concurrent)
- Merge song song từng folder thành PDF, phụ thuộc vào số nhân CPU (parallel)
TYPE | NAME | NOTE |
---|---|---|
LSP | Pylance / Pyright | Use either Pylance or Pyright |
Linter | Ruff | Include Isort rules |
Formatter | Ruff | ↑ |
Formatter | Prettier | - |
Docstring | - Ex 1 - Ex 2 |
|
Package Manager | Pip | Need specifying dependencies' versions |
Commit message | Gitmoji | I have messed up the commit messages 🥴 |
End of line | LF | - |
Note
Use Google's docstring format with always noting the types of variables even they are in parameters of functions / methods
- Support more browsers (inherited from which class?)
- Options to enable Multithreading, Multiprocessing
- Update tool option using command line arguments
- Merge PDF for book which has multiple files
Cần người có lòng hảo tâm contribute 🫠
Dự án không dưới quyền VNULIB hay bất kì tổ chức nào khác. Dự án chỉ mang tính học tập (thực hành, làm việc nhóm, sử dụng ngôn ngữ lập trình, tổ chức một dự án, sử dụng Git, Github, CI/CD), không có mục đích thương mại, phá hoại (DDOS,...). Xin hãy tuân thủ luật sở hữu trí tuệ, không in ấn có tổ chức,... Chúng tôi không chịu trách nhiệm cho bất kì kết quả và hậu quả nào của việc sử dụng tool.
- Inspired by vnulib_downloader