Skip to main content

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ặc venv mặc định
  • Cài đặt dependencies từ requirements.txt
  • Cài đặt trình duyệt Playwright
  • Thêm alias vvrt và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:

  1. --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.
  2. 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.
  3. --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.
  4. --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 run vvrt command 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vvr_scraper-1.1.0.tar.gz (29.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vvr_scraper-1.1.0-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

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

Hashes for vvr_scraper-1.1.0.tar.gz
Algorithm Hash digest
SHA256 56e104f429b41f658e815f4f8015e637ae0395c79378a0cf18bd3e9f234e2556
MD5 f3e16530337a35d9c46c9b9315cf0321
BLAKE2b-256 103b4208007bd62dfae4b5e25b77ff814921a8d622516dbbe19c54e3155e0385

See more details on using hashes here.

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

Hashes for vvr_scraper-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5b32ea0f3780861332568f627b7818b5769575d3e96d05d2c1ee35ce4ef7aa3
MD5 fada49d859d8d4b65077b8e300e8ab32
BLAKE2b-256 dbece5263c613887f3255a45a1a27731b60af43ee978893c933b5fe109aa0fda

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page