从Instagram获取所有具有PHP特定主题标签的照片


Get all photos from Instagram which have a specific hashtag with PHP

我需要使用PHP获取一些具有特定主题标签的图片?任何帮助都会很棒,或提示?

这是我

前段时间写的另一个例子:

<?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>';
    }
?>

Instagram 公共 API 的标签部分可以帮助您做到这一点。

如果您只需要显示基于标签的图像,则不包括包装类"instagram.class.php"。由于Instagram API中的媒体和标签端点不需要身份验证。您可以使用以下基于 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.'" />';
    }

自 2015 年 11 月 17 日起,您必须对用户进行身份验证才能发出任何(甚至"获取一些具有特定主题标签的图片")请求。请参阅Instagram平台更新日志:

在 2015 年 11 月 17 日当天或之后创建的应用: 所有 API 终端节点都需要有效的access_token。 2015 年 11 月 17 日之前创建的应用: 在 2016 年 6 月 1 日之前不受新 API 行为的影响。

这使得现在在 2016 年 6 月 1 日之前给出的所有答案都不再有用。

我已经设置了一个php代码,如果您想根据主题标签在没有api的情况下访问Instagram图像,则可以提供帮助

Instagram标签图片的Php代码

要获得超过 20 个,您可以使用加载更多按钮。

索引.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>

阿贾克斯.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);
}