How can I add a search parameter?
I need help adding a search parameter to a web application I'm currently developing. Right now, my search results are being pulled from Twitter and includes ALL tweets, however I would like for the returned tweets to all contain a certain word. For the sake of example, if anyone could show me how to do this using the word 'dog' I would greatly appreciate it!
- function string_replace(haystack, find, sub) {
return haystack.split(find).join(sub);
}
String.prototype.parseHashtag = function() {
return this.replace(/[#]+[A-Za-z0-9-_]+/g, function(t) {
var tag = t.replace("#","#");
return t.link("http://search.twitter.com/search?q="+tag);
});
};
String.prototype.parseUsername = function() {
return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
var username = u.replace("@","");
return u.link("http://twitter.com/"+username);
});
};
function tweetEntry(item) {
var text = item.text;
var match = /(http|https)://(w+:{0,1}w*@)?(S+)(:[0-9]+)?(/|/([w#!:.?+=&%@!-/]))?/.exec(text);
if (match) {
text = string_replace(item.text, match[0], '<a href="'+ match[0] + '">' + match[0] + '</a>');
}
// @replies and #hashtags
text = text.parseHashtag();
text = text.parseUsername();
var res = "<div class='entry'>"
+ "<div class='username'>"
+ "<a href='http://twitter.com/"+item.from_user+"'>"
+ "<img src='"+item.profile_image_url+"' width='48' height='48'/>"
+ " "+item.from_user+"</a>"
+ "</div>"
+ "<div class='text'>"+text+"</div>"
+ "<div class='date'>"+formatTime(item.created_at)+"</div>"
+ "</div>";
return res;
}
function noResults(search_term) {
var res = "<div class='entry'>"
+ "<div class='no_results'>"
+ "No matching results for '"+ search_term +"'..."
+ "</div>"
+ "</div>";
return res;
}
function formatTime(time){
var now = new Date(), then = new Date(time);
var diff = now - then,
sec = 1000,
min = sec * 60,
hour = min * 60,
day = hour * 24,
week = day * 7;
if(isNaN(diff) || diff < 0){
return "";
}
if(diff < sec * 7){
return "right now";
}
if(diff < min){
return Math.floor(diff / sec) + " seconds ago";
}
if(diff < min * 2){
return "about 1 minute ago";
}
if(diff < hour){
return Math.floor(diff / min) + " minutes ago";
}
if(diff < hour * 2){
return "about 1 hour ago";
}
if(diff < day){
return Math.floor(diff / hour) + " hours ago";
}
if(diff > day && diff < day * 2){
return "yesterday";
}
if(diff < day * 365){
return Math.floor(diff / day) + " days ago";
} else {
return "over a year ago";
}
}
function getLang() {
var code = navigator.language;
// iso 639-1 codes are always 2 letters long
return code.substr(0,2);
}
function addHashes(words) {
var temp = new Array();
for (var w in words) {
temp.push("#" + words[w]);
}
return temp;
}
function handleSuggestions2(data) {
//var base_url = "http://search.twitter.com/search.json?callback=?&lang="+getLang()+"&q=";
var base_url = "http://search.twitter.com/search.json?callback=?&q=";
var the_words = new Array();
var search_term = data[0];
for (var i in data[1]) {
the_words.push(data[1][i][0]);
}
// add hash to suggested words
if (search_term[0] == "#") {
the_words = addHashes(the_words);
}
$("#searchfield").autocomplete(
{ source: the_words.slice(0,4)
});
if (the_words.length == 0) {
renderGeist("", search_term);
$.get(base_url + encodeURIComponent(search_term),
{ rpp: 10
},
function(data) {
if (!data.error) {
$("#main").empty();
if (data.results.length > 0) {
for(var i in data.results) {
$("#main").append(tweetEntry(data.results[i]));
}
} else {
$("#main").append(noResults(search_term));
}
}
}, "json");
} else {
renderGeist(the_words[0], search_term);
$.get(base_url + encodeURIComponent(search_term +' OR '+ the_words[0]),
{ rpp: 10
},
function(data) {
if (!data.error) {
$("#main").empty();
if (data.results.length > 0) {
for (var i in data.results) {
$("#main").append(tweetEntry(data.results[i]));
}
} else {
$("#main").append(noResults(search_term));
}
}
}, "json");
}
}
function suggestedTerms(term) {
var suggest_url = "http://suggestqueries.google.com/complete/search?hl="+getLang()+"&cp=1&hjson=t&jsonp=?&q=";
// badly hacked (no official api), but working...
$.getJSON(suggest_url + term, handleSuggestions2);
}
function instantTwitter(event) {
var search_term = encodeURIComponent($("#searchfield").val());
if (search_term.length > 0) {
// get suggested search terms
suggestedTerms(search_term);
} else {
$("#geist").empty();
}
}
function renderGeist(word, search_term) {
var len = search_term.length;
if (search_term.toLowerCase() == word.substr(0,len).toLowerCase()) {
var leng = search_term.length;
var temp_word = word.slice(leng);
var final_word = search_term + temp_word;
$("#geist").text(final_word);
} else {
$("#geist").text("");
}
}
$(document).ready(
function() {
$("#moreResult").click( function(e) {
$("#main").animate({
height: '+=100',
}, 1000, function() {
});
e.preventDefault();
});
$("#about_lnk").click(
function() {
$("#dialog").dialog();
});
//$("#message").slideDown("slow").delay(7000).slideUp("slow");
$("#searchfield").focus();
$("#searchfield").submit(instantTwitter);
$("#searchfield").keyup(instantTwitter);
}
);