From 008e4ebd7ae09533da5cb9681e3834040d0f229c Mon Sep 17 00:00:00 2001 From: lapwat Date: Sun, 2 Jan 2022 14:58:55 +0100 Subject: [PATCH] feat: quiet option --- README.md | 5 +++-- book/scraper.go | 28 ++++++++++++++++++---------- cmd/get.go | 2 +- cmd/root.go | 1 + cmd/version.go | 2 +- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c7db758..55bbe6b 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Flags: -n, --name string book name (default: page title) -o, --offset int skip first chapters, in recursive mode --output string file name (default: book name) + -q, --quiet hide progress bar -r, --recursive create one chapter per natigation item -s, --selector string table of content CSS selector, in resursive mode -t, --threads int download concurrency, in recursive mode (default -1) @@ -111,7 +112,7 @@ go get -u github.com/lapwat/papeer ```sh platform=linux # use platform=darwin for MacOS -release=0.3.2 +release=0.3.3 curl -L https://github.com/lapwat/papeer/releases/download/v$release/papeer-v$release-$platform-amd64 > papeer chmod +x papeer sudo mv papeer /usr/local/bin @@ -119,7 +120,7 @@ sudo mv papeer /usr/local/bin ### On Windows -Download [latest release](https://github.com/lapwat/papeer/releases/download/v0.3.2/papeer-v0.3.2-windows-amd64.exe). +Download [latest release](https://github.com/lapwat/papeer/releases/download/3/papeer-v0.3.3-windows-amd64.exe). ## Install kindlegen to export websites to MOBI (optional) diff --git a/book/scraper.go b/book/scraper.go index 753c1ff..0d34a95 100644 --- a/book/scraper.go +++ b/book/scraper.go @@ -76,7 +76,7 @@ func NewScrapeConfigFake() *ScrapeConfig { return config } -func NewBookFromURL(url, selector, name, author string, recursive, include, imagesOnly bool, limit, offset, delay, threads int) book { +func NewBookFromURL(url, selector, name, author string, recursive, include, imagesOnly, quiet bool, limit, offset, delay, threads int) book { config1 := NewScrapeConfig() config1.imagesOnly = imagesOnly @@ -92,7 +92,7 @@ func NewBookFromURL(url, selector, name, author string, recursive, include, imag config2.threads = threads config2.include = include config2.imagesOnly = imagesOnly - chapters, home = tableOfContent(url, config2, config1) + chapters, home = tableOfContent(url, config2, config1, quiet) } else { chapters = []chapter{NewChapterFromURL(url, []*ScrapeConfig{config1}, 0, func(index int, name string) {})} home = chapters[0] @@ -240,7 +240,7 @@ func NewChapterFromURL(url string, configs []*ScrapeConfig, index int, updatePro return chapter{string(body), name, article.Byline, content, subchapters, config} } -func tableOfContent(url string, config *ScrapeConfig, subConfig *ScrapeConfig) ([]chapter, chapter) { +func tableOfContent(url string, config *ScrapeConfig, subConfig *ScrapeConfig, quiet bool) ([]chapter, chapter) { base, err := urllib.Parse(url) if err != nil { log.Fatal(err) @@ -252,9 +252,13 @@ func tableOfContent(url string, config *ScrapeConfig, subConfig *ScrapeConfig) ( } chapters := make([]chapter, len(links)) - // progress := NewProgress(links, "", 0) delay := config.delay + var p progress + if quiet == false { + p = NewProgress(links, "", 0) + } + if delay >= 0 { // synchronous mode @@ -265,9 +269,11 @@ func tableOfContent(url string, config *ScrapeConfig, subConfig *ScrapeConfig) ( log.Fatal(err) } - sc := NewChapterFromURL(u.String(), []*ScrapeConfig{subConfig}, 0, func(index int, name string) {}) - chapters[index] = sc - // progress.Increment(index) + chapters[index] = NewChapterFromURL(u.String(), []*ScrapeConfig{subConfig}, 0, func(index int, name string) {}) + + if quiet == false { + p.Increment(index) + } // short sleep for last chapter to let the progress bar update if index == len(links)-1 { @@ -301,9 +307,11 @@ func tableOfContent(url string, config *ScrapeConfig, subConfig *ScrapeConfig) ( log.Fatal(err) } - sc := NewChapterFromURL(u.String(), []*ScrapeConfig{subConfig}, 0, func(index int, name string) {}) - chapters[index] = sc - // progress.Increment(index) + chapters[index] = NewChapterFromURL(u.String(), []*ScrapeConfig{subConfig}, 0, func(index int, name string) {}) + + if quiet == false { + p.Increment(index) + } <-semaphore }(index, l) diff --git a/cmd/get.go b/cmd/get.go index df1c99a..cdbfef8 100644 --- a/cmd/get.go +++ b/cmd/get.go @@ -73,7 +73,7 @@ var getCmd = &cobra.Command{ }, Run: func(cmd *cobra.Command, args []string) { url := args[0] - b := book.NewBookFromURL(url, selector, name, author, recursive, include, images, limit, offset, delay, threads) + b := book.NewBookFromURL(url, selector, name, author, recursive, include, images, quiet, limit, offset, delay, threads) fakeConfig := book.NewScrapeConfigFake() fakeChapter := book.NewChapter("", b.Name(), b.Author(), "", b.Chapters(), fakeConfig) diff --git a/cmd/root.go b/cmd/root.go index 970bcff..517429e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -31,6 +31,7 @@ func init() { rootCmd.PersistentFlags().BoolVarP(&recursive, "recursive", "r", false, "create one chapter per natigation item") rootCmd.PersistentFlags().BoolVarP(&include, "include", "i", false, "include URL as first chapter, in resursive mode") rootCmd.PersistentFlags().BoolVarP(&images, "images", "", false, "retrieve images only") + rootCmd.PersistentFlags().BoolVarP(&quiet, "quiet", "q", false, "hide progress bar") rootCmd.PersistentFlags().IntVarP(&limit, "limit", "l", -1, "limit number of chapters, in recursive mode") rootCmd.PersistentFlags().IntVarP(&offset, "offset", "o", 0, "skip first chapters, in recursive mode") rootCmd.PersistentFlags().IntVarP(&delay, "delay", "d", -1, "time to wait before downloading next chapter, in milliseconds") diff --git a/cmd/version.go b/cmd/version.go index d1b85a6..612dc86 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -14,6 +14,6 @@ var versionCmd = &cobra.Command{ Use: "version", Short: "Print the version number of papeer", Run: func(cmd *cobra.Command, args []string) { - fmt.Println("papeer v0.3.2") + fmt.Println("papeer v0.3.3") }, }