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 個のビデオができますが、もっともっともっともっと必要ですが、制限はページ = 100 です。

では、どうすれば 1,000 万本以上の動画を入手できるのでしょうか?

ありがとうございました!

4

1 に答える 1

0

それらの5000も一意のIDですか?max-results=50 の使用が見られますが、URL に start-index パラメータはありません。リクエストごとに取得できる結果には制限があります。また、一定の時間内に送信できるリクエストの数にも制限があります。応答のステータスコードとエラー メッセージをチェックすることで、これらの制限を見つけることができます。

カテゴリ パラメータ以外にも、いくつかのパラメータを使用します。たとえば、q パラメーター (一部のキーワードで使用) や order パラメーターを変更して、異なる結果セットを取得することができます。使用可能なパラメーターについては、ドキュメントを参照してください。

非推奨の API バージョン 2 を使用していることに注意してください。APIバージョン3があります。

于 2013-10-04T12:59:35.613 に答える