Skip to content

Instantly share code, notes, and snippets.

@benatkin
Created January 5, 2009 07:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benatkin/43299 to your computer and use it in GitHub Desktop.
Save benatkin/43299 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'rubygems'
require 'sequel'
require 'optparse'
class Account
def initialize(name='')
pref_dir = File.expand_path('~/Library/Preferences')
db_file = Dir.glob("#{pref_dir}/TweetDeck*/*/*#{name}.db").first
@db = Sequel.sqlite(db_file)
end
def groups
@db[:columns].filter(:cType => 0).select(:cName).map { |r| r[:cName].split(': ')[1] }
end
def group(name)
group = @db[:columns].filter(:cType => 0, :cName => "Group: #{name}").first
friend_ids = @db[:groups].filter(:gCID => group[:cID]).select(:gUserID)
@db[:friends].filter(:fUserID => friend_ids).select(:fScreenName).map { |r| r[:fScreenName] }
end
def ungrouped
ungrouped = friends
groups.each do |name|
ungrouped -= group(name)
end
ungrouped
end
def friends
@db[:friends].select(:fScreenName).map { |r| r[:fScreenName] }
end
end
def usage
puts "Usage:
#{$0} groups
#{$0} group group-name
#{$0} ungrouped
#{$0} friends"
exit
end
command = ARGV.shift
usage unless %w{groups group ungrouped friends}.include?(command)
account = Account.new
usage unless account.method(command).arity == ARGV.length
puts account.method(command).call(*ARGV).sort.join("\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment