Twitter API 1.1 Hashtag Count

Zach Koneffko picture Zach Koneffko · Sep 26, 2013 · Viewed 9.6k times · Source

I am having an issue figuring out how to return a total count for the number of times a hashtag was used on Twitter. In the past I used the following code which did work but the "http://search.twitter.com/search.json" address has since been retired by Twitter. The old code was:

<?php
   global $total, $hashtag;
   //$hashtag = '#supportvisitbogor2011';
   $hashtag = '#MyHashtag';
   $total = 0;
   function getTweets($hash_tag, $page) {
      global $total, $hashtag;
      $url = 'http://search.twitter.com/search.json?q='.urlencode($hash_tag).'&';
      $url .= 'page='.$page;    
      $ch = curl_init($url);
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
      $json = curl_exec ($ch);
      curl_close ($ch);
      //echo "<pre>";    
      //$json_decode = json_decode($json);
      //print_r($json_decode->results);

      $json_decode = json_decode($json);        
      $total += count($json_decode->results);    
      if($json_decode->next_page){
         $temp = explode("&",$json_decode->next_page);        
         $p = explode("=",$temp[0]);                
         getTweets($hashtag,$p[1]);
      }        
   }

   getTweets($hashtag,1);

   echo $total; 
?>

I know that you know have to use a authorized twitter application and have access to be able to pull data. I was able to set up the app and I can pull a list of data using the following code but I'm not sure how to use that data to come up with a total count. Can someone help me to get a total by either changing the code I have or helping me with how I should go about it. Here's the code I have that pulls the hashtag data:

<?php
session_start();
require_once("twitteroauth.php"); //Path to twitteroauth library

$hashtag = "MyHashtag";
$consumerkey = "MYINFOWOULDBEHERE";
$consumersecret = "MYINFOWOULDBEHERE";
$accesstoken = "MYINFOWOULDBEHERE";
$accesstokensecret = "MYINFOWOULDBEHERE";

function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) {
  $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
  return $connection;
}

$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret);

$tweets = $connection->get("https://api.twitter.com/1.1/search/tweets.json?q=".$hashtag);

echo json_encode($tweets);
?>

Answer

user2824854 picture user2824854 · Oct 4, 2013

Here is one example for Twitter 1.1 API made from this. Keep this in mind:

Please note that Twitter's search service and, by extension, the Search API is not meant to be an exhaustive source of Tweets. Not all Tweets will be indexed or made available via the search interface.

https://dev.twitter.com/docs/api/1.1/get/search/tweets

  1. Download twitter-api-php and extract it to your folder at your server
  2. Create a Developer Account and an Application
  3. Create a file twitter_search.php (in the same folder where you have twitter-api-php)
  4. Add your tokens and keys to twitter_search.php

twitter_search.php:

<?php
require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$requestMethod = 'GET';
$hashtag = 'twitterapi';
$getfield = '?q=%23'.$hashtag.'&result_type=recent&include_entities=true&count=100';

// Perform the request
$twitter = new TwitterAPIExchange($settings);
$json_output = $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();

// Let's calculate how many results we got
$json = json_decode($json_output);
$n = count($json->statuses);
echo $n;
?>

Using the Twitter Search API

I posted originally this example in here.