-
Notifications
You must be signed in to change notification settings - Fork 1
/
name.go
69 lines (66 loc) · 1.25 KB
/
name.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
package stream
type Namer interface {
Owner() (string, bool)
Show() (string, bool)
Season() (string, bool)
Episode() (string, bool)
Title() (string, bool)
Year() (string, bool)
}
// Owner - Show Season Episode - Title - Year
func Name(n Namer) string {
var b []byte
if v, ok := n.Owner(); ok {
b = append(b, v...)
}
if v, ok := n.Show(); ok {
if b != nil {
b = append(b, " - "...)
}
b = append(b, v...)
}
if v, ok := n.Season(); ok {
if b != nil {
b = append(b, ' ')
}
b = append(b, v...)
}
if v, ok := n.Episode(); ok {
if b != nil {
b = append(b, ' ')
}
b = append(b, v...)
}
if v, ok := n.Title(); ok {
if b != nil {
b = append(b, " - "...)
}
b = append(b, v...)
}
if v, ok := n.Year(); ok {
if b != nil {
b = append(b, " - "...)
}
b = append(b, v...)
}
clean(b)
return string(b)
}
func clean(path []byte) {
m := map[byte]bool{
'"': true,
'*': true,
'/': true,
':': true,
'<': true,
'>': true,
'?': true,
'\\': true,
'|': true,
}
for k, v := range path {
if m[v] {
path[k] = '-'
}
}
}