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
26 // "137,802 views" => 137802
27 func extractNumber(s
string) (uint64, error
) {
28 // Extract numbers from view string
30 for _
, char
:= range []byte(s
) {
31 if char
>= 0x30 && char
<= 0x39 {
32 clean
= append(clean
, char
)
37 return strconv
.ParseUint(string(clean
), 10, 64)