ok fine
This commit is contained in:
parent
1c5856a243
commit
96aee306b5
|
@ -1,4 +1,4 @@
|
|||
package e621
|
||||
package concurrent
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
@ -10,13 +10,14 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/dustin/go-humanize"
|
||||
"github.com/tjhorner/e6dl/e621"
|
||||
)
|
||||
|
||||
// BeginDownload takes a slice of posts, a directory to save them in, and a
|
||||
// number of concurrent workers to make. It blocks until all the post have
|
||||
// been processed. It returns the number of successes, failures, and the total
|
||||
// amount of posts.
|
||||
func BeginDownload(posts *[]Post, saveDirectory *string, maxConcurrents *int) (*int, *int, *int) {
|
||||
func BeginDownload(posts *[]e621.Post, saveDirectory *string, maxConcurrents *int) (*int, *int, *int) {
|
||||
var wg sync.WaitGroup
|
||||
var completed int
|
||||
var successes int
|
||||
|
@ -50,7 +51,7 @@ func BeginDownload(posts *[]Post, saveDirectory *string, maxConcurrents *int) (*
|
|||
return &successes, &failures, &total
|
||||
}
|
||||
|
||||
func work(wn int, posts []Post, directory string, completed *int, successes *int, failures *int, total *int, wg *sync.WaitGroup) {
|
||||
func work(wn int, posts []e621.Post, directory string, completed *int, successes *int, failures *int, total *int, wg *sync.WaitGroup) {
|
||||
defer wg.Done()
|
||||
|
||||
for _, post := range posts {
|
||||
|
@ -76,7 +77,7 @@ func work(wn int, posts []Post, directory string, completed *int, successes *int
|
|||
}
|
||||
}
|
||||
|
||||
func getSavePath(post *Post, directory *string) string {
|
||||
func getSavePath(post *e621.Post, directory *string) string {
|
||||
pathSliced := strings.Split(post.FileURL, ".")
|
||||
extension := pathSliced[len(pathSliced)-1]
|
||||
|
||||
|
@ -85,10 +86,10 @@ func getSavePath(post *Post, directory *string) string {
|
|||
return savePath
|
||||
}
|
||||
|
||||
func downloadPost(post *Post, directory string) error {
|
||||
func downloadPost(post *e621.Post, directory string) error {
|
||||
savePath := getSavePath(post, &directory)
|
||||
|
||||
resp, err := HTTPGet(post.FileURL)
|
||||
resp, err := e621.HTTPGet(post.FileURL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
3
main.go
3
main.go
|
@ -6,6 +6,7 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/tjhorner/e6dl/concurrent"
|
||||
"github.com/tjhorner/e6dl/e621"
|
||||
)
|
||||
|
||||
|
@ -38,7 +39,7 @@ func main() {
|
|||
os.Exit(1)
|
||||
}
|
||||
|
||||
successes, failures, _ := e621.BeginDownload(&posts, saveDirectory, maxConcurrents)
|
||||
successes, failures, _ := concurrent.BeginDownload(&posts, saveDirectory, maxConcurrents)
|
||||
|
||||
fmt.Printf("\nAll done! %d posts downloaded and saved. (%d failed to download)\n", *successes, *failures)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue