Я работаю над проектом для отображения выбранных фотографий Instagram в альбоме по хэштегу, поскольку API Instagram ограничивает 35 изображений на вызов API. ) или смесь PHP и AJAX. Я выбрал последнее, потому что не хотел, чтобы мой токен доступа и идентификатор пользователя были доступны в коде моей галереи.
<?PHP
function jsongram($next=null){
$userid = "xxx";
$accessToken = "xxx";
$url = ("https://api.instagram.com/v1/users/{$userid}/media/recent/?access_token={$accessToken}");
if($url !== null) {
$url .= '&max_id=' . $next;
}
//Also Perhaps you should cache the results as the instagram API is slow
$cache = './'.sha1($url).'.json';
//unlink($cache); // Clear the cache file if needed
if(file_exists($cache) && filemtime($cache) > time() - 60*60){
// If a cache file exists, and it is newer than 1 hour, use it
$jsonData = json_decode(file_get_contents($cache));
}else{
$jsonData = json_decode((file_get_contents($url)));
file_put_contents($cache,json_encode($jsonData));
}
?>
<html>
<head>
</head>
<body>
<?php
$data_array = array();
foreach ($jsonData->data as $data){
if (stripos($data->caption->text,'egypt') === false) {
}
else{
$data_array[] = $data;
$data = (str_split($data->caption->text));
$data = (array_filter($data));
}
}
foreach ($data_array as $data):{
$igimglow = $data->images->low_resolution->url;
$igimgstd = $data->images->standard_resolution->url;
$igimgthumb = $data->images->thumbnail->url;
$igcaption = str_replace('#', '', (preg_replace('/(?:#[\w-]+\s*)+$/', '', $data->caption->text)));
$igtime = date("F j, Y", $data->caption->created_time);
$iglikes = $data->likes->count;
$igcomments = $data->comments->count;
$iglong = $data->location->longitude;
$iglat = $data->location->latitude ;
$igusername = $data->user->username;
$igfullname = $data->user->full_name;
$iglink = $data->link;
$igfilter = $data->filter;
$igtags = implode(',',$data->tags);
?>
<img src="<?php echo ($igimglow);}?>">
<?php endforeach ?>
<?php
if(isset($jsonData->pagination->next_max_id)) {
$result .= '<div><a href="?next=' . $jsonData->pagination->next_max_id . '">Next</a></div>';
}
return $result;
}
?>
<div id="container">
<?=jsongram(@$_GET['next']);?>
<div id="result"></div>
</div>
</body>
</html>
Вот живой пример приведенного выше кода:
http://johnricedesign.com/examples/pn.php
Как показано выше, на 2-й странице отображаются фотографии с тегом «египет». Я хотел бы заменить ссылку "Далее" для автоматической загрузки на той же странице кнопкой "Загрузить еще" - насколько мне известно, использование AJAX - единственный способ сделать это. Однако я не знаю, как это сделать или даже с чего начать. Вторая очевидная проблема, с которой я сталкиваюсь, заключается в том, что, хотя я удаляю фотографии, которые не содержат подписи «египет», я все еще получаю много пустых мест, я полагаю, что это будет довольно просто исправить, когда будет использоваться AJAX. .
Я рвал на себе волосы последние 5 дней, пытаясь это сделать. Ваша помощь, совет, мудрость, очень ценятся заранее.