From 3632bb4af5b95e59994a554303cc563e3112bb03 Mon Sep 17 00:00:00 2001 From: gkiviv Date: Sat, 2 Nov 2024 10:45:16 +0200 Subject: [PATCH] added CLI flags --- downloader/downloader.go | 22 +++++++++++++++++++--- main.go | 30 +++++++++++++++++++----------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/downloader/downloader.go b/downloader/downloader.go index 7451b9d..c56cb70 100644 --- a/downloader/downloader.go +++ b/downloader/downloader.go @@ -8,6 +8,7 @@ import ( "os" "path/filepath" "regexp" + "sync" ) type ContentPageData struct { @@ -97,10 +98,13 @@ func DownloadSingle(url string, subtitleLang string, parentDirectory string) { fmt.Println() } -func DownloadSeason(url string, seasonName string, subtitleLang string) { +func DownloadSeason(url string, seasonName string, subtitleLang string, maxConcurrent int) { id := ExtractContentId(url) data := GetContentPageData(id) - + var wg sync.WaitGroup + + currentConcurrent := 1 + title := data.Data.MainContent.Title seasonList := data.Data.SeasonList if seasonList.Type != "seasonal" { @@ -112,10 +116,22 @@ func DownloadSeason(url string, seasonName string, subtitleLang string) { for _, seasonContent := range season.Contents { parentDirName := title _ = os.Mkdir(parentDirName, os.ModePerm) // dont care if directory fails to create - DownloadSingle(seasonContent.Url, subtitleLang, parentDirName) + + if currentConcurrent < maxConcurrent { + wg.Add(1) + currentConcurrent++ + go func() { + defer wg.Done() + fmt.Println("Running in parallel") + DownloadSingle(seasonContent.Url, subtitleLang, parentDirName) + }() + } else { + DownloadSingle(seasonContent.Url, subtitleLang, parentDirName) + } } } } + wg.Wait() } func GetContentPageData(contentId string) *ContentPageData { diff --git a/main.go b/main.go index 74bc401..6be6456 100644 --- a/main.go +++ b/main.go @@ -1,18 +1,26 @@ package main import ( - "jupiter_downloader/downloader" + // "fmt" + "jupiter_downloader/downloader" + "flag" ) func main() { - // downloader.Download("1038278") - downloader.DownloadSingle("https://jupiter.err.ee/1038278/aktuaalne-kaamera", "", "") - // downloader.DownloadSingle("https://jupiter.err.ee/1609406782/babulon-berliin", "ET", "") - // downloader.DownloadSeason("https://jupiter.err.ee/1235599/babulon-berliin", "4", "ET") - // fs := http.FileServer(http.Dir("static/")) - // - // http.Handle("/", fs) - // - // fmt.Println("Listening on 8080") - // http.ListenAndServe(":8080", nil) + // downloader.DownloadSingle("https://jupiter.err.ee/1038278/aktuaalne-kaamera", "", "") + urlParam := flag.String("url", "", "URL of the Jupiter show or movie you want to download") + + seasonNameParam := flag.String("seasonName", "", "Season of the show you want to download") + maxConcurrentParam := flag.Int("maxConcurrent", 4, "Parameter to toggle how many episodes to download at the same time") + + subtitleLanguageParam := flag.String("subtitleLanguage", "ET", "Parameter to toggle what subtitles you want to download. (ET, EN). NB! Jupiter may not have subtitles in your language of choice.") + + flag.Parse() + + if *seasonNameParam != "" { + downloader.DownloadSeason(*urlParam, *seasonNameParam, *subtitleLanguageParam, *maxConcurrentParam) + } else { + downloader.DownloadSingle(*urlParam, *subtitleLanguageParam, "") + } + // fmt.Println(*urlParam, *seasonNameParam, *maxConcurrentParam, *subtitleLanguageParam) }