diff --git a/lib/app.go b/lib/app.go index 738827d..a4544e5 100644 --- a/lib/app.go +++ b/lib/app.go @@ -6,6 +6,7 @@ type App struct { SpotifyClient *SpotifyClient ApiInterval int // How many ms to wait between one call to apis and the other NoFallback bool + StopOnFail bool } func NewApp() App { diff --git a/lib/download.go b/lib/download.go index ae66f62..4d2ad8e 100644 --- a/lib/download.go +++ b/lib/download.go @@ -100,7 +100,11 @@ func (app *App) DownloadPlaylist(url string, outputFile string, service string, fmt.Println("[" + strconv.Itoa(idx+1) + "/" + strconv.Itoa(trackListSize) + "] " + metadata.Data.TrackUnion.Name + " - " + artists) if err := app.DownloadTrack(url, outputFile+"/", service, quality, true, metadata); err != nil { - return err + if app.StopOnFail { + return err + } + + app.log("Failed download") } // Avoid getting rate limited diff --git a/main.go b/main.go index 696ec50..cce48a8 100644 --- a/main.go +++ b/main.go @@ -57,6 +57,12 @@ func main() { DefaultText: strconv.FormatBool(app.NoFallback), Destination: &app.NoFallback, }, + &cli.BoolFlag{ + Name: "stop-on-fail", + Usage: "continue on download failure", + DefaultText: strconv.FormatBool(app.StopOnFail), + Destination: &app.StopOnFail, + }, }, Action: func(ctx context.Context, cmd *cli.Command) error { song_url := cmd.Args().First()