10

現在、YouTubeユーザーのアップロードフィードから動画に関するデータを取得しようとしています。このフィードには、特定のユーザーによってアップロードされたすべての動画が含まれており、次のリクエストによってAPIからアクセスされます。

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads

ここで、USERNAMEは、フィードを所有するYouTubeユーザーの名前です。

ただし、1000本を超える動画のフィードにアクセスしようとすると問題が発生しました。APIへの各リクエストは50アイテムを返すことができるため、次のようにmax_lengthとstart_indexを使用してフィードを繰り返し処理しています。

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1&max-results=50&orderby=published
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=51&max-results=50&orderby=published

など、呼び出しごとにstart_indexを50ずつ増やします。これは、次の状態まで完全に機能します。

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1001&max-results=50&orderby=published

その時点で、「アイテム1000を超えてリクエストすることはできません」という400エラーが表示されます。これは、クエリが50本のビデオのみを返すと想定していたので私を混乱させました:最近公開された順序で1001-1051。ドキュメントを調べて、私はこれを発見しました:

結果数とアクセス可能な結果の制限

..。

特定のクエリについて、1,000を超える結果があったとしても、それを超える結果を取得することはできません。1,000を超える結果を取得しようとすると、APIはエラーを返します。したがって、start-indexクエリパラメータを1001以上の値に設定すると、APIはエラーを返します。start-indexパラメーターとmax-resultsパラメーターの合計が1,001より大きい場合も、エラーが返されます。

たとえば、start-indexパラメーター値を1000に設定する場合は、max-resultsパラメーター値を1に設定する必要があり、start-indexパラメーター値を980に設定する場合は、max-resultsパラメーターを設定する必要があります。 21以下の値。

max-resultsとstart-indexだけを使用してインデックスを作成することはできないため、一般ユーザーの最後にアップロードされた1001番目以降のビデオに一貫した方法でアクセスする方法について迷っています。誰かがこの問題を回避する方法について何か有用な提案がありますか?難しさを明確に説明できたと思います!

4

1 に答える 1

12

特定のアカウントのすべての動画の取得サポートされていますが、アップロードフィードのリクエストが、検索インデックスではなくバックエンドデータベースに対して行われていることを確認する必要があります。リクエストURLに含めるためorderby=published、検索インデックスに反することになります。検索インデックスフィードは1000エントリに制限されています。

を取り除くと、orderby=published探しているデータが得られます。アップロードフィードのデフォルトの順序は、とにかく逆年代順です。

これは特に簡単な間違いであり、ブログ投稿で詳細を説明しています。

http://apiblog.youtube.com/2012/03/keeping-things-fresh.html

良い点は、これがAPIのバージョン3では問題にならないことです。

于 2012-10-04T18:12:31.410 に答える