From 80b337fe187273f14fcb06260f1f461f462b7c7e Mon Sep 17 00:00:00 2001 From: Alessandro De Angelis Date: Sun, 6 Feb 2022 12:45:25 +0100 Subject: [PATCH] Fixes for mangadex and option range --- Makefile | 8 +++---- go.mod | 37 ++++++++++++++++++------------ go.sum | 37 ++++++++++++++++++++---------- internal/flag/parser/range.go | 4 ---- internal/flag/parser/range_test.go | 2 +- internal/version/version.go | 2 +- pkg/core/core.go | 13 +++++++++-- pkg/sites/mangadex.go | 24 ++++++++++++++++--- 8 files changed, 85 insertions(+), 42 deletions(-) diff --git a/Makefile b/Makefile index 505b2dc..d813f67 100644 --- a/Makefile +++ b/Makefile @@ -3,13 +3,13 @@ help: # this command @egrep '^[A-Za-z0-9_-]+:' Makefile osx-build: # Creates Mac OSX - @GOOS=darwin GOARCH=amd64 go build -o build/comics-downloader-osx ./cmd/downloader + @GOOS=darwin go build -o build/comics-downloader-osx ./cmd/downloader windows-build: # Creates Windows - @GOOS=windows GOARCH=amd64 go build -o build/comics-downloader.exe ./cmd/downloader + @GOOS=windows go build -o build/comics-downloader.exe ./cmd/downloader linux-build: # Creates Linux - @GOOS=linux GOARCH=amd64 go build -o build/comics-downloader ./cmd/downloader + @GOOS=linux go build -o build/comics-downloader ./cmd/downloader linux-arm-build: # Creates Linux ARM @GOOS=linux GOARCH=arm go build -o build/comics-downloader-linux-arm ./cmd/downloader @@ -18,7 +18,7 @@ linux-arm64-build: # Creates Linux ARM64 @GOOS=linux GOARCH=arm64 go build -o build/comics-downloader-linux-arm64 ./cmd/downloader osx-gui-build: # Creates osx GUI - @GOOS=darwin GOARCH=amd64 go build -o build/comics-downloader-gui-osx ./cmd/gui + @GOOS=darwin go build -o build/comics-downloader-gui-osx ./cmd/gui windows-gui-build: # Creates Window GUI executable @fyne-cross windows -output comics-downloader-gui-windows.exe ./cmd/gui diff --git a/go.mod b/go.mod index 178b044..0344214 100644 --- a/go.mod +++ b/go.mod @@ -5,39 +5,46 @@ go 1.17 require ( fyne.io/fyne v1.4.3 github.com/anaskhan96/soup v1.2.4 - github.com/bmaupin/go-epub v0.7.2 - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/bmaupin/go-epub v0.10.0 github.com/dlclark/regexp2 v1.4.0 + github.com/google/go-github v17.0.0+incompatible + github.com/jung-kurt/gofpdf v1.16.2 + github.com/mholt/archiver v3.1.1+incompatible + github.com/schollz/progressbar/v2 v2.15.0 + github.com/sirupsen/logrus v1.8.1 + github.com/stretchr/testify v1.7.0 + golang.org/x/mod v0.5.1 + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +) + +require ( + github.com/darylhjd/mangodex v0.0.0-20211231093527-e4a91c518fa0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/dsnet/compress v0.0.1 // indirect - github.com/frankban/quicktest v1.13.1 // indirect + github.com/frankban/quicktest v1.14.0 // indirect github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/fyne-io/mobile v0.1.2 // indirect + github.com/gabriel-vasile/mimetype v1.3.1 // indirect github.com/go-gl/gl v0.0.0-20190320180904-bf2b1f2f34d7 // indirect github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200625191551-73d3c3675aa3 // indirect github.com/godbus/dbus/v5 v5.0.3 // indirect github.com/gofrs/uuid v3.1.0+incompatible // indirect github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/go-github v17.0.0+incompatible - github.com/google/go-querystring v1.0.0 // indirect - github.com/jung-kurt/gofpdf v1.16.2 - github.com/mholt/archiver v3.1.1+incompatible + github.com/google/go-cmp v0.5.6 // indirect + github.com/google/go-querystring v1.1.0 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/nwaples/rardecode v1.1.2 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/schollz/progressbar/v2 v2.15.0 - github.com/sirupsen/logrus v1.8.1 github.com/srwiley/oksvg v0.0.0-20200311192757-870daf9aa564 // indirect github.com/srwiley/rasterx v0.0.0-20200120212402-85cb7272f5e9 // indirect - github.com/stretchr/testify v1.6.1 github.com/ulikunitz/xz v0.5.10 // indirect + github.com/vincent-petithory/dataurl v0.0.0-20191104211930-d1553a71de50 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect golang.org/x/image v0.0.0-20200430140353-33d19683fad8 // indirect - golang.org/x/mod v0.5.0 - golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666 // indirect - golang.org/x/text v0.3.2 // indirect + golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 // indirect + golang.org/x/sys v0.0.0-20210423082822-04245dca01da // indirect + golang.org/x/text v0.3.6 // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/go.sum b/go.sum index 5378235..05946b5 100644 --- a/go.sum +++ b/go.sum @@ -4,10 +4,12 @@ github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9/go.mod github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/anaskhan96/soup v1.2.4 h1:or+sKs9QbzJGZVTYFmTs2VBateEywoq00a6K14z331E= github.com/anaskhan96/soup v1.2.4/go.mod h1:6YnEp9A2yywlYdM4EgDz9NEHclocMepEtku7wg6Cq3s= -github.com/bmaupin/go-epub v0.7.2 h1:OoAVPj1EDQRp5ij4FkFIRhl0D+zi6jX9FYdjPL9gKVg= -github.com/bmaupin/go-epub v0.7.2/go.mod h1:4RBr0Zo03mRGOyGAcc25eLOqIPCkMbfz+tINVmH6clQ= +github.com/bmaupin/go-epub v0.10.0 h1:KuOrBGE72frtaDDb2j7NyryO1In3Wsdmtm8o0/K8mF0= +github.com/bmaupin/go-epub v0.10.0/go.mod h1:mBan+0WgVv5JbPNw1xfnfQoTRN9iPMKBshZwPOL0SY0= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/darylhjd/mangodex v0.0.0-20211231093527-e4a91c518fa0 h1:yi35YUun+KDGbTJv2r0IpM91Lq65msUhANU3Q/xr2Xc= +github.com/darylhjd/mangodex v0.0.0-20211231093527-e4a91c518fa0/go.mod h1:RApCWGRbVd11wQMLhiZ1ejybkf1C4CS6rMANQlog8B0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -16,12 +18,14 @@ github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55k github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= -github.com/frankban/quicktest v1.13.1 h1:xVm/f9seEhZFL9+n5kv5XLrGwy6elc4V9v/XFY2vmd8= -github.com/frankban/quicktest v1.13.1/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= +github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= +github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fyne-io/mobile v0.1.2 h1:0HaXDtOOwyOTn3Umi0uKVCOgJtfX73c6unC4U8i5VZU= github.com/fyne-io/mobile v0.1.2/go.mod h1:/kOrWrZB6sasLbEy2JIvr4arEzQTXBTZGb3Y96yWbHY= +github.com/gabriel-vasile/mimetype v1.3.1 h1:qevA6c2MtE1RorlScnixeG0VA1H4xrXyhyX3oWBynNQ= +github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/go-gl/gl v0.0.0-20190320180904-bf2b1f2f34d7 h1:SCYMcCJ89LjRGwEa0tRluNRiMjZHalQZrVrvTbPh+qw= github.com/go-gl/gl v0.0.0-20190320180904-bf2b1f2f34d7/go.mod h1:482civXOzJJCPzJ4ZOX/pwvXBWSnzD4OKMdH4ClKGbk= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200625191551-73d3c3675aa3 h1:q521PfSp5/z6/sD9FZZOWj4d1MLmfQW8PkRnI9M6PCE= @@ -34,12 +38,13 @@ github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff h1:W71vTCKoxtdXgnm1E github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff/go.mod h1:wfqRWLHRBsRgkp5dmbG56SA0DmVtwrF5N3oPdI8t+Aw= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/jackmordaunt/icns v0.0.0-20181231085925-4f16af745526/go.mod h1:UQkeMHVoNcyXYq9otUupF7/h/2tmHlhrS2zw7ZVvUqc= github.com/josephspurrier/goversioninfo v0.0.0-20200309025242-14b0ab84c6ca/go.mod h1:eJTEwMjXb7kZ633hO3Ln9mBUCOjX2+FlTljvpl9SYdE= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= @@ -89,11 +94,14 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/vincent-petithory/dataurl v0.0.0-20191104211930-d1553a71de50 h1:uxE3GYdXIOfhMv3unJKETJEhw78gvzuQqRX/rVirc2A= +github.com/vincent-petithory/dataurl v0.0.0-20191104211930-d1553a71de50/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -104,14 +112,15 @@ golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+o golang.org/x/image v0.0.0-20200430140353-33d19683fad8 h1:6WW6V3x1P/jokJBpRQYUJnMHRP6isStQwCozxnU7XQw= golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0 h1:UG21uOlmZabA4fW5i7ZX6bjw1xELEGg/ZLgZq9auk/Q= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 h1:Ugb8sMTWuWRC3+sz5WeN/4kejDx9BvIwnPUiJBjJE+8= +golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= @@ -121,11 +130,15 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666 h1:gVCS+QOncANNPlmlO1AhlU3oxs4V9z+gTtPwIk3p2N8= golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190808195139-e713427fea3f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= diff --git a/internal/flag/parser/range.go b/internal/flag/parser/range.go index 17346a6..165769d 100644 --- a/internal/flag/parser/range.go +++ b/internal/flag/parser/range.go @@ -20,10 +20,6 @@ func ParseIssuesRange(rng string) (float64, float64, error) { return 0, 0, fmt.Errorf("wrong the start range value: %v", err) } - if startRange == 0 { - return 0, 0, errors.New("the start range value must not be zero") - } - endRange, err := strconv.ParseFloat(values[1], 64) if err != nil { return 0, 0, fmt.Errorf("wrong the end range value: %v", err) diff --git a/internal/flag/parser/range_test.go b/internal/flag/parser/range_test.go index a3b8a7f..479758c 100644 --- a/internal/flag/parser/range_test.go +++ b/internal/flag/parser/range_test.go @@ -20,7 +20,7 @@ func TestParseIssuesRange(t *testing.T) { {"3.-9.5", 3, 9.5, false}, {"12-123", 12, 123, false}, {"0-0", 0, 0, true}, - {"0-1", 0, 0, true}, + {"0-1", 0, 1, false}, {"1-0", 0, 0, true}, {"2-1", 0, 0, true}, {"1", 0, 0, true}, diff --git a/internal/version/version.go b/internal/version/version.go index 3292a1e..a3cd91b 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -9,7 +9,7 @@ import ( // Tag specifies the current release tag. // It needs to be manually updated. -const Tag = "v0.32.1" +const Tag = "v0.33.0" // IsNewAvailable will fetch the latest project releases // and will compare the latest release Tag against the current Tag. diff --git a/pkg/core/core.go b/pkg/core/core.go index cbe726a..13ec8bc 100644 --- a/pkg/core/core.go +++ b/pkg/core/core.go @@ -2,13 +2,16 @@ package core import ( "bytes" + "context" "fmt" "image" "io/ioutil" "os" + "runtime" "strings" "golang.org/x/sync/errgroup" + "golang.org/x/sync/semaphore" "github.com/Girbons/comics-downloader/pkg/config" "github.com/Girbons/comics-downloader/pkg/util" @@ -260,15 +263,21 @@ func (comic *Comic) DownloadImages(options *config.Options) (string, error) { g := new(errgroup.Group) + maxWorkers := int64(runtime.NumCPU()) + sem := semaphore.NewWeighted(maxWorkers) + ctx := context.Background() + + defer sem.Acquire(ctx, maxWorkers) for i, link := range comic.Links { - link := link - i := i + link, i := link, i + sem.Acquire(ctx, 1) if link == "" { continue } g.Go(func() error { + defer sem.Release(1) rsp, err := options.Client.Get(link) if err != nil { return err diff --git a/pkg/sites/mangadex.go b/pkg/sites/mangadex.go index 60fb0d9..d25c00b 100644 --- a/pkg/sites/mangadex.go +++ b/pkg/sites/mangadex.go @@ -120,16 +120,33 @@ func (m *Mangadex) getChapter(chapterID string) (mangaID, volume, chapter, title } `json:"relationships"` } `json:"data"` } + if err := json.NewDecoder(res.Body).Decode(&chapterRes); err != nil { return "", "", "", "", nil, err } if chapterRes.Result != "ok" { return "", "", "", "", nil, fmt.Errorf("Unexpected response") } - images = chapterRes.Data.Attributes.Data - for i, file := range images { - images[i] = fmt.Sprintf("https://uploads.mangadex.org/data/%s/%s", chapterRes.Data.Attributes.Hash, file) + + var imagesRes struct { + Result string `json:"result"` + Chapter struct { + Hash string `json:"hash"` + Data []string `json:"data"` + } `json:"chapter` } + + res, err = http.Get(fmt.Sprintf("https://api.mangadex.org/at-home/server/%s", chapterID)) + + if err := json.NewDecoder(res.Body).Decode(&imagesRes); err != nil { + return "", "", "", "", nil, err + } + + for _, file := range imagesRes.Chapter.Data { + imageUrl := fmt.Sprintf("https://uploads.mangadex.org/data/%s/%s", imagesRes.Chapter.Hash, file) + images = append(images, imageUrl) + } + if m.options.Debug { m.options.Logger.Debug(fmt.Sprintf("Image Links found: %s", strings.Join(images, " "))) } @@ -139,6 +156,7 @@ func (m *Mangadex) getChapter(chapterID string) (mangaID, volume, chapter, title break } } + return mangaID, chapterRes.Data.Attributes.Volume, chapterRes.Data.Attributes.Chapter, chapterRes.Data.Attributes.Title, images, nil }