1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 // PLUGIN_INFO//{{{ var PLUGIN_INFO = <VimperatorPlugin> <name>{NAME}</name> <description>hash of file</description> <author mail="konbu.komuro@gmail.com" homepage="http://d.hatena.ne.jp/hogelog/">hogelog</author> // PLUGIN_INFO//{{{ var PLUGIN_INFO = <VimperatorPlugin> <name>retweet</name> <description>ReTweet This Page.</description> <description lang="ja">開いているTweetをReTweetします。</description> <author mail="from.kyushu.island@gmail.com" homepage="http://iddy.jp/profile/from_kyushu">from_kyushu</author> <version>0.3</version> <license>GPL</license> <minVersion>1.2</minVersion> <maxVersion>2.1</maxVersion> <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/retweet.js</updateURL> <require type="plugin">_libly.js</require> <detail><![CDATA[ == Command == Usage: :rtt ReTweet This Post. ]]></detail> </VimperatorPlugin>; //}}} // ( function() { var password; var username; var passwordManager = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager); var $U = liberator.plugins.libly.$U; function getBody() { var body = $U.getFirstNodeFromXPath("//span[@class='entry-content']").innerHTML; //return body.replace(/<[^>]*>/g, ""); var tags = body.match(/<[^>]*>/g); for(var tag in tags) { body = body.replace(tags[tag],""); } return body; } function getUserName() { return $U.getFirstNodeFromXPath('//a[contains(concat(" ",normalize-space(@class)," "),"screen-name")]').innerHTML; } function getShortenUrl(longUrl) { var xhr = new XMLHttpRequest(); var req = "http://bit.ly/api?url=" + encodeURIComponent(longUrl); xhr.open('GET',req, false); xhr.send(null); if(xhr.status != 200) { return longUrl; } return xhr.responseText; } function sendTwitter(url,name,body,comment) { var xhr = new XMLHttpRequest(); var statusText = (comment ? comment + " " : "") + "RT @" + name + " [" + url +"]: " + body; return liberator.echo(statusText); xhr.open("POST", "https://twitter.com/statuses/update.json", false, username, password); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("status=" + encodeURIComponent(statusText) + "&source=Vimperator"); liberator.echo("[RT] Your post was sent."); } commands.addUserCommand( ['retweet[This]','rtt'], 'ReTweet This.', function(args) { try { var logins = passwordManager.findLogins({}, "http://twitter.com","https://twitter.com",null); var body = getBody(); var name = getUserName(); var url = getShortenUrl(buffer.URL); if(logins.length) { username = logins[0].username; password = logins[0].password; sendTwitter(url,name,body,args.literalArg); } else if(liberator.globalVariables.twitter_username && liberator.globalVariables.twitter_password) { username = liberator.globalVariables.twitter_username; password = liberator.globalVariables.twitter_password; sendTwitter(url,name,body,args.literalArg); } else { throw "Accont not found"; } } catch(e) { liberator.echoerr(e); } }, { literal: 0 }, true ); } )();