1 from iri_tweet import models, processor, utils |
1 import argparse |
2 from optparse import OptionParser |
|
3 import anyjson |
|
4 import re |
2 import re |
5 import sys |
3 import sys |
|
4 |
|
5 import anyjson |
6 import twitter |
6 import twitter |
7 |
7 |
8 def get_option(): |
8 from iri_tweet import models, processor, utils |
|
9 |
|
10 |
|
11 def get_options(): |
9 |
12 |
10 parser = OptionParser() |
13 usage = "usage: %(prog)s [options] <connection_str_or_filepath>" |
|
14 |
|
15 parser = argparse.ArgumentParser(usage=usage) |
11 |
16 |
12 parser.add_option("-l", "--log", dest="logfile", |
17 parser.add_argument(dest="conn_str", |
13 help="log to file", metavar="LOG", default="stderr") |
18 help="write tweet to DATABASE. This is a connection string", metavar="CONNECTION_STR") |
14 parser.add_option("-v", dest="verbose", action="count", |
19 parser.add_argument("-Q", dest="query", |
15 help="verbose", metavar="VERBOSE", default=0) |
|
16 parser.add_option("-q", dest="quiet", action="count", |
|
17 help="quiet", metavar="QUIET", default=0) |
|
18 parser.add_option("-Q", dest="query", |
|
19 help="query", metavar="QUERY") |
20 help="query", metavar="QUERY") |
20 parser.add_option("-P", dest="rpp", metavar="RPP", default="50", |
21 parser.add_argument("-P", dest="rpp", metavar="RPP", default="50", |
21 help="Result per page") |
22 help="Result per page") |
22 parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token", |
23 parser.add_argument("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token", |
23 help="Token file name") |
24 help="Token file name") |
24 parser.add_option("-k", "--key", dest="consumer_key", |
25 parser.add_argument("-k", "--key", dest="consumer_key", |
25 help="Twitter consumer key", metavar="CONSUMER_KEY") |
26 help="Twitter consumer key", metavar="CONSUMER_KEY") |
26 parser.add_option("-s", "--secret", dest="consumer_secret", |
27 parser.add_argument("-s", "--secret", dest="consumer_secret", |
27 help="Twitter consumer secret", metavar="CONSUMER_SECRET") |
28 help="Twitter consumer secret", metavar="CONSUMER_SECRET") |
|
29 |
|
30 utils.set_logging_options(parser) |
28 |
31 |
29 return parser.parse_args() |
32 return parser.parse_args() |
30 |
33 |
31 def get_auth(options, access_token): |
34 def get_auth(options, access_token): |
32 consumer_key = options.consumer_key |
35 consumer_key = options.consumer_key |
34 auth = twitter.OAuth(token=access_token[0], token_secret=access_token[1], consumer_key=consumer_key, consumer_secret=consumer_secret) |
37 auth = twitter.OAuth(token=access_token[0], token_secret=access_token[1], consumer_key=consumer_key, consumer_secret=consumer_secret) |
35 return auth |
38 return auth |
36 |
39 |
37 if __name__ == "__main__": |
40 if __name__ == "__main__": |
38 |
41 |
39 (options, args) = get_option() |
42 (options, args) = get_options() |
40 |
43 |
41 access_token = utils.get_oauth_token(consumer_key=options.consumer_key, consumer_secret=options.consumer_secret, token_file_path=options.token_filename) |
44 access_token = utils.get_oauth_token(consumer_key=options.consumer_key, consumer_secret=options.consumer_secret, token_file_path=options.token_filename) |
42 auth = get_auth(options, access_token) |
45 auth = get_auth(options, access_token) |
43 |
46 |
44 t = twitter.Twitter(domain="api.twitter.com",api_version="1.1",secure=True, auth=auth) |
47 t = twitter.Twitter(domain="api.twitter.com",api_version="1.1",secure=True, auth=auth) |
45 |
48 |
46 conn_str = args[0].strip() |
49 conn_str = options.conn_str.strip() |
47 if not re.match("^\w+://.+", conn_str): |
50 if not re.match("^\w+://.+", conn_str): |
48 conn_str = 'sqlite:///' + conn_str |
51 conn_str = 'sqlite:///' + conn_str |
49 |
52 |
50 |
|
51 engine, metadata, Session = models.setup_database(conn_str, echo=((options.verbose-options.quiet)>0), create_all=True) |
53 engine, metadata, Session = models.setup_database(conn_str, echo=((options.verbose-options.quiet)>0), create_all=True) |
52 session = None |
54 session = None |
53 try: |
55 try: |
54 session = Session() |
56 session = Session() |
55 #conn.row_factory = sqlite3.Row |
57 #conn.row_factory = sqlite3.Row |