Grab latest tweets from Twitter API
/* | |
Latest Tweets Plugin | |
Markup required: | |
<div class="latestTweets" data-user="unitseven" data-count="3"></div> | |
*/ | |
(function( $ ) { | |
"use strict"; | |
function relative_time(time_value) { | |
var values = time_value.split(" "); | |
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3]; | |
var parsed_date = Date.parse(time_value); | |
var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); | |
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000,10); | |
delta = delta + (relative_to.getTimezoneOffset() * 60); | |
if (delta < 60) { | |
return 'less than a minute ago'; | |
} else if(delta < 120) { | |
return 'about a minute ago'; | |
} else if(delta < (60*60)) { | |
return (parseInt(delta / 60,10)).toString() + ' minutes ago'; | |
} else if(delta < (120*60)) { | |
return 'about an hour ago'; | |
} else if(delta < (24*60*60)) { | |
return 'about ' + (parseInt(delta / 3600,10)).toString() + ' hours ago'; | |
} else if(delta < (48*60*60)) { | |
return '1 day ago'; | |
} else { | |
return (parseInt(delta / 86400,10)).toString() + ' days ago'; | |
} | |
} | |
$.fn.latestTweets = function() { | |
var el = this; | |
this.addClass('loading'); | |
var count = parseInt(this.data('count'),10) <= 0 ? 1 : this.data('count'); | |
var user = this.data('user'); | |
$.getJSON("http://api.twitter.com/1/statuses/user_timeline.json?screen_name="+user+"&callback=?&count="+count,function(data){ | |
el.removeClass('loading'); | |
var statusHTML = []; | |
for (var i=0; i<data.length; i++){ | |
var username = data[i].user.screen_name; | |
var status = data[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\]])/g, function(url){ | |
return '<a href="'+url+'">'+url+'</a>'; | |
}).replace(/\B@([_a-z0-9]+)/ig, function(reply){ | |
return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>'; | |
}); | |
statusHTML.push('<li><span class="tweet">'+status+'</span><span class="tweettime"><a href="http://twitter.com/'+username+'/statuses/'+data[i].id_str+'">'+relative_time(data[i].created_at)+'</a></span></li>'); | |
} | |
el.html('<ul class="tweets">'+statusHTML.join('')+"</ul>"); | |
}); | |
}; | |
if($('.latestTweets').length){ | |
$('.latestTweets').each(function(i,el){ | |
if($(el).data('user') !== "" || $(el).data('user') === 'undefined'){ | |
$(el).latestTweets(); | |
} | |
}); | |
} | |
})( jQuery ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment