2012-06-25 1 views

ответ

19

Существует секция тегов общедоступных API instagram, которая может помочь вам в этом. http://instagram.com/developer/endpoints/tags/

+0

Первый URL-адрес кажется сломанным. Это работает: http://instagram.com/developer/endpoints/tags/ – Shahar

+0

@Shahar Обновление, спасибо. –

+1

API-интерфейс instagram просто появляется * безумный *. Неужели они ожидают, что вы получите аутентификацию у каждого посетителя, чтобы получить публичный фид? –

26

Вот еще один пример, который я написал некоторое время назад:

<?php  
    // Get class for Instagram 
    // More examples here: https://github.com/cosenary/Instagram-PHP-API 
    require_once 'instagram.class.php'; 

    // Initialize class with client_id 
    // Register at http://instagram.com/developer/ and replace client_id with your own 
    $instagram = new Instagram('CLIENT_ID_HERE'); 

    // Set keyword for #hashtag 
    $tag = 'KEYWORD HERE'; 

    // Get latest photos according to #hashtag keyword 
    $media = $instagram->getTagMedia($tag); 

    // Set number of photos to show 
    $limit = 5; 

    // Set height and width for photos 
    $size = '100'; 

    // Show results 
    // Using for loop will cause error if there are less photos than the limit 
    foreach(array_slice($media->data, 0, $limit) as $data) 
    { 
     // Show photo 
     echo '<p><img src="'.$data->images->thumbnail->url.'" height="'.$size.'" width="'.$size.'" alt="SOME TEXT HERE"></p>'; 
    } 
?> 
+0

Знаете ли вы, как пройти предел 20? – Staysee

+0

@ Staysee См. Ответ ниже. – kexxcream

+1

@kexxcream Я запускаю ваш API, и я хочу getTagMedia для хэштега #thesouthfarm. Проблема в том, что я получаю только собственные изображения с этим тегом. Не мои друзья. Есть ли там какие-то ограничения? – Ismailp

5

Чтобы получить более 20 вы можете использовать нагрузки больше кнопки.

index.php

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Instagram more button example</title> 
    <!-- 
    Instagram PHP API class @ Github 
    https://github.com/cosenary/Instagram-PHP-API 
    --> 
    <style> 
    article, aside, figure, footer, header, hgroup, 
    menu, nav, section { display: block; } 
    ul { 
     width: 950px; 
    } 
    ul > li { 
     float: left; 
     list-style: none; 
     padding: 4px; 
    } 
    #more { 
     bottom: 8px; 
     margin-left: 80px; 
     position: fixed; 
     font-size: 13px; 
     font-weight: 700; 
     line-height: 20px; 
    } 
    </style> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script> 
    $(document).ready(function() { 
     $('#more').click(function() { 
     var tag = $(this).data('tag'), 
      maxid = $(this).data('maxid'); 

     $.ajax({ 
      type: 'GET', 
      url: 'ajax.php', 
      data: { 
      tag: tag, 
      max_id: maxid 
      }, 
      dataType: 'json', 
      cache: false, 
      success: function(data) { 
      // Output data 
      $.each(data.images, function(i, src) { 
       $('ul#photos').append('<li><img src="' + src + '"></li>'); 
      }); 

      // Store new maxid 
      $('#more').data('maxid', data.next_id); 
      } 
     }); 
     }); 
    }); 
    </script> 
</head> 
<body> 

<?php 
    /** 
    * Instagram PHP API 
    */ 

    require_once 'instagram.class.php'; 

    // Initialize class with client_id 
    // Register at http://instagram.com/developer/ and replace client_id with your own 
    $instagram = new Instagram('ENTER CLIENT ID HERE'); 

    // Get latest photos according to geolocation for Växjö 
    // $geo = $instagram->searchMedia(56.8770413, 14.8092744); 

    $tag = 'sweden'; 

    // Get recently tagged media 
    $media = $instagram->getTagMedia($tag); 

    // Display first results in a <ul> 
    echo '<ul id="photos">'; 

    foreach ($media->data as $data) 
    { 
     echo '<li><img src="'.$data->images->thumbnail->url.'"></li>'; 
    } 
    echo '</ul>'; 

    // Show 'load more' button 
    echo '<br><button id="more" data-maxid="'.$media->pagination->next_max_id.'" data-tag="'.$tag.'">Load more ...</button>'; 
?> 

</body> 
</html> 

ajax.php

<?php 
    /** 
    * Instagram PHP API 
    */ 

    require_once 'instagram.class.php'; 

     // Initialize class for public requests 
     $instagram = new Instagram('ENTER CLIENT ID HERE'); 

     // Receive AJAX request and create call object 
     $tag = $_GET['tag']; 
     $maxID = $_GET['max_id']; 
     $clientID = $instagram->getApiKey(); 

     $call = new stdClass; 
     $call->pagination->next_max_id = $maxID; 
     $call->pagination->next_url = "https://api.instagram.com/v1/tags/{$tag}/media/recent?client_id={$clientID}&max_tag_id={$maxID}"; 

     // Receive new data 
     $media = $instagram->getTagMedia($tag,$auth=false,array('max_tag_id'=>$maxID)); 

     // Collect everything for json output 
     $images = array(); 
     foreach ($media->data as $data) { 
     $images[] = $data->images->thumbnail->url; 
     } 

     echo json_encode(array(
     'next_id' => $media->pagination->next_max_id, 
     'images' => $images 
    )); 
?> 

instagram.class.php

найти функцию getTagMedia() и заменить:

public function getTagMedia($name, $auth=false, $params=null) { 
    return $this->_makeCall('tags/' . $name . '/media/recent', $auth, $params); 
} 
+0

Это отлично работает! +1 Если бы у вас было время, не могли бы вы взглянуть на аналогичную проблему, которая у меня есть? http://stackoverflow.com/questions/17487231/input-value-in-ajax-call-does-not-work –

+0

Кажется, кому-то еще удалось быстрее ответить, поэтому я думаю, что он решен. – kexxcream

+0

Да, видимо. Спасибо, в любом случае! –

15

Если вам нужно отобразить базу изображений только в теге, тогда не следует включать класс-оболочку «instagram.class.php». Поскольку конечные точки тегов Media & в API Instagram не требуют аутентификации. Вы можете использовать следующую функцию curl для получения результатов на основе вашего тега.

function callInstagram($url) 
    { 
    $ch = curl_init(); 
    curl_setopt_array($ch, array(
    CURLOPT_URL => $url, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => 2 
    )); 

    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
    } 

    $tag = 'YOUR_TAG_HERE'; 
    $client_id = "YOUR_CLIENT_ID"; 
    $url = 'https://api.instagram.com/v1/tags/'.$tag.'/media/recent?client_id='.$client_id; 

    $inst_stream = callInstagram($url); 
    $results = json_decode($inst_stream, true); 

    //Now parse through the $results array to display your results... 
    foreach($results['data'] as $item){ 
     $image_link = $item['images']['low_resolution']['url']; 
     echo '<img src="'.$image_link.'" />'; 
    } 
+0

Я заметил, что он хватает всего 20 картин. Являются ли эти 20 последних фотографий? Как получить больше? – dKab

+0

Те самые последние 20. Если вы посмотрите на URL-адрес, у него есть «media/recent». В соответствии с API Instagram, который будет упорядочиваться по дате спуска. – mirichan

+0

@Gursharan Singh Здравствуйте, у меня есть hashtag с подчеркиванием, и я использую этот код и отлично работаю для всех хэштегов, кроме хэштега, с подчеркиванием любой справки. – Fadi

3

Я поставил код PHP, который может помочь в случае, если вы хотите получить доступ к Instagram изображений без апи на основе хэштегом

Php Code for Instagram hashtag images

13

С ноября 17, 2015 Вы должны аутентификации пользователей сделать любые (даже такие, как «получить некоторые фотографии с конкретными хэштегами»). См the Instagram Platform Changelog:

приложения, созданные на или после 17 ноября 2015 года: Все оконечные API требуется действительный access_token. приложение, созданное до 17 ноября 2015 года: Непораженного нового поведение API до 1 июня 2016 года

это делает в настоящее время всех ответы, приведенные здесь до 1 июня 2016 года больше не полезно.

+0

, но вы можете получить «получить некоторые фотографии, у которых есть конкретный хэштег» [без использования API] (http://stackoverflow.com/questions/40542335/how-to-get-all-images-of-hashtag-in -instagram-without-api) – machineaddict

+0

2017 и я все еще могу получить данные без токена доступа. Пример: https://www.instagram.com/salvun/media/ – redochka

+0

Как я могу получать сообщения, используя различные хэштеги в моем приложении для Android? –

Смежные вопросы