Terminal-based Twitter Client with Streaming API.
It supports only Ruby 1.9.
Homepage: https://github.com/jugyo/earthquake
Twitter: http://twitter.com/earthquakegem
Demo: http://www.youtube.com/watch?v=S2KtBGrIe5c
Slide: http://www.slideshare.net/jugyo/earthquakegem
We need patches that fix the english of the documentation!
- You can use Twitter entirely in your Terminal.
- You can receive data in real time with Streaming API.
- You can easily extend by using Ruby.
$ gem install earthquake
Ubuntu: The EventMachine needs the package libssl-dev.
$ sudo apt-get install libssl-dev
$ earthquake
⚡ Hello World!
⚡ $xx
$xx is the alias of tweet id.
⚡ $xx hi!
⚡ :delete $xx
⚡ :retweet $xx
⚡ :recent
⚡ :recent jugyo
⚡ :recent yugui/ruby-committers
⚡ :search #ruby
⚡ :eval Time.now
⚡ :exit
⚡ :reconnect
⚡ :restart
⚡ :thread $xx
⚡ :plugin_install https://gist.github.com/899506
⚡ :alias rt retweet
And there are more commands!
The default earthquake director is ~/.earthquake.
The config file is ~/.earthquake/config.
You can change the directory at launch as below:
$ earthquake ~/.earthquake_foo
# ~/.earthquake/config
Earthquake.config[:colors] = (31..36).to_a - [34]
Blue is excluded.
# ~/.earthquake/config
Earthquake.config[:color] = {
:info => 34,
:notice => 41,
:event => 46,
:url => [4, 34]
}
# ~/.earthquake/config
Earthquake.alias_command :rt, :retweet
Please set environment variable http_proxy if you want earthquake to use http proxy.
To enable desktop notifications, install one of the following:
- ruby-growl (gem install ruby-growl)
- growlnotify (http://growl.info/extras.php#growlnotify)
- notify-send (sudo aptitude install libnotify-bin)
- libnotify (https://github.com/splattael/libnotify)
Call Earthquake.notify for desktop notification. You can try it by using the :eval command:
⚡ :eval notify 'Hello World!'
see https://github.com/jugyo/earthquake/wiki
~/.earthquake/plugin is the directory for plugins. At launch, Earthquake tries to load files under this directory. The block that is specified for Earthquake.init will be reloaded at any command line input.
Earthquake.init do
command :foo do
puts "foo!"
end
end
Earthquake.init do
command :hi do |m|
puts "Hi #{m[1]}!"
end
end
The 'm' is a MatchData.
Earthquake.init do
# Usage: :add 10 20
command %r|^:add (\d+)\s+(\d+)|, :as => :add do |m|
puts m[1].to_i + m[2].to_i
end
end
Earthquake.init do
output do |item|
next unless item["_stream"]
if item["text"] =~ /ruby/i
notify "#{item["user"]["screen_name"]}: #{item["text"]}"
end
end
end
Earthquake.init do
output do |item|
case item["event"]
when "favorite"
notify "[favorite] #{item["source"]["screen_name"]} => #{item["target"]["screen_name"]} : #{item["target_object"]["text"]}"
end
end
end
Earthquake.init do
output_filter do |item|
if item["_stream"] && item["text"]
item["text"] =~ /ruby/i
else
true
end
end
end
Earthquake.init do
output :tweet do |item|
next unless item["text"]
name = item["user"]["screen_name"]
puts "#{name.c(color_of(name))}: foo"
end
end
Earthquake.init do
completion do |text|
['jugyo', 'earthquake', '#eqrb'].grep(/^#{Regexp.quote(text)}/)
end
end
- mark my tweet
- Earthquake should parse ARGV
- ruby1.9nize
- guideline for plugin
- deal proxy
- spec
Copyright (c) 2011 jugyo. See LICENSE.txt for further details.