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
|
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
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() {
|
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")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue