Skip to content

Commit c690f4d

Browse files
committed
added spinner code
1 parent ee5738f commit c690f4d

File tree

3 files changed

+37
-39
lines changed

3 files changed

+37
-39
lines changed

go.mod

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,11 @@ module github.com/coderj001/go-wallheven
33
go 1.18
44

55
require (
6-
github.com/briandowns/spinner v1.21.0
76
github.com/joho/godotenv v1.4.0
87
github.com/spf13/cobra v1.6.1
98
)
109

1110
require (
12-
github.com/fatih/color v1.7.0 // indirect
1311
github.com/inconshreveable/mousetrap v1.1.0 // indirect
14-
github.com/mattn/go-colorable v0.1.2 // indirect
15-
github.com/mattn/go-isatty v0.0.8 // indirect
1612
github.com/spf13/pflag v1.0.5 // indirect
17-
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 // indirect
18-
golang.org/x/term v0.1.0 // indirect
1913
)

go.sum

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
1-
github.com/briandowns/spinner v1.21.0 h1:2lVBzf3iZ3cT/ulVXljc4BzlL3yTWZDzsGsamI7si+A=
2-
github.com/briandowns/spinner v1.21.0/go.mod h1:TcwZHb7Wb6vn/+bcVv1UXEzaA4pLS7yznHlkY/HzH44=
31
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
4-
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
5-
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
62
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
73
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
84
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
95
github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
106
github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
11-
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
12-
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
13-
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
14-
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
157
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
168
github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
179
github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
1810
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
1911
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
20-
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
21-
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
22-
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
23-
golang.org/x/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw=
24-
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
2512
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
2613
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

src/app/downloader.go

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,60 +10,77 @@ import (
1010
"path/filepath"
1111
"strings"
1212
"sync"
13+
"time"
1314

1415
"github.com/coderj001/go-wallheven/src"
1516
)
1617

17-
const numGoroutines = src.BASE_CONFIG.NUMGOROUTINES
18-
const dir = src.BASE_CONFIG.DIR
19-
20-
func DownloadImgs(searchList src.SearchList) error {
18+
func Downloader(searchList *src.SearchList) {
2119
var wg sync.WaitGroup
2220
wg.Add(len(searchList.Data))
23-
for i := 0; i < numGoroutines; i++ {
24-
go func(i int){
25-
for j := i; i<len(searchList.Data); j+=numGoroutines{
26-
return nil
27-
}
21+
completed := make(chan bool)
22+
23+
for i := 0; i < len(searchList.Data); i++ {
24+
go downloadImage(&searchList.Data[i], &wg, completed)
25+
}
26+
27+
// Code for spinner - it takes
28+
spinner := []string{"█", "▒", "▓", "░"}
29+
spinnerIndex := 0
30+
completedCount := 0
31+
32+
for completedCount < len(searchList.Data) {
33+
select {
34+
case <-completed:
35+
completedCount++
36+
spinnerIndex = (spinnerIndex + 1) % 4
37+
fmt.Printf("\rDownloading... %s %d/%d", spinner[spinnerIndex], completedCount, len(searchList.Data))
38+
default:
39+
time.Sleep(100 * time.Millisecond)
40+
spinnerIndex = (spinnerIndex + 1) % 4
41+
fmt.Printf("\rDownloading... %s %d/%d", spinner[spinnerIndex], completedCount, len(searchList.Data))
2842
}
2943
}
30-
return nil
44+
45+
wg.Wait()
46+
close(completed)
3147
}
3248

33-
func downloadImage(imgInfo src.ImageInfo, wg *sync.WaitGroup){
49+
func downloadImage(imgInfo *src.ImageInfo, wg *sync.WaitGroup, completed chan bool) {
3450
defer wg.Done()
35-
51+
dir := src.BASE_CONFIG.DIR
52+
3653
resp, err := http.Get(imgInfo.Path)
3754
if err != nil {
3855
log.Printf("Error while downloading (%s): %s\n", imgInfo.Url, err)
3956
return
4057
}
4158
defer resp.Body.Close()
42-
59+
4360
// check the dir is exists or not
44-
if _, err := os.Stat(dir); errors.Is(err, os.ErrNotExist){
45-
err:= os.Mkdir(dir, os.ModePerm)
61+
if _, err := os.Stat(dir); errors.Is(err, os.ErrNotExist) {
62+
err := os.Mkdir(dir, os.ModePerm)
4663
if err != nil {
4764
log.Printf("Error while creating dir (%s): %s\n", dir, err)
4865
return
4966
}
5067
}
5168

5269
// create the file to store download content
53-
5470
filename := strings.Join([]string{dir, strings.Join([]string{imgInfo.Id, filepath.Ext(imgInfo.Path)}, "")}, "/")
5571
fileOut, err := os.Create(filename)
5672
if err != nil {
5773
log.Printf("Unable to create file (%s): %s\n", imgInfo.Id, err)
5874
return
5975
}
6076
defer fileOut.Close()
61-
77+
6278
_, err = io.Copy(fileOut, resp.Body)
6379
if err != nil {
6480
log.Printf("Error while writing content to file: %s\n", err)
6581
return
6682
}
67-
68-
fmt.Printf("File downloaded successfully: %s\n", imgInfo.ShortUrl)
69-
}
83+
84+
// fmt.Printf("File downloaded successfully: %s\n", imgInfo.ShortUrl)
85+
completed <- true
86+
}

0 commit comments

Comments
 (0)