我想从Youtube上获取所有可能的视频信息。我知道限制页面是 100。
我做下一个代码:
ArrayList<String> videos = new ArrayList<>();
int i = 1;
String peticion = "http://gdata.youtube.com/feeds/api/videos?category=Comedy&alt=json&max-results=50&page=" + i;
URL oracle = new URL(peticion);
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine = in.readLine();
while (in.readLine() != null)
{
inputLine = inputLine + in.readLine();
}
System.out.println(inputLine);
JSONObject jsonObj = new JSONObject(inputLine);
JSONObject jsonFeed = jsonObj.getJSONObject("feed");
JSONArray jsonArr = jsonFeed.getJSONArray("entry");
while(i<=100)
{
for (int j = 0; j < jsonArr.length(); j++) {
videos.add(jsonArr.getJSONObject(j).getJSONObject("id").getString("$t"));
System.out.println("Numero " + videosTotales + jsonArr.getJSONObject(j).getJSONObject("id").getString("$t"));
videosTotales++;
}
i++;
}
程序完成后,每个类别有 5000 个视频,但我需要更多,更多,但限制是 page = 100。
那么,如何获得超过 1000 万个视频呢?
谢谢!
这 5000 个也是唯一的 id 吗?我看到使用了max-results=50,但在您的网址中没有使用起始索引参数。每个请求可以获得的结果有限制。在某个时间间隔内可以发送的请求数量也有限制。通过检查响应的状态代码和任何错误消息,您可以找到这些限制,因为它们可能会随时间变化。
除了类别参数,还要使用其他一些参数。例如,您可以改变 q 参数(与某些关键字一起使用)和/或顺序参数以获得不同的结果集。有关可用参数,请参阅文档。
请注意,您使用的是已弃用的 api 版本 2。有一个 api 版本 3。