diff --git a/cmd/dl/dl.go b/cmd/dl/dl.go index 623fd14..8d9572e 100644 --- a/cmd/dl/dl.go +++ b/cmd/dl/dl.go @@ -1,9 +1,6 @@ package dl import ( - "fmt" - "github.com/iyear/tdl/app/dl/dlurl" - "github.com/iyear/tdl/pkg/consts" "github.com/spf13/cobra" ) @@ -11,49 +8,19 @@ var ( partSize int threads int limit int - - // url mode - urls []string - - mode string ) -var Cmd = &cobra.Command{ +var CmdDL = &cobra.Command{ Use: "dl", Aliases: []string{"download"}, Short: "Download what you want", - Example: "tdl dl", - RunE: func(cmd *cobra.Command, args []string) error { - proxy, err := cmd.Flags().GetString("proxy") - if err != nil { - return err - } - - ns, err := cmd.Flags().GetString("ns") - if err != nil { - return err - } - - switch mode { - case consts.DownloadModeURL: - if err := dlurl.Run(cmd.Context(), ns, proxy, partSize, threads, limit, urls); err != nil { - return fmt.Errorf("download failed: %v", err) - } - return nil - } - - return fmt.Errorf("mode %s is not supported", mode) - - }, + Example: "", } func init() { - Cmd.Flags().IntVarP(&partSize, "part-size", "s", 512*1024, "part size for download, max is 512*1024") - Cmd.Flags().IntVarP(&threads, "threads", "t", 8, "threads for downloading one item") - Cmd.Flags().IntVarP(&limit, "limit", "l", 2, "max number of concurrent tasks") + CmdDL.AddCommand(cmdURL) - // url mode - Cmd.Flags().StringSliceVarP(&urls, "url", "u", make([]string, 0), "array of message links to be downloaded") - - Cmd.Flags().StringVarP(&mode, "mode", "m", "", "mode for download") + CmdDL.PersistentFlags().IntVarP(&partSize, "part-size", "s", 512*1024, "part size for download, max is 512*1024") + CmdDL.PersistentFlags().IntVarP(&threads, "threads", "t", 8, "threads for downloading one item") + CmdDL.PersistentFlags().IntVarP(&limit, "limit", "l", 2, "max number of concurrent tasks") } diff --git a/cmd/dl/url.go b/cmd/dl/url.go new file mode 100644 index 0000000..1d9a9a8 --- /dev/null +++ b/cmd/dl/url.go @@ -0,0 +1,33 @@ +package dl + +import ( + "github.com/iyear/tdl/app/dl/dlurl" + "github.com/spf13/cobra" +) + +var ( + urls []string +) + +var cmdURL = &cobra.Command{ + Use: "url", + Short: "Download in url mode", + Example: "", + RunE: func(cmd *cobra.Command, args []string) error { + proxy, err := cmd.Flags().GetString("proxy") + if err != nil { + return err + } + + ns, err := cmd.Flags().GetString("ns") + if err != nil { + return err + } + + return dlurl.Run(cmd.Context(), ns, proxy, partSize, threads, limit, urls) + }, +} + +func init() { + cmdURL.Flags().StringSliceVarP(&urls, "urls", "u", []string{}, "telegram message links to be downloaded") +} diff --git a/cmd/root.go b/cmd/root.go index b010859..3e11915 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -26,7 +26,7 @@ var cmd = &cobra.Command{ } func init() { - cmd.AddCommand(version.Cmd, login.Cmd, dl.Cmd) + cmd.AddCommand(version.Cmd, login.Cmd, dl.CmdDL) cmd.PersistentFlags().String("proxy", "", "proxy address, only socks5 is supported, format: protocol://username:password@host:port") cmd.PersistentFlags().StringP("ns", "n", "", "namespace for Telegram session")