我有一个来自不同播放列表的 youtube 视频列表,我需要检查这些视频是否仍然有效(大约 1000 个)。我现在正在做的是使用它的 API v2 和 Groovy 和这个简单的脚本来访问 Youtube:
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.Method.GET
http = new HTTPBuilder('http://gdata.youtube.com')
myVideoIds.each { id ->
if (!isValidYoutubeUrl(id)) {
// do stuff
}
}
boolean isValidYoutubeUrl (id) {
boolean valid = true
http.request(GET) {
uri.path = "feeds/api/videos/${id}"
headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4'
response.failure = { resp ->
valid = false
}
}
valid
}
但几秒钟后,它开始为任何单个 id 返回 403(这可能是由于它运行的请求太多)。如果我插入类似Thread.sleep(3000)
. 有没有比仅仅延迟请求更好的解决方案?