Several weeks ago, I decided to start a weekly blog entry compiling a list of my technical tweets from Twitter. After the second week, I noticed that it was taking me much too long to compile the list, so I decided to create a tool to make it easier.
My current solution involves several Firefox add-ons, jQuery, and Twitter. Eventually, it would probably be much easier if I used the Twitter APIs directly, but for now I have found this solution to be a fun learning exercise :)
Steps to Create the Tech Twitterings Entry- Search for my technical (#tech) tweets from Twitter
- Use the Firefox AutoPager add-on to automatically load the next several pages to capture all the tweets from the last week.
- Use the Firefox Greasemonkey add-on and run the Load jQuery Library script to load the jQuery library onto the Twitter search page
// ==UserScript==
// @name Load jQuery Library
// @namespace http://webdevdotnet.blogspot.com
// @include http://search.twitter.com/*
// ==/UserScript==
//Code taken from http://internetducttape.com/2008/05/08/greasemonkey-ninja-jquery/
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
function GM_wait() {
if (typeof unsafeWindow.jQuery == 'undefined') {
window.setTimeout(GM_wait,100);
} else {
$ = unsafeWindow.jQuery; letsJQuery();
}
}
GM_wait();
function letsJQuery() {
unsafeWindow.console.log('The jQuery Library has been loaded');
}
- Use the Firefox Firebug add-on and use it's console (F12) to run the jQuery Twitter Script
$('li.result .msg .msgtxt .expand').remove();
var categories = new Array();
var categoryKeys = new Array();
$('li.result .msg .msgtxt').each(function(i,tweet) {
var tweetText = $(tweet).text();
var regularExpression = new RegExp('.*#tech.*(#\\w+).*', 'gi');
var matches = regularExpression.exec(tweetText);
if (matches != null) {
var match = matches[1];
if (categories[match] == null ) {
categories[match] = new Array();
categoryKeys.push(match);
}
categories[match].push(tweetText);
}
});
for (var i = 0; i < categoryKeys.length; ++i) {
var categoryKey = categoryKeys[i];
console.log('<h3>' + categoryKey + '</h3><ul>');
var category = categories[categoryKey];
for (var j = 0; j < category.length; ++j) {
console.log('<li>' + category[j] + '</li>');
}
console.log('</ul>');
}
- Copy & Paste the contents from the console into Blogger
- Surround the auto-generated HTML content in a div and prepend the JavaScript to convert Text to Hyperlinks.
<script type='text/javascript'>
$(document).ready(function() {
$('#tt4').html(replaceUrlWithHtmlLinks($('#tt4').html()));
});
function replaceUrlWithHtmlLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
}
<div id="tt4">
<!-- Insert Autogenerated jQuery Twitter HTML here... -->
</div>
</script>
No comments:
Post a Comment