mirror of
https://github.com/bestnite/bilinovel-downloader.git
synced 2025-10-26 09:11:01 +00:00
feat: Add concurrency and headless options for downloads
This commit introduces new features for controlling the download process: - **Concurrency**: Users can now specify the number of concurrent volume downloads using the `--concurrency` flag. This significantly speeds up the download of entire novels. - **Headless Mode**: A `--headless` flag has been added to control whether the browser operates in headless mode (without a visible UI). This is useful for debugging or running in environments without a display. **Changes include:** - Updated `download` command to accept `--concurrency` and `--headless` flags. - Refactored `bilinovel` downloader to support `BilinovelNewOption` for configuring headless mode and concurrency. - Implemented a page pool and concurrency control mechanism within the `bilinovel` downloader to manage concurrent browser page usage. - Added `DownloadNovel` and `DownloadVolume` methods to the `bilinovel` downloader, utilizing goroutines and wait groups for parallel processing. - Updated `.vscode/launch.json` with new configurations for testing novel and volume downloads with the new options.
This commit is contained in:
@@ -8,12 +8,12 @@ import (
|
||||
)
|
||||
|
||||
func TestBilinovel_GetNovel(t *testing.T) {
|
||||
bilinovel, err := bilinovel.New()
|
||||
bilinovel, err := bilinovel.New(bilinovel.BilinovelNewOption{Headless: false, Concurrency: 5})
|
||||
bilinovel.SetTextOnly(true)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create bilinovel: %v", err)
|
||||
}
|
||||
novel, err := bilinovel.GetNovel(4519, false)
|
||||
novel, err := bilinovel.GetNovel(2727, false, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to get novel: %v", err)
|
||||
}
|
||||
@@ -25,12 +25,12 @@ func TestBilinovel_GetNovel(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestBilinovel_GetVolume(t *testing.T) {
|
||||
bilinovel, err := bilinovel.New()
|
||||
bilinovel, err := bilinovel.New(bilinovel.BilinovelNewOption{Headless: false, Concurrency: 1})
|
||||
bilinovel.SetTextOnly(true)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create bilinovel: %v", err)
|
||||
}
|
||||
volume, err := bilinovel.GetVolume(1410, 52748, false)
|
||||
volume, err := bilinovel.GetVolume(2727, 129092, false)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to get volume: %v", err)
|
||||
}
|
||||
@@ -42,12 +42,12 @@ func TestBilinovel_GetVolume(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestBilinovel_GetChapter(t *testing.T) {
|
||||
bilinovel, err := bilinovel.New()
|
||||
bilinovel, err := bilinovel.New(bilinovel.BilinovelNewOption{Headless: false, Concurrency: 1})
|
||||
bilinovel.SetTextOnly(true)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create bilinovel: %v", err)
|
||||
}
|
||||
chapter, err := bilinovel.GetChapter(3095, 154930, 154933)
|
||||
chapter, err := bilinovel.GetChapter(2727, 129092, 129094)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to get chapter: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user