Channel url dump CLI
[yt-mango.git] / classic / util.go
blob9648285bfd72d859fdb71a35a3a2c298aa2f8a0f
1 package classic
3 import (
4 "errors"
5 "strings"
6 "strconv"
9 var durationErr = errors.New("unknown duration code")
11 // "PT6M57S" => 6 min 57 s
12 func parseDuration(d string) (uint64, error) {
13 if d[0:2] != "PT" { return 0, durationErr }
14 mIndex := strings.IndexByte(d, 'M')
15 if mIndex == -1 { return 0, durationErr }
17 minutes, err := strconv.ParseUint(d[2:mIndex], 10, 32)
18 if err != nil { return 0, err }
19 seconds, err := strconv.ParseUint(d[mIndex+1:len(d)-1], 10, 32)
20 if err != nil { return 0, err }
22 dur := minutes * 60 + seconds
23 return dur, nil
26 // "137,802 views" => 137802
27 func extractNumber(s string) (uint64, error) {
28 // Extract numbers from view string
29 var clean []byte
30 for _, char := range []byte(s) {
31 if char >= 0x30 && char <= 0x39 {
32 clean = append(clean, char)
36 // Convert to uint
37 return strconv.ParseUint(string(clean), 10, 64)