script/rest/search_twitter.py
changeset 914 43876221071f
parent 891 8628c590f608
child 916 5dce89631093
equal deleted inserted replaced
912:cf7ed69afc09 914:43876221071f
     1 from iri_tweet import models, processor
     1 from iri_tweet import models, processor, utils
     2 from optparse import OptionParser
     2 from optparse import OptionParser
     3 import anyjson
     3 import anyjson
     4 import re
     4 import re
     5 import twitter
     5 import twitter
     6 
     6 
    19                       help="query", metavar="QUERY")
    19                       help="query", metavar="QUERY")
    20     parser.add_option("-P", dest="rpp", metavar="RPP", default="50",
    20     parser.add_option("-P", dest="rpp", metavar="RPP", default="50",
    21                       help="Result per page")
    21                       help="Result per page")
    22     parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
    22     parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
    23                       help="Token file name")
    23                       help="Token file name")
       
    24     parser.add_argument("-k", "--key", dest="consumer_key",
       
    25                         help="Twitter consumer key", metavar="CONSUMER_KEY", required=True)
       
    26     parser.add_argument("-s", "--secret", dest="consumer_secret",
       
    27                         help="Twitter consumer secret", metavar="CONSUMER_SECRET", required=True)
    24     
    28     
       
    29     return parser.parse_args()
    25 
    30 
    26     return parser.parse_args()
    31 def get_auth(options, access_token):
       
    32     consumer_key = options.consumer_key
       
    33     consumer_secret = options.consumer_secret
       
    34     auth = twitter.OAuth(token=access_token[0], token_secret=access_token[1], consumer_key=consumer_key, consumer_secret=consumer_secret)
       
    35     return auth
    27 
    36 
    28 if __name__ == "__main__":
    37 if __name__ == "__main__":
    29 
    38 
    30     (options, args) = get_option()
    39     (options, args) = get_option()
       
    40     
       
    41     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)
    31 
    43 
    32     t = twitter.Twitter(domain="search.twitter.com")
    44     t = twitter.Twitter(domain="api.twitter.com",api_version="1.1",secure=True, auth=auth)
    33     t.secure = False
       
    34     
    45     
    35     conn_str = args[0].strip()
    46     conn_str = args[0].strip()
    36     if not re.match("^\w+://.+", conn_str):
    47     if not re.match("^\w+://.+", conn_str):
    37         conn_str = 'sqlite:///' + conn_str
    48         conn_str = 'sqlite:///' + conn_str
    38 
    49 
    49         results = None        
    60         results = None        
    50         page = 1
    61         page = 1
    51         print options.query
    62         print options.query
    52         
    63         
    53         while page <= int(1500/int(options.rpp)) and  ( results is None  or len(results) > 0):
    64         while page <= int(1500/int(options.rpp)) and  ( results is None  or len(results) > 0):
    54             results = t.search(q=options.query, rpp=options.rpp, page=page, include_entities=True)
    65             results = t.search.tweets(q=options.query, rpp=options.rpp, page=page, include_entities=True)
    55             
    66             
    56             for tweet in results["results"]:
    67             for tweet in results["results"]:
    57                 print tweet
    68                 print tweet
    58                 tweet_str = anyjson.serialize(tweet)
    69                 tweet_str = anyjson.serialize(tweet)
    59                 #invalidate user id
    70                 #invalidate user id