1

我想为我的项目从 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 万的视频呢?

谢谢!

4

1 回答 1

0

那些 5000 也是唯一的 id 吗?我看到 max-results=50 的使用,但不是你的 url 中的 start-index 参数。每个请求可以获得的结果是有限的。您可以在某个时间间隔内发送的请求数量也有限制。通过检查响应的状态码和任何错误消息,您可以找到这些限制,因为它们可能会及时更改。

除了类别参数之外,还可以使用其他一些参数。例如,您可以改变 q 参数(与某些关键字一起使用)和/或 order 参数以获得不同的结果集。有关可用参数,请参阅文档。

请注意,您使用的是已弃用的 api 版本 2。有一个 api 版本 3。

于 2013-10-04T12:59:35.613 回答