Công cụ tải web novel từ Valvrare Team (Asynchronous & Optimized)
Project description
Web Novel Scraper
Mô tả dự án
Dự án Web Novel Scraper là một công cụ được viết bằng Python để tải và lưu các bộ truyện từ trang web Valvrare Team dưới dạng file PDF và/hoặc EPUB. Công cụ này sử dụng các thư viện như playwright, BeautifulSoup, ebooklib, và reportlab để thu thập nội dung (bao gồm văn bản và hình ảnh minh họa) từ các chương truyện, sau đó tạo file đầu ra theo định dạng người dùng chọn.
Tính năng
- Tìm kiếm truyện trực tiếp (Live Search): Tìm kiếm truyện ngay trong terminal với gợi ý thời gian thực khi nhập (từ 3 ký tự). Tự động xác định slug chính xác từ tên truyện.
- Tải nội dung song song: Hỗ trợ tải nhiều chương cùng lúc với số lượng tác vụ song song tùy chỉnh.
- Hỗ trợ Metadata chuyên sâu (Genres/Tags): Tự động trích xuất thể loại và nhúng vào metadata của file EPUB (
DC:subject), giúp quản lý thư viện (ví dụ: trên Calibre) dễ dàng hơn. - Tiêu đề chương nguyên bản: Sử dụng tiêu đề thực tế từ website thay vì slug URL, giúp tên file và mục lục rõ ràng, dễ đọc.
- Vượt rào cản (Session Capture): Hỗ trợ lấy session thủ công qua trình duyệt (non-headless) để vượt qua Cloudflare hoặc truy cập các chương yêu cầu đăng nhập.
- Định dạng đầu ra: Lưu nội dung dưới dạng PDF, EPUB, hoặc các định dạng khác.
- Ghi log lỗi: Lưu danh sách các chương bị lỗi vào file
cac_chuong_da_bo_qua.txt. - Tự động sắp xếp files: Tự động tạo và sắp xếp các file chương(chapter) vào các thư mục tập(volume) với tên file đã được chuẩn hóa nhưng vẫn giữ nguyên tiếng Việt.
Yêu cầu cài đặt
Để chạy dự án, bạn cần cài đặt Python 3.8+ và các thư viện sau:
-Cách 1: Cài đặt thủ công
pip install -r requirements.txt
Cài đặt trình duyệt Playwright (chromium-headless-shell):
playwright install chromium-headless-shell
Font hỗ trợ tiếng Việt (nếu tải PDF):
- DejaVuSans (mặc định): Tự động tải xuống khi cần.
- NotoSerif: Tự động tải xuống khi cần.
- Nếu muốn dùng font có sẵn, đặt file font (.ttf) vào cùng thư mục với mã nguồn.
-Cách 1: Sử dụng file cài đặt tự động
Chạy file install.bat (Windows) hoặc install.sh (Linux/macOS) để tự động cài đặt các thư viện cần thiết trong môi trường ảo (venv) và trình duyệt Playwright.
-Cách 2: Sử dụng file setup.sh (Linux/macOS) - Khuyến nghị
File setup.sh cung cấp các tính năng nâng cao:
- Tạo môi trường ảo sử dụng
uv(nếu có) hoặcvenvmặc định - Cài đặt dependencies từ
requirements.txt - Cài đặt trình duyệt Playwright
- Thêm alias
vvrtvào shell config (bash/zsh) để chạy scraper từ bất kỳ đâu - Hỗ trợ chạy kiểm thử (pytest) sau khi cài đặt
chmod +x setup.sh
./setup.sh
Lưu ý: Alias vvrt có thể không hoạt động ngay lập tức. Nếu lệnh vvrt không được nhận diện, hãy chạy lệnh source ~/.bashrc (bash) hoặc source ~/.zshrc (zsh) hoặc khởi động lại terminal.
Sau khi cài đặt, bạn có thể chạy scraper bằng lệnh vvrt từ bất kỳ thư mục nào.
Xử lý Cloudflare và Đăng nhập
Valvrare Team đã áp dụng các biện pháp bảo vệ (Cloudflare, JWT tokens). Công cụ này hỗ trợ chế độ Dynamic Session Capture để vượt qua các rào cản này:
--login: Khi chạy lệnh này, một trình duyệt thực (không ẩn danh) sẽ mở ra. Bạn hãy thực hiện đăng nhập trên trình duyệt đó. Sau khi hoàn tất và thấy nội dung truyện, hãy quay lại terminal và nhấn Enter.- Lưu Session: Thông tin đăng nhập (cookies, local storage) sẽ được lưu vào file ẩn
.vvr_session.json. Các lần chạy sau sẽ tự động sử dụng session này mà không cần đăng nhập lại. --refresh-session: Sử dụng khi session cũ đã hết hạn và bạn cần đăng nhập lại để lấy session mới.--verbose: Hiển thị log chi tiết về các request, bao gồm cookies và headers. Rất hữu ích để kiểm tra xem session có được áp dụng đúng hay không.
Ví dụ:
python scraper.py "ten-truyen" --login --verbose
Cảnh báo: Không chia sẻ log khi dùng --verbose lên mạng hoặc cho người lạ vì nó chứa session token cá nhân của bạn.
Cách sử dụng
Phương pháp 1: Sử dụng Python trực tiếp
python scraper.py
Phương pháp 2: Sử dụng alias vvrt (sau khi chạy setup.sh)
vvrt
Sau đó làm theo hướng dẫn trong terminal.
Lưu ý
- Đảm bảo kết nối internet ổn định để tải nội dung và hình ảnh.
- Một số chương có thể bị bỏ qua nếu gặp lỗi tải (xem file
cac_chuong_da_bo_qua.txt). - Font tiếng Việt sẽ tự động tải xuống khi cần.
- Tôn trọng quyền tác giả và chỉ sử dụng nội dung tải về cho mục đích cá nhân.
Loi thuong gap
- After running
setup.py: can not runvvrtcommand not found -> manualy add alias to your shell config
# Bash/Zsh
alias vvrt='path-to-your-python path-to-scraper.py'
# Other shell
Giấy phép
Dự án này được phát hành dưới Giấy phép MIT. Xem file LICENSE để biết thêm chi tiết.
Liên hệ
Nếu bạn có câu hỏi hoặc góp ý, vui lòng liên hệ qua email: notthanhtung@gmail.com hoặc mở issue trên repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vvr_scraper-1.1.0.tar.gz.
File metadata
- Download URL: vvr_scraper-1.1.0.tar.gz
- Upload date:
- Size: 29.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56e104f429b41f658e815f4f8015e637ae0395c79378a0cf18bd3e9f234e2556
|
|
| MD5 |
f3e16530337a35d9c46c9b9315cf0321
|
|
| BLAKE2b-256 |
103b4208007bd62dfae4b5e25b77ff814921a8d622516dbbe19c54e3155e0385
|
File details
Details for the file vvr_scraper-1.1.0-py3-none-any.whl.
File metadata
- Download URL: vvr_scraper-1.1.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5b32ea0f3780861332568f627b7818b5769575d3e96d05d2c1ee35ce4ef7aa3
|
|
| MD5 |
fada49d859d8d4b65077b8e300e8ab32
|
|
| BLAKE2b-256 |
dbece5263c613887f3255a45a1a27731b60af43ee978893c933b5fe109aa0fda
|