refactor(dl): move mode to sub commands

This commit is contained in:
iyear 2022-09-09 23:17:53 +08:00
parent 8ed91a6b4d
commit 8dbdf2d7e6
3 changed files with 40 additions and 40 deletions

View file

@ -1,9 +1,6 @@
package dl package dl
import ( import (
"fmt"
"github.com/iyear/tdl/app/dl/dlurl"
"github.com/iyear/tdl/pkg/consts"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -11,49 +8,19 @@ var (
partSize int partSize int
threads int threads int
limit int limit int
// url mode
urls []string
mode string
) )
var Cmd = &cobra.Command{ var CmdDL = &cobra.Command{
Use: "dl", Use: "dl",
Aliases: []string{"download"}, Aliases: []string{"download"},
Short: "Download what you want", Short: "Download what you want",
Example: "tdl dl", 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
}
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)
},
} }
func init() { func init() {
Cmd.Flags().IntVarP(&partSize, "part-size", "s", 512*1024, "part size for download, max is 512*1024") CmdDL.AddCommand(cmdURL)
Cmd.Flags().IntVarP(&threads, "threads", "t", 8, "threads for downloading one item")
Cmd.Flags().IntVarP(&limit, "limit", "l", 2, "max number of concurrent tasks")
// url mode CmdDL.PersistentFlags().IntVarP(&partSize, "part-size", "s", 512*1024, "part size for download, max is 512*1024")
Cmd.Flags().StringSliceVarP(&urls, "url", "u", make([]string, 0), "array of message links to be downloaded") CmdDL.PersistentFlags().IntVarP(&threads, "threads", "t", 8, "threads for downloading one item")
CmdDL.PersistentFlags().IntVarP(&limit, "limit", "l", 2, "max number of concurrent tasks")
Cmd.Flags().StringVarP(&mode, "mode", "m", "", "mode for download")
} }

33
cmd/dl/url.go Normal file
View file

@ -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")
}

View file

@ -26,7 +26,7 @@ var cmd = &cobra.Command{
} }
func init() { 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().String("proxy", "", "proxy address, only socks5 is supported, format: protocol://username:password@host:port")
cmd.PersistentFlags().StringP("ns", "n", "", "namespace for Telegram session") cmd.PersistentFlags().StringP("ns", "n", "", "namespace for Telegram session")