script/rest/search_twitter.py
changeset 982 11c1322cffe6
parent 917 c47f290a001f
child 987 18cb05f027a0
equal deleted inserted replaced
981:5378e8a44db1 982:11c1322cffe6
     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