Bladeren bron

~/.bin/ydl.go: Support retries

They can be turned off by running `-no-retry`
Lu Stadler 7 jaren geleden
bovenliggende
commit
e3f65b351d
1 gewijzigde bestanden met toevoegingen van 43 en 14 verwijderingen
  1. 43 14
      .bin/ydl.go

+ 43 - 14
.bin/ydl.go

@ -5,27 +5,56 @@ import (
5 5
	"os"
6 6
	"os/exec"
7 7
	"regexp"
8
	"time"
8 9
)
9 10
10 11
var isYoutube = regexp.MustCompile(`(www\.)youtube\.com|youtu\.be`)
11 12
12 13
func main() {
13
	url := os.Args[1]
14
	cmd := exec.Command("youtube-dl", "--no-mtime")
15
	cmd.Stdin = os.Stdin
16
	cmd.Stderr = os.Stderr
17
	cmd.Stdout = os.Stdout
18
19
	if isYoutube.MatchString(url) {
20
		// download youtube video in a lower resolution (saving bandwidth/space)
21
		cmd.Args = append(cmd.Args, "-f", "[height <=? 720]")
14
	if len(os.Args) < 2 {
15
		fmt.Fprintf(os.Stderr, "Usage: %s [-no-retry] <url> [<url>]*", os.Args[0])
16
		os.Exit(1)
17
	}
18
19
	args := os.Args[1:]
20
21
	retry := true
22
	if os.Args[1] == "-no-retry" {
23
		args = os.Args[2:]
24
		retry = false
25
	}
26
27
	success := false
28
	var err error
29
	for {
30
		url := args[0]
31
		cmd := exec.Command("youtube-dl", "--no-mtime")
32
		cmd.Stdin = os.Stdin
33
		cmd.Stderr = os.Stderr
34
		cmd.Stdout = os.Stdout
35
36
		if isYoutube.MatchString(url) {
37
			// download youtube video in a lower resolution (saving bandwidth/space)
38
			cmd.Args = append(cmd.Args, "-f", "[height <=? 720]")
39
		}
40
41
		cmd.Args = append(cmd.Args, args...)
42
		printCommand(cmd)
43
		err = cmd.Run()
44
		if err != nil {
45
			fmt.Println("error...", err)
46
		}
47
48
		if !success && retry {
49
			time.Sleep(5 * time.Second)
50
51
			continue
52
		}
53
54
		break
22 55
	}
23 56
24
	cmd.Args = append(cmd.Args, os.Args[1:]...)
25
	printCommand(cmd)
26
	err := cmd.Run()
27
	if err != nil {
28
		fmt.Println("error...", err)
57
	if !success {
29 58
		os.Exit(1)
30 59
	}
31 60
}