1

ユーザーのサブスクリプション リストを取得しようとしています。一度に50個しか取得できないので、一度に行うバッチ処理を作成したいと思います。

私はJqueryとajaxを使用して、次のようなPOSTリクエストを送信しています:

var query = "<feed xmlns='http://www.w3.org/2005/Atom'";
query += "xmlns:media='http://search.yahoo.com/mrss/'";
query += "xmlns:batch='http://schemas.google.com/gdata/batch'"
query += "xmlns:yt='http://gdata.youtube.com/schemas/2007'>";

for(var i = 0; i < loop; ++i)
{
    query += '<entry>';
    query += '<id>http://gdata.youtube.com/feeds/api/users/' + youtube_username + '/subscriptions?max-results=50&start-index=' + ((i * 50) + 1) + '&alt=json</id>';
    query += "<batch:operation type='query'/>";
    query += '</entry>';
}

query += '</feed>';

$.ajax({
    type: 'POST',
    url: 'http://gdata.youtube.com/feeds/api/users/batch?v=2',
    data: query,
    contentType:"application/atom+xml",
    dataType:"xml",
    success: function(data){
        alert(data);
    }
});

このリクエストを行うと、エラー 400 (不正な URL リクエスト) が発生します。次に、エントリのこの URL を試しました。

query += '<id>http://gdata.youtube.com/feeds/api/users/' + youtube_username + '/subscriptions/</id>';

しかし、私はこのエラーが発生しました:

要素タイプ「フィード」の後には、属性指定「>」または「/>」が続く必要があります。

ありがとう、良い一日を、ケビン

4

1 に答える 1

1

「バッチ処理リクエストは、フィード エントリのクエリ (GET) 操作をサポートしますが、フィード全体ではサポートしません。たとえば、プレイリストのバッチ リクエストを送信する場合、個々のプレイリスト エントリに関する情報を取得する 1 つ以上のエントリを含めることができます。ただし、バッチ リクエストは、これらのエントリを含むプレイリスト フィードを取得できません。

私はこのように説明することを好みます:

  • サブスクリプションがバッチで処理したいものであると仮定します。http://gdata.youtube.com/feeds/api/users/google/subscriptions?v=2&alt=json&prettyprint=Trueを開き ます

    1. エントリをナビゲートし、エントリ ID を抽出します。ID は ID から抽出されません": {"$t": "tag:youtube.com,2008:user:google:subscriptions"}またはtag:youtube.com,2008:user:google:subscription:X7RMFNKroIVT2j3zlJcZK2BI2_ZLB1PH1-0aiYV1oMo , selfでリンクタグを見つける必要があります。つまり、リンクの selfタグから ID を抽出します。ID はhttp://gdata.youtube.com/feeds/api/users/google/subscriptions/X7RMFNKroIVT2j3zlJcZK7VKfC7MoH_jycANXotcvEI?v=2になります。もう1つ、linkタグはfeedではなくentryタグの中にあります. feedから抽出すると、http://gdata.youtube.com/feeds/api/users/google/subscriptions?alt=json&start-index=1&max-results=25&v=2これは間違っています。
    1. 最後に API をリクエストします。curl の使用例は次のとおりです。 curl -vLk -d "<feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:yt='http://gdata.youtube.com/schemas/2007'><batch:operation type='query'/><entry><id>http://gdata.youtube.com/feeds/api/users/google/subscriptions/X7RMFNKroIVT2j3zlJcZK7VKfC7MoH_jycANXotcvEI?v=2</id></entry></feed>" -X POST "http://gdata.youtube.com/feeds/api/users/google/subscriptions/batch?v=2"

もう 1 つの例は、次のようなビデオです。

curl -vLk -d "http://www.w3.org/2005/Atom' xmlns:media=' http://search.yahoo.com/mrss/ ' xmlns:batch=' http://schemas.google .com/gdata/batch ' xmlns:yt=' http://gdata.youtube.com/schemas/2007 '> https://gdata.youtube.com/feeds/api/videos/EWKcFuluXpo " -X POST " https ://gdata.youtube.com/feeds/api/videos/batch?v=2 "

また、次のようなユーザー/チャネルの情報の例:

curl -vLk -d "http://www.w3.org/2005/Atom' xmlns:media=' http://search.yahoo.com/mrss/ ' xmlns:batch=' http://schemas.google .com/gdata/batch ' xmlns:yt=' http://gdata.youtube.com/schemas/2007 '> http://gdata.youtube.com/feeds/api/users/GoogleDevelopers " -X POST " http ://gdata.youtube.com/feeds/api/users/batch?v=2 "

したがって、そもそもエントリIDを知らずに、バッチ処理でサブスクリプションのリストをクエリすることはできないと思います。

于 2013-02-05T18:07:37.067 に答える