From e03c4a1d2e35c037d7b56c0f78d9ef7752e69e07 Mon Sep 17 00:00:00 2001 From: mattn Date: Wed, 21 Jan 2009 04:55:36 +0000 Subject: search from http://search.twitter.com/ git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@28736 d0d07461-0603-4401-acd4-de1884942a52 --- twitter.js | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) (limited to 'twitter.js') diff --git a/twitter.js b/twitter.js index 6a3b075..82e28d3 100644 --- a/twitter.js +++ b/twitter.js @@ -1,5 +1,5 @@ // Vimperator plugin: "Update Twitter" -// Last Change: 11-Nov-2008. Jan 2008 +// Last Change: 21-Jan-2009. Jan 2008 // License: Creative Commons // Maintainer: Trapezoid - http://unsigned.g.hatena.ne.jp/Trapezoid // @@ -11,7 +11,7 @@ // :twitter! someone // show someone's statuses. // :twitter!? someword -// show search result of 'someword' from "http://twitter.1x1.jp". +// show search result of 'someword' from "http://search.twitter.com/". // :twitter!@ // show replies. // :twitter!+ someone @@ -36,6 +36,22 @@ while (re.test(result) && i < arguments.length) result = result.replace(re, arguments[i++]); return result; } + function getElementsByXPath(xpath, node){ + node = node || document; + var nodesSnapshot = (node.ownerDocument || node).evaluate(xpath, node, null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + var data = []; + for(var i = 0, l = nodesSnapshot.snapshotLength; i < l; + data.push(nodesSnapshot.snapshotItem(i++))); + return (data.length > 0) ? data : null; + } + function getFirstElementByXPath(xpath, node){ + node = node || document; + var doc = node.ownerDocument; + var result = (node.ownerDocument || node).evaluate(xpath, node, null, + XPathResult.FIRST_ORDERED_NODE_TYPE, null); + return result.singleNodeValue ? result.singleNodeValue : null; + } function sayTwitter(username, password, stat){ var xhr = new XMLHttpRequest(); xhr.open("POST", "http://twitter.com/statuses/update.json", false, username, password); @@ -121,21 +137,28 @@ } function showTwitterSearchResult(word){ var xhr = new XMLHttpRequest(); - xhr.open("GET", "http://twitter.1x1.jp/rss/search/?keyword=" + encodeURIComponent(word) + "&text=1", false); + xhr.open("GET", "http://search.twitter.com/search.json?q=" + encodeURIComponent(word), false); xhr.send(null); - var items = xhr.responseXML.getElementsByTagName('item'); + var results = (evalFunc("("+xhr.responseText+")") || {'results':[]}).results; + var html = .toSource() - .replace(/(?:\r?\n|\r)[ \t]*/g, " "); - for (var n = 0; n < items.length; n++) - html += <> - {items[n].getElementsByTagName('title')[0].textContent}‬ - : {items[n].getElementsByTagName('description')[0].textContent}‬ + .replace(/(?:\r?\n|\r)[ \t]*/g, " ") + + results.map(function(result) + <> + {result.from_user} + {result.from_user}‬ + : {result.text} + .toSource() + .replace(/(?:\r?\n|\r)[ \t]*/g, " ")) + .join("
"); -
- .toSource() - .replace(/(?:\r?\n|\r)[ \t]*/g, " "); + //liberator.log(html); liberator.echo(html, true); } liberator.modules.commands.addUserCommand(["twitter"], "Change Twitter status", -- cgit v1.2.3