Skip to content

Commit 5f8e634

Browse files
committed
add season downloading to cli
1 parent 6f6ff12 commit 5f8e634

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

cmd/commands.go

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -931,12 +931,47 @@ func downloadMedia(c *cli.Context) error {
931931

932932
selectedMedia := results.MediaContainer.Metadata[selection]
933933

934-
// download media
935-
if err := plexConn.Download(selectedMedia, downloadPath, createFolders, skipIfExists); err != nil {
936-
return cli.NewExitError(err, 1)
937-
}
934+
if selectedMedia.ChildCount > 0 {
935+
selection = -1
936+
selectedMediaChildren, err := plexConn.GetMetadataChildren(selectedMedia.RatingKey)
937+
if err != nil {
938+
return cli.NewExitError(err, 1)
939+
}
940+
children := selectedMediaChildren.MediaContainer.Metadata
941+
942+
for i, result := range children {
943+
fmt.Printf("\t[%d] %s\n", i, result.Title)
944+
}
945+
946+
fmt.Printf("choose media to download:")
947+
fmt.Scanln(&selection)
948+
949+
if selection < 0 || selection > len(children)-1 {
950+
return cli.NewExitError("invalid selection", 1)
951+
}
938952

939-
fmt.Printf("successfully downloaded %s\n", selectedMedia.Title)
953+
selectedSeason := children[selection]
954+
selectedSeasonChildren, err := plexConn.GetMetadataChildren(selectedSeason.RatingKey)
955+
if err != nil {
956+
return cli.NewExitError(err, 1)
957+
}
958+
959+
// download all episodes from a season
960+
for _, result := range selectedSeasonChildren.MediaContainer.Metadata {
961+
fmt.Printf("downloading %s\n", result.Title)
962+
if err := plexConn.Download(result, downloadPath, createFolders, skipIfExists); err != nil {
963+
return cli.NewExitError(err, 1)
964+
}
965+
}
966+
fmt.Printf("successfully downloaded %s %s\n", selectedSeason.ParentTitle, selectedSeason.Title)
967+
} else {
968+
// download media
969+
if err := plexConn.Download(selectedMedia, downloadPath, createFolders, skipIfExists); err != nil {
970+
return cli.NewExitError(err, 1)
971+
}
972+
973+
fmt.Printf("successfully downloaded %s\n", selectedMedia.Title)
974+
}
940975

941976
return nil
942977
}

0 commit comments

Comments
 (0)