現在、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番目以降のビデオに一貫した方法でアクセスする方法について迷っています。誰かがこの問題を回避する方法について何か有用な提案がありますか?難しさを明確に説明できたと思います!