bypass throttling

This commit is contained in:
Niko Storni 2021-07-13 22:42:40 -04:00
parent fbd683e094
commit 3a0882230a

View file

@ -276,6 +276,10 @@ func (v *YoutubeVideo) download() error {
"1", "1",
"--cookies", "--cookies",
"cookies.txt", "cookies.txt",
"--extractor-args",
"youtube:player_client=android",
//"--concurrent-fragments",
//"2",
"--load-info-json", "--load-info-json",
metadataPath, metadataPath,
} }
@ -319,11 +323,15 @@ func (v *YoutubeVideo) download() error {
sourceAddress, sourceAddress,
fmt.Sprintf("https://www.youtube.com/watch?v=%s", v.id), fmt.Sprintf("https://www.youtube.com/watch?v=%s", v.id),
) )
//speedThrottleRetries := 3
for i := 0; i < len(qualities); i++ { for i := 0; i < len(qualities); i++ {
quality := qualities[i] quality := qualities[i]
argsWithFilters := append(ytdlArgs, "-fbestvideo[ext=mp4][vcodec!*=av01][height<="+quality+"]+bestaudio[ext!=webm][format_id!=258][format_id!=251][format_id!=256][format_id!=327]") argsWithFilters := append(ytdlArgs, "-fbestvideo[ext=mp4][vcodec!*=av01][height<="+quality+"]+bestaudio[ext!=webm][format_id!=258][format_id!=251][format_id!=256][format_id!=327]")
argsWithFilters = append(argsWithFilters, userAgent...) argsWithFilters = append(argsWithFilters, userAgent...)
//if speedThrottleRetries > 0 {
// speedThrottleRetries--
// argsWithFilters = append(argsWithFilters, "--throttled-rate", "180K")
//}
cmd := exec.Command("yt-dlp", argsWithFilters...) cmd := exec.Command("yt-dlp", argsWithFilters...)
log.Printf("Running command yt-dlp %s", strings.Join(argsWithFilters, " ")) log.Printf("Running command yt-dlp %s", strings.Join(argsWithFilters, " "))
@ -370,6 +378,10 @@ func (v *YoutubeVideo) download() error {
userAgent = []string{downloader.GoogleBotUA} userAgent = []string{downloader.GoogleBotUA}
log.Infof("trying different user agent for video %s", v.ID()) log.Infof("trying different user agent for video %s", v.ID())
continue continue
//} else if strings.Contains(string(errorLog), "yt_dlp.utils.ThrottledDownload") {
// log.Infof("throttled download speed for video %s. Retrying", v.ID())
// i-- //do not lower quality when we're retrying a throttled download
// continue
} }
return errors.Err(string(errorLog)) return errors.Err(string(errorLog))
} }