add new youtubedl dependency
This commit is contained in:
34
downloader/vendor/github.com/kkdai/youtube/v2/video_id.go
generated
vendored
Normal file
34
downloader/vendor/github.com/kkdai/youtube/v2/video_id.go
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
package youtube
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var videoRegexpList = []*regexp.Regexp{
|
||||
regexp.MustCompile(`(?:v|embed|shorts|watch\?v)(?:=|/)([^"&?/=%]{11})`),
|
||||
regexp.MustCompile(`(?:=|/)([^"&?/=%]{11})`),
|
||||
regexp.MustCompile(`([^"&?/=%]{11})`),
|
||||
}
|
||||
|
||||
// ExtractVideoID extracts the videoID from the given string
|
||||
func ExtractVideoID(videoID string) (string, error) {
|
||||
if strings.Contains(videoID, "youtu") || strings.ContainsAny(videoID, "\"?&/<%=") {
|
||||
for _, re := range videoRegexpList {
|
||||
if isMatch := re.MatchString(videoID); isMatch {
|
||||
subs := re.FindStringSubmatch(videoID)
|
||||
videoID = subs[1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if strings.ContainsAny(videoID, "?&/<%=") {
|
||||
return "", ErrInvalidCharactersInVideoID
|
||||
}
|
||||
|
||||
if len(videoID) < 10 {
|
||||
return "", ErrVideoIDMinLength
|
||||
}
|
||||
|
||||
return videoID, nil
|
||||
}
|
||||
Reference in New Issue
Block a user