diff --git a/main.go b/main.go index 49039c9..edf3ca6 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,8 @@ import ( ) func main() { - var song_url string + var song_url, output_folder string + application := app.NewApp() cmd := &cli.Command{ @@ -23,9 +24,15 @@ func main() { Usage: "Download a song/playlist", Destination: &song_url, }, + &cli.StringFlag{ + Name: "output", + Aliases: []string{"o"}, + Usage: "Set output folder", + Destination: &output_folder, + }, }, Action: func(ctx context.Context, cmd *cli.Command) error { - err := pkg.Download(application, song_url) + err := pkg.Download(application, song_url, output_folder) return err }, } diff --git a/pkg/download.go b/pkg/download.go index 91007ae..a64eb93 100644 --- a/pkg/download.go +++ b/pkg/download.go @@ -43,7 +43,11 @@ type MetadataPlaylist struct { TrackList []MetadataTrack `json:"track_list"` } -func Download(application *app.App, url string) error { +func Download(application *app.App, url string, output_folder string) error { + if output_folder == "" { + output_folder = DEFAULT_DOWNLOAD_OUTPUT_FOLDER + } + if strings.Contains(url, "https://open.spotify.com/track") { metadata, err := GetMetadata[MetadataSong](application, url) if err != nil { @@ -59,7 +63,7 @@ func Download(application *app.App, url string) error { AlbumArtist: track.AlbumArtist, ReleaseDate: track.ReleaseDate, CoverURL: track.Images, - OutputDir: DEFAULT_DOWNLOAD_OUTPUT_FOLDER, + OutputDir: output_folder, SpotifyID: track.SpotifyID, } @@ -84,7 +88,7 @@ func Download(application *app.App, url string) error { AlbumArtist: track.AlbumArtist, ReleaseDate: track.ReleaseDate, CoverURL: track.Images, - OutputDir: DEFAULT_DOWNLOAD_OUTPUT_FOLDER, + OutputDir: output_folder, SpotifyID: track.SpotifyID, }