mirror of
https://github.com/bit1001/tdl.git
synced 2024-09-20 06:35:54 +08:00
refactor(dl): move mode to sub commands
This commit is contained in:
parent
8ed91a6b4d
commit
8dbdf2d7e6
45
cmd/dl/dl.go
45
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")
|
||||
}
|
||||
|
|
33
cmd/dl/url.go
Normal file
33
cmd/dl/url.go
Normal 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")
|
||||
}
|
|
@ -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")
|
||||
|
||||
|
|
Loading…
Reference in a new issue