/
main.go
76 lines (72 loc) · 1.58 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package main
import (
"154.pages.dev/log"
"154.pages.dev/media/internal"
"154.pages.dev/media/mubi"
"flag"
"os"
"path/filepath"
)
type flags struct {
media_id string
h internal.HttpStream
v log.Level
web mubi.WebAddress
code bool
auth bool
secure bool
home string
}
func (f *flags) New() error {
var err error
f.home, err = os.UserHomeDir()
if err != nil {
return err
}
f.home = filepath.ToSlash(f.home)
f.h.ClientId = f.home + "/widevine/client_id.bin"
f.h.PrivateKey = f.home + "/widevine/private_key.pem"
return nil
}
func main() {
var f flags
err := f.New()
if err != nil {
panic(err)
}
flag.Var(&f.web, "a", "address")
flag.BoolVar(&f.auth, "auth", false, "authenticate")
flag.BoolVar(&f.code, "code", false, "link code")
flag.StringVar(&f.media_id, "i", "", "media ID")
flag.BoolVar(&f.secure, "s", false, "secure URL")
flag.TextVar(&f.v.Level, "v", f.v.Level, "level")
flag.StringVar(&f.h.ClientId, "c", f.h.ClientId, "client ID")
flag.StringVar(&f.h.PrivateKey, "p", f.h.PrivateKey, "private key")
flag.Parse()
f.v.Set()
log.Transport{}.Set()
switch {
case f.auth:
err := f.write_auth()
if err != nil {
panic(err)
}
case f.code:
err := f.write_code()
if err != nil {
panic(err)
}
case f.secure:
err := f.write_secure()
if err != nil {
panic(err)
}
case f.web.String() != "":
err := f.download()
if err != nil {
panic(err)
}
default:
flag.Usage()
}
}