~ overflow ~

Tag: fetch

Custom twitter data fetching in php with cache

by z3n on May.28, 2010, under Coding, Tips & Hints

Problem:

I had to fit the twitter posts (“tweets”) on a site using a special layout, without all the regular twitter crapola

Solution:

There’s this old script that return contents as json, although i could simply add it to the javascript, it would slow down the site, everytime a new page was loaded user would need to fetch tweets all over again, so i did a little php function to fetch it cache and add to the output:

function _ld_twitter($profile=_twitter_profile,$tweets=_twitter_tweets) { // v1.0
	// check cache
	$hash=md5(md5($profile).md5($tweets));
	if (_twitter_cache && file_exists(_twitter_cache_path.$hash.".idx") && file_exists(_twitter_cache_path.$hash) && _fs(_twitter_cache_path.$hash.".idx") > getmicrotime())
		return _fs(_twitter_cache_path.$hash);

	// build
	$x=file_get_contents("http://twitter.com/statuses/user_timeline/".$profile.".json?callback=x&count=".$tweets);
	if ($x != "") {
		$x=json_decode(substr($x,2,-2));
		$b=_fs(templates."twitter".file_ext);$r="";$i=count($x)-1;
		foreach ($x as $k => $v)
			$r.=str_replace(array(
				"##WHO##","##IMG##",
				"##WHEN##","##MSG##",
				"##DELAY##","##LAST##"
				),array(
					$v->user->screen_name,$v->user->profile_image_url,
					date(_dt2,strtotime($v->created_at)),not_utf8($v->text),
					duration(getmicrotime()-strtotime($v->created_at),1,0),$k == $i ? " id='last'" : ""
			),$b);
		// do cache
		if (_twitter_cache) {
			_fw(_twitter_cache_path.$hash.".idx",(_twitter_cache_life*60) + getmicrotime(),"w");
			_fw(_twitter_cache_path.$hash,$r,"w");
		}
		// return
		return $r;
	} else {
		return false;
	}
}

// defines -- yes not formatted correctly
"_twitter_profile" => "your_tweeter_profile_name",										// twitter profile
"_twitter_tweets" => 3,															// how many tweets to load
"_twitter_cache_life" => 15,												// twitter cache life in minutes
"_twitter_cache_path" => "lib/cache/",							// twitter cache path
"_twitter_cache" => 1,															// enables / disables twitter cache
"_dt2" => "d M Y",
"templates" => "templates/",
"file_ext" => ".html"

/*
functions (not added here)
those functions are enhanced versions of basic functions, to try this script you can just take :
_fs = file_get_contents
_fw = file_put_contents
duration = a function to return a number of seconds into years, months, days, hours, minutes, seconds notation
*/

If you want to implement it as javascript, you can use the url:
http://twitter.com/statuses/user_timeline/”.$profile.”.json?callback=x&count=”.$tweets

where the callback is the function where the json data will be sent to.

1 Comment :, , , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!