Ответ 1
Instagram имеет ограничение на 20 изображений на свой API, проверяет этот поток и мой ответ:
Каково максимальное количество запросов для Instagram?
EDIT: также посмотрите ЭТО
Я занимаюсь некоторыми исследованиями и пытаюсь понять, как отображать более 20 изображений, которые выводятся из instram api. Я новичок в этом, поэтому любая помощь будет оценена! Просто пытаясь увидеть, есть ли какие-нибудь работы вокруг? Видел что-то о добавлении разбивки на страницы, которое могло бы помочь. Если это будет информация о том, как это сделать, тоже будет здорово!
Вот код, который у меня есть.
<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>
Instagram имеет ограничение на 20 изображений на свой API, проверяет этот поток и мой ответ:
Каково максимальное количество запросов для Instagram?
EDIT: также посмотрите ЭТО
Любое приложение, созданное до 17 ноября 2015 года, продолжит функционировать до июня 2016 года. После июня 2016 года приложение будет автоматически перемещено в режим Sandbox, если оно не было одобрено в процессе обзора.
Режим Sandbox - это реальные данные Instagram (т.е. То, что обычно отображается в приложении Instagram), но со следующими условиями:
Попробуйте добавить &count=N
к запросу, где N - количество желаемых результатов.
Попробуйте этот код
$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;
}
См. http://instagram.com/developer/endpoints/. Он детализирует общие признаки конечных точек, также перечисляя атрибуты разбиения на страницы. Короче говоря, ответ "с разбивкой по страницам" будет содержать next_url
, который может быть использован для получения следующего набора результатов. Последующее извлечение всех следующих URL-адресов (если они указаны в результате) предоставит вам полный набор.
Кстати, вы можете попытаться увеличить параметр count
в запросе. (В зависимости от используемой вами библиотеки Instagram такие вещи могут предоставляться с помощью хэша options
или что-то подобное.) Это может сэкономить вам несколько дополнительных запросов. На странице, о которой я только что говорил, не указано максимальное значение счета. Я подозреваю, что Instagram меняет максимум динамически и на конечную точку.
Вы можете получить более 20 элементов, указав параметр count
и установите его на нужный номер.
Однако Instagram также налагает недокументированный лимит в 33 для каждого сделанного вами запроса, поэтому вам нужно будет разбивать страницы, если вы получите более 33.
Однако я написал Instafetch, который поможет вам разбивать страницы, он даже фильтрует медиатеки для вас, Поэтому не стесняйтесь использовать его!
Вы не можете получить более 20 сообщений, если вы являетесь пользователем песочницы прочитайте в разделе "API BEHAVIOR" здесь
Собственно, есть шанс получить следующие 20 картин, а после этого следующие 20 и так далее... В ответ JSON есть массив < pagination:
"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" показывает URL-адрес, чтобы получить следующие 20 снимков, поэтому просто возьмите этот URL-адрес и вызовите его для следующих 20 изображений...
для получения дополнительной информации о API Instagram проверьте это: https://medium.com/@KevinMcAlear/getting-friendly-with-instagrams-api-abe3b929bc52
Вы можете использовать библиотеки каналов Instagram, такие как instafeed. Он позволяет получать фид 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.
<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>
https://rudrastyh.com/javascript/get-photos-from-instagram.html