Home > Tags > twitter
Quicksilver Twitter Plugin
- 2007-12-13 (Thu)
- Uncategorized
I wrote a small Quicksilver plugin to send messages to Twitter directly.

Advantages
- Easy to install. No additional software required to be installed
- Configurable via Quicksilver Preference
- You can send messages containing non-ASCII characters
Download
QSTwitter.zip (1.2) (2008.01.23)
Environment
Tested under Leopard 10.5.1, Quicksilver B53 3814.
Install
Unzip the downloaded file and double-click it. that’s all !
Configuration
You will find “Twitter option” in the Quicksilver preference pane. Enter your screen name and password there.
Usage
- Activate Quicksilver (by Ctrl-SPACE or so)
- type . (period/dot) key to enter text input mode
- type a message
- hit TAB to move into Action
- type “Twitter”
- return !
The more familar you are with it, the faster you can send messages than ever.
Screencast
Seeing is Believing, as you know
I don’t know why the video is collapsing for first 15 seconds. Sorry for inconvinience.
Code
You can see the code in CodeRepos.
License
Considering…
Restriction
- I could not post messages throught HTTP proxy. Let me know if anyone succeeded to make it.
ChangeLog
- 1.2 (2008.01.23) : fixes the bug that ‘+’ is not shown in status, uses pretty girl icon .
- 1.1 (2007.12.22) : now it shows “QSTwitter” in your post on “from …” .
- 1.0 (2007.12.13) : initial release.
There seems no comprehensive documents to develop Quicksilver plugin as far as I searched. In order to share my experience to avoid falling into pitfalls, I will write an tutorial developing a Quicksilver plugin under up-to-date environment later.
- Comments: 9
- Trackbacks: 2
user_timeline_to_ical
- 2007-10-17 (Wed)
- Uncategorized
What is this ?
A simple Ruby script that generates iCalendar format from Twitter user_timeline.
Download
Requirements
following gems installed:
- json
- icalendar
How to use
simply type
ruby user_timeline_to_ical.rb [your_screen_name]
to print out recent 20 events in iCalendar format to stdout.
Redirect its output to a file, then import it with iCal or Google Calendar.
Screenshot
Future …
I’m developing a web service that serves iCalendar feed (by sending direct message to tracking bot). You will subscribe its URL to see your past behaviors at some time.
Code
Try it !
# # create iCalendar from recent 20 user_timeline. # # usage # ruby user_timeline_to_ical.rb [username] > some.ics # require 'rubygems' require 'json' require 'icalendar' require 'uri' require 'open-uri' require 'kconv' require 'nkf' require 'logger' KCODE = 'u' # XXX: # quick fix to avoid charset crash module Icalendar class Component < Icalendar::Base def print_properties s = "" @properties.each do |key,val| # Take out underscore for property names that conflicted # with built-in words. if key =~ /ip_.*/ key = key[3..-1] end # Property name unless multiline_property?(key) prelude = "#{key.gsub(/_/, '-').upcase}" + # Possible parameters print_parameters(val) # Property value value = ":#{val.to_ical}" escaped = prelude + value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;") #escaped = value #s << escaped.slice!(0, MAX_LINE_LENGTH) << "\r\n " while escaped.size > MAX_LINE_LENGTH # XXX : quick fix to avoid charset crash s << escaped << "\r\n" s.gsub!(/ *$/, '') else prelude = "#{key.gsub(/_/, '-').upcase}" val.each do |v| params = print_parameters(v) value = ":#{v.to_ical}" escaped = prelude + params + value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;") s << escaped.slice!(0, MAX_LINE_LENGTH) << "\r\n " while escaped.size > MAX_LINE_LENGTH s << escaped << "\r\n" s.gsub!(/ *$/, '') end end end s end end end class UserTimeLine attr_accessor :id, :since URL = 'http://twitter.com/statuses/user_timeline/' def initialize(id) @id = id #@log = Logger.new('debug.log') end def get(url) JSON.parse(open(url).readlines.join).sort { |a, b| a['id'] <=> b['id'] } end def url(*arg) url = URL + @id + '.json' return url if arg.empty? hash = arg[0] args = {} args['page'] = hash[:page] if hash[:page] if hash[:since] if String == hash[:since].class args['since'] = URI.escape(hash[:since].split.join('+')) else # should be Number args['since_id'] = hash[:since] end end arg = args.collect { |k, v| [k, v].join('=') }.join('&') url + '?' + arg end def to_ical msgs = get(url).collect {|x| [x['text'], x['created_at']]} cal = Icalendar::Calendar.new (msgs.size-1).times do |i| cal.event do dtstart DateTime.parse(msgs[i][1]).to_ical(true) dtend DateTime.parse(msgs[i+1][1]).to_ical(true) summary msgs[i][0] end end cal.to_ical end end utl = UserTimeLine.new(ARGV.shift) print NKF.nkf('-w -Lw', utl.to_ical)
- Comments: 0
- Trackbacks: 0
Home > Tags > twitter



