web-dev-qa-db-ja.com

Instagram APIで20枚以上の写真を表示する

私はいくつかの調査を行っており、Instagram APIから取得されている20を超える画像を表示する方法を理解しようとしています。私はこれでかなり新しいですので、どんな助けでもいただければ幸いです!回避策があるかどうかを確認しようとしていますか?おそらく役立つ可能性のあるページ分割の追加について何かを見ました。もしそうなら、それを行う方法についてのケースの詳細も素晴らしいでしょう!

ここに私がこれまでに持っているコードがあります。

<script type="text/javascript">
    $.ajax({
        type: "GET",
        dataType: "jsonp",
        cache: false,
        url: "https://api.instagram.com/v1/tags/coffee/media/recent?client_id=[]&access_token=[]",
        success: function(data)  {
            for (var i = 0; i < 20; i++) {
                $(".instagram").append("<a class='big-square span2' target='_blank' href='" + data.data[i].link +"'><img src='" + data.data[i].images.low_resolution.url +"'></img></a>");
            }
        }
    });
</script>
15
PhDeOliveira

InstagramのAPIには20画像の制限があります。このスレッドと私の答えをチェックしてください:

Instagramのリクエストの最大数はいくつですか?

編集:また、 [〜#〜] this [〜#〜]

11
tcd

2015年11月17日より前に作成されたアプリは2016年6月まで機能し続けます。2016年6月以降、アプリは、審査プロセスで承認されなかった場合、自動的にサンドボックスモードに移行します。
サンドボックスモードは実際のInstagramデータ(つまり、Instagramアプリで通常表示されるもの)ですが、次の条件があります。

  • サンドボックス内のアプリは10ユーザーに制限されています
  • データは、10人のユーザーと各ユーザーからの20人の最新メディアに制限されています
  • APIレート制限の削減

詳細

5
Dariush Salami

このコードを試してください

$api = "https://api.instagram.com/v1/tags/snow/media/recent?client_id=".$client;  

function get_curl($url) {  
    if(function_exists('curl_init')) {  
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_URL,$url);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
        curl_setopt($ch, CURLOPT_HEADER, 0);  
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);  
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   
        $output = curl_exec($ch);  
        echo curl_error($ch);  
        curl_close($ch);  
        return $output;  
    } else{  
        return file_get_contents($url);  
    }  
}

while ($api !== NULL) {
    $response = get_curl($api);
    foreach(json_decode($response)->data as $item){   
        $src = $item->images->standard_resolution->url;  
        $thumb = $item->images->thumbnail->url;  
        $url = $item->link;  

        $images[] = array(  
        "src" => htmlspecialchars($src),  
        "thumb" => htmlspecialchars($thumb),  
        "url" => htmlspecialchars($url)  
        );  
    echo "<a href='".$src."'><img src='".$thumb."'  width='150' height='150' border='0'></a> ";
    } 
    $api = json_decode($response)->pagination->next_url;
}
3
liding

&count=Nをリクエストに追加してみてください。Nは必要な結果の数です。

3
hayk.mart

countパラメーターを指定して、必要な数に設定することにより、20を超えるアイテムを取得できます。

ただし、Instagramでは、すべてのリクエストに対して文書化されていない33の制限も課されているため、33を超える場合はページ番号を付ける必要があります。

しかし、私は Instafetch と書いて、ページ付けに役立ちます。タグでメディアをフィルタリングすることもできます。気軽にご利用ください!

1
d4nyll

http://instagram.com/developer/endpoints/ を参照してください。エンドポイントのジェネリックについて詳しく説明し、ページネーション属性もリストします。つまり、「ページ分割」応答には、次の結果セットを取得するために使用できるnext_urlが含まれます。その後、すべての次のURLを取得すると(結果に含まれている限り)、完全なセットが得られます。

ところで、リクエストのcountパラメータを増やすことができます。 (使用しているInstagramライブラリによっては、そのようなものはoptionsハッシュまたは類似のものを介して提供できます。)これにより、いくつかの余分なリクエストを節約できる場合があります。今言ったページは最大カウント値を指定していません。 Instagramが最大値を動的に、エンドポイントごとに変更しているのではないかと思います。

20件を超える投稿を取得することはできません。サンドボックスユーザーの場合は、「API動作」をお読みください こちら

1
Achira Shamal
<script>
    var token = 'your_token',
    userid = your_id,
    num_photos = 12;
    $.ajax({
            url: 'https://api.instagram.com/v1/users/'+userid+'/media/recent',
            dataType: 'jsonp',
            type: 'GET',
            data: {access_token: token, count: num_photos},
            success: function(data){
                console.log(data);
            },
            error: function(data){
            }
        });
</script>

12枚

https://rudrastyh.com/javascript/get-photos-from-instagram.html

0
kenai37

実際には、次の20枚の写真を取得するチャンスがあります。その後、次の20枚というように続きます。JSONレスポンスには、「ページネーション "配列:

 "pagination":{
      "next_max_tag_id":"1411892342253728",
      "deprecation_warning":"next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
      "next_max_id":"1411892342253728",
      "next_min_id":"1414849145899763",
      "min_tag_id":"1414849145899763",
      "next_url":"https:\/\/api.instagram.com\/v1\/tags\/lemonbarclub\/media\/recent?client_id=xxxxxxxxxxxxxxxxxx\u0026max_tag_id=1411892342253728"
 }

これは特定のAPI呼び出しに関する情報であり、オブジェクト "next_url"は次の20枚の写真を取得するためのURLを表示するので、そのURLを取得して呼び出します次の20枚...

instagram APIの詳細については、こちらをご覧ください: https://medium.com/@KevinMcAlear/getting-friendly-with-instagrams-api-abe3b929bc52

0
user3632055

instafeed のようなInstagramフィードライブラリを使用できます。 60枚の画像のフィードを取得できます(最大)

例えば:

<script type="text/javascript">
    var feed = new Instafeed({
        get: 'tagged',
        tagName: 'awesome',
        limit: 20,
        clientId: 'YOUR_CLIENT_ID'
    });
    feed.run();
</script>

limit(number)-追加する画像の最大数。最大60。

0
Srikukan Ajith