1 from iri_tweet import models, utils |
|
2 from sqlalchemy.orm import sessionmaker |
|
3 import anyjson |
|
4 import sqlite3 |
|
5 import twitter |
|
6 |
|
7 def get_option(): |
|
8 |
|
9 parser = OptionParser() |
|
10 |
|
11 parser.add_option("-l", "--log", dest="logfile", |
|
12 help="log to file", metavar="LOG", default="stderr") |
|
13 parser.add_option("-v", dest="verbose", action="count", |
|
14 help="verbose", metavar="VERBOSE", default=0) |
|
15 parser.add_option("-q", dest="quiet", action="count", |
|
16 help="quiet", metavar="QUIET", default=0) |
|
17 parser.add_option("-r", "--request", dest="request", |
|
18 help="twitter request", metavar="REQUEST", default=0) |
|
19 parser.add_option("-Q", dest="query", |
|
20 help="query", metavar="QUERY") |
|
21 parser.add_option("-P", dest="rpp", metavar="RPP", default="50", |
|
22 help="Result per page") |
|
23 parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token", |
|
24 help="Token file name") |
|
25 |
|
26 |
|
27 #add request token |
|
28 #add |
|
29 |
|
30 return parser.parse_args() |
|
31 |
|
32 if __name__ == "__main__": |
|
33 |
|
34 (options, args) = get_option() |
|
35 |
|
36 twitter = twitter.Twitter(domain="search.twitter.com") |
|
37 engine, metadata = models.setup_database('sqlite:///'+args[0], echo=((options.verbose-options.quiet)>0)) |
|
38 Session = sessionmaker(bind=engine) |
|
39 session = Session() |
|
40 try: |
|
41 #conn.row_factory = sqlite3.Row |
|
42 #curs = conn.cursor() |
|
43 #curs.execute("create table if not exists tweet_tweet (json);") |
|
44 #conn.commit() |
|
45 |
|
46 results = None |
|
47 page = 1 |
|
48 |
|
49 while page <= int(1500/int(options.rpp)) and ( results is None or len(results) > 0): |
|
50 results = twitter. search(q=options.query, rpp=options.rpp, page=page) |
|
51 for tweet in results["results"]: |
|
52 print tweet |
|
53 tweet_str = anyjson.serialize(tweet) |
|
54 #invalidate user id |
|
55 processor = utils.TwitterProcessor(tweet, tweet_str, session, options.token_filename) |
|
56 processor.process() |
|
57 session.flush() |
|
58 page += 1 |
|
59 session.commit() |
|
60 finally: |
|
61 session.close() |
|
62 |
|
63 |
|