script/rest/search_enmi.py
changeset 122 4c3a15877f80
parent 121 2b794b7901d6
child 123 1fa34184093b
equal deleted inserted replaced
121:2b794b7901d6 122:4c3a15877f80
     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