/
stan.go
84 lines (81 loc) · 1.64 KB
/
stan.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
77
78
79
80
81
82
83
84
package main
import (
"154.pages.dev/media/stan"
"fmt"
"net/http"
"os"
)
func (f flags) download() error {
var (
token stan.WebToken
err error
)
token.Data, err = os.ReadFile(f.home + "/stan.json")
if err != nil {
return err
}
token.Unmarshal()
session, err := token.Session()
if err != nil {
return err
}
stream, err := session.Stream(f.stan)
if err != nil {
return err
}
var req http.Request
req.URL, err = stream.BaseUrl(f.host)
if err != nil {
return err
}
media, err := f.s.DASH(&req)
if err != nil {
return err
}
for _, medium := range media {
if medium.ID == f.representation {
var program stan.LegacyProgram
err := program.New(f.stan)
if err != nil {
return err
}
f.s.Poster = stream
f.s.Name = stan.Namer{program}
return f.s.Download(medium)
}
}
// 2 MPD all
for i, medium := range media {
if i >= 1 {
fmt.Println()
}
fmt.Println(medium)
}
return nil
}
func (f flags) write_code() error {
var code stan.ActivationCode
err := code.New()
if err != nil {
return err
}
code.Unmarshal()
fmt.Println(code)
return os.WriteFile("code.json", code.Data, 0666)
}
func (f flags) write_token() error {
var (
code stan.ActivationCode
err error
)
code.Data, err = os.ReadFile("code.json")
if err != nil {
return err
}
code.Unmarshal()
token, err := code.Token()
if err != nil {
return err
}
return os.WriteFile(f.home + "/stan.json", token.Data, 0666)
}