Report abuse

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
#!/usr/bin/env ruby

require 'rubygems'
require 'twitter_search'
require 'dm-core'

unless ARGV.length == 1
  $stderr.puts "Usage: #{$0} searchterm"
  exit 1
end

search_term = ARGV.first

DataMapper.setup( :default, "sqlite3://#{Dir.pwd}/#{search_term}.db" )

class Tweet
  include DataMapper::Resource

  property :from_user, String
  property :from_user_id, String
  property :text, String
  property :created_at, DateTime
  property :profile_image_url, String
  property :id, String, :key => true
end

DataMapper.auto_migrate!

def with_tweets_matching(hashtag)
  client = TwitterSearch::Client.new 'search_sucker'
  page = 1
  begin
    tweets = client.query :q => hashtag, :rpp => 100, :page => page
    tweets.each do |tweet|
      yield tweet
    end
    page = page + 1
  end while tweets.size > 0
end

with_tweets_matching(search_term) do |t|
  e = Tweet.new
  e.attributes = {
    :from_user => t.from_user,
    :from_user_id => t.from_user_id,
    :text => t.text,
    :created_at => t.created_at,
    :profile_image_url => t.profile_image_url,
    :id => t.id
  }
  e.save
end