From e37ec06287d37353634e1f6f483806382ae124ac Mon Sep 17 00:00:00 2001 From: structix Date: Wed, 25 Apr 2018 18:54:39 +0200 Subject: [PATCH] Fixed empty line crash; Download status --- download.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/download.go b/download.go index ed74390..ec31bfd 100644 --- a/download.go +++ b/download.go @@ -6,6 +6,7 @@ import ( "log" "os" "regexp" + "strings" "sync" //"path/filepath" @@ -41,18 +42,23 @@ func (b *Batch) Start() { //Call download log.Println(scanner.Text()) //add go routine to wait for - wg.Add(1) - go downloadVideo(b.destDir, scanner.Text(), wg) + if strings.TrimSpace(scanner.Text()) != "" { + wg.Add(1) + go downloadVideo(b.destDir, scanner.Text(), &wg) + } else { + log.Println("Ignoring blank line") + } } //wait for all go routines to finish wg.Wait() + log.Println("All downloads finished") if err := scanner.Err(); err != nil { log.Fatal(err) } } -func downloadVideo(destDir, url string, wg sync.WaitGroup) { +func downloadVideo(destDir, url string, wg *sync.WaitGroup) { // NewYoutube(debug) if debug parameter will set true we can log of messages //defer Done() so that WaitGroup knows when the routine finishes defer wg.Done() @@ -63,6 +69,15 @@ func downloadVideo(destDir, url string, wg sync.WaitGroup) { filename := fmt.Sprintf("%s/%s.%s", destDir, y.StreamList[0]["title"], fileext) log.Println("Start downloading:", filename) + go func() { + var i int64 = 0 + for i < 100 { + i = <-y.DownloadPercent + if i%10 == 0 { + log.Println("Status: ", i, "%", y.StreamList[0]["title"]) + } + } + }() y.StartDownload(filename) log.Println("Finished downloading:", filename) }