def init_twitter_api(self): o = TwitterOAuth.read_file("credentials.txt") api = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) return api
def getAppObject(self): if self.globalAppObj is None: # Using OAuth1... o = TwitterOAuth.read_file() self.globalAppObj = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) return self.globalAppObj
def __init__(self): try: auth_info = TwitterOAuth.read_file() self.api = TwitterAPI( auth_info.consumer_key, auth_info.consumer_secret, auth_type="oAuth2", api_version="2", ) except TwitterRequestError as e: msg_list = ["RequestError:", e] for msg in iter(e): msg_list.append(msg) err_msg = " ".join(msg_list) Log.e(err_msg) except TwitterConnectionError as e: Log.e(f"ConnectionError: {e}") self.prompt_reconnect_msg(2) except Exception as e: Log.e(f"BaseException: {e}") self.prompt_reconnect_msg(2) # comma-seperated list with no space between fields self.expansions = "attachments.media_keys,author_id,entities.mentions.username,in_reply_to_user_id,referenced_tweets.id,referenced_tweets.id.author_id,geo.place_id" self.media_fields = "preview_image_url,type,url,public_metrics" self.tweet_fields = "id,text,attachments,author_id,conversation_id,created_at,entities,in_reply_to_user_id,lang,public_metrics,possibly_sensitive,referenced_tweets,source" self.user_fields = "entities,id,name,username,profile_image_url,verified" self.place_fields = "full_name,id,country,country_code,name,place_type" self.output_file_name = "../logs/stream_result.txt"
def init_api(credentials_file): """Initialize a connection to Twitter. Arguments: credentials_file -- A file with Twitter developer credentials. Return an authenticated instance of TwitterAPI. """ auth = TwitterOAuth.read_file(credentials_file) api = TwitterAPI(auth.consumer_key, auth.consumer_secret, auth.access_token_key, auth.access_token_secret) return api
def getTweets(): o = TwitterOAuth.read_file('credentials.txt') twitter = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) screen_name = 'v_explore' return [ tweet for tweet in twitter.request('statuses/user_timeline', { 'screen_name': screen_name, 'count': 200 }) ]
def __init__(self, db: DBHandler = None): self.db_handler = db # Twitter Credentials are stored in creds.txt o = TwitterOAuth.read_file("creds.txt") self.api = TwitterAPI(o.consumer_key, o.consumer_secret, auth_type='oAuth2', api_version='2') self.metadata_fields = { 'expansions': TwitterStream.EXPANSIONS, 'tweet.fields': TwitterStream.TWEET_FIELDS, 'user.fields': TwitterStream.USER_FIELDS, 'place.fields': TwitterStream.PLACE_FIELDS } self.users = [] self.tweets = []
def __init__(self): """ twitter API 를 사용하기 위해 API KEY를 이용해 연결하고, 요청에 필요한 파라미터를 초기화 실시간 데이터를 응답받기 위해선 twitter 에서 정해놓은 query 형식에 따라 rule 을 등록한 후 요청해야 함 모든 rule 은 계정(API KEY)에 연동되고 각가 id로 구분되며, 추가적인 등록/삭제가 없다면 변경되지 않음 여기서 rule 이란 특정한 조건을 만족하는 streaming data 를 받기위한 filtering 방법 """ try: auth_info = TwitterOAuth.read_file() self.api = TwitterAPI( auth_info.consumer_key, auth_info.consumer_secret, auth_type="oAuth2", api_version="2", ) except TwitterRequestError as e: msg_list = [] for msg in iter(e): msg_list.append(msg) err_msg = "RequestError: " + "|".join(msg_list) Log.e(err_msg) except TwitterConnectionError as e: Log.e(f"ConnectionError: {e}") self.prompt_reconnect_msg(2) except Exception as e: Log.e(f"BaseException: {e}") self.prompt_reconnect_msg(2) # twitter conifg 파일 twitter_config = config.Config('configs/twitter_config.conf') self.query_string = twitter_config.load_config('API_QUERY', 'rules') self.output_file_name = twitter_config.load_config( 'OUTPUT_FILES', 'stream_result') # comma-seperated list with no space between fields self.expansions = twitter_config.load_config('CONTENTS', 'expansions') self.media_fields = twitter_config.load_config('CONTENTS', 'media_fields') self.tweet_fields = twitter_config.load_config('CONTENTS', 'tweet_fields') self.user_fields = twitter_config.load_config('CONTENTS', 'user_fields') self.place_fields = twitter_config.load_config('CONTENTS', 'place_fields')
def main(): #Specify time to run script EndDate = '2013-11-30' #loop to change filenames after day change while str(date.today()) != EndDate: dte = str(date.today()) # SAVE YOUR APPLICATION CREDENTIALS IN credentials.txt. o = TwitterOAuth.read_file('credentials.txt') api = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) #see if authentications was successful r = api.request('account/verify_credentials') print(r.text) #open timestamped file to store JSON tweets in: d = date.today() d = str(d) filename = d + "_tweets_thanksgiving_blackfriday" file_twts = codecs.open(filename, "ab", encoding="utf-8") #stream tweets with a given keyword and store it in a file #given using statuses/filter and using track : text terms seperated with , are regarded as or and those seperated by whtespace are regarded as and try: for item in api.request( 'statuses/filter', {'track': 'thanksgiving, black friday, christmas, new year'}): #print(item) #indent to put on new lne indent=2 item = convert_reduced_json(item) json.dump(item, file_twts) file_twts.write('\n') if str(date.today()) != dte: break file_twts.close() except Exception as e: print(e)
def main(): #Specify time to run script EndDate='2013-11-30' #loop to change filenames after day change while str(date.today())!=EndDate: dte=str(date.today()) # SAVE YOUR APPLICATION CREDENTIALS IN credentials.txt. o = TwitterOAuth.read_file('credentials.txt') api = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) #see if authentications was successful r = api.request('account/verify_credentials') print(r.text) #open timestamped file to store JSON tweets in: d=date.today() d=str(d) filename=d+"_tweets_thanksgiving_blackfriday" file_twts= codecs.open(filename,"ab",encoding="utf-8") #stream tweets with a given keyword and store it in a file #given using statuses/filter and using track : text terms seperated with , are regarded as or and those seperated by whtespace are regarded as and try : for item in api.request('statuses/filter', {'track':'thanksgiving, black friday, christmas, new year'}): #print(item) #indent to put on new lne indent=2 item=convert_reduced_json(item) json.dump(item,file_twts) file_twts.write('\n') if str(date.today())!=dte: break file_twts.close() except Exception as e: print(e)
def query_api(): o = TwitterOAuth.read_file() api = TwitterAPI( o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret, auth_type='oAuth2', api_version='2' ) pager = TwitterPager( api, 'tweets/search/all', { 'query':QUERY, 'tweet.fields': ','.join([ 'author_id', 'created_at', 'public_metrics', 'referenced_tweets', 'in_reply_to_user_id', ]), 'expansions': ','.join([ 'author_id', 'referenced_tweets.id', 'referenced_tweets.id.author_id', 'in_reply_to_user_id', 'attachments.media_keys', ]), 'media.fields': 'url', 'user.fields': 'username,name', 'start_time': '2021-02-25T06:00:00Z', 'end_time': '2021-03-29T12:00:00Z', 'max_results': 500 } ) return pager.get_iterator(wait=2)
return True return False def print_tree(self, level): """level 0 is the root node, then incremented for subsequent generations""" created_at = self.data['created_at'] username = self.data['author_id']['username'] text_80chars = self.data['text'][0:80].replace('\n', ' ') print(f'{level*"_"}{level}: [{created_at}][{username}] {text_80chars}') level += 1 for child in reversed(self.children): child.print_tree(level) try: o = TwitterOAuth.read_file() api = TwitterAPI(o.consumer_key, o.consumer_secret, auth_type='oAuth2', api_version='2') # GET ROOT OF THE CONVERSATION r = api.request(f'tweets/:{CONVERSATION_ID}', { 'expansions': 'author_id', 'tweet.fields': 'author_id,conversation_id,created_at,referenced_tweets' }, hydrate_tweets=True)
while True: for item in r.get_iterator(): if 'text' in item: process_tweet(item['text'], count, n) elif 'disconnect' in item: raise Exception('Disconnect: %s' % item['disconnect'].get('reason')) except Exception as e: print('*** MUST RECONNECT %s\n' % e) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Hashtag ranker.') parser.add_argument('-n', metavar='N', type=int, default=3, help='number of most frequest words displayed') parser.add_argument('-oauth', metavar='FILENAME', type=str, help='read OAuth credentials from file') parser.add_argument('-past', action='store_true', help='search historic tweets') parser.add_argument('words', metavar='W', type=str, nargs='+', help='word(s) to track') args = parser.parse_args() oauth = TwitterOAuth.read_file(args.oauth) api = TwitterAPI(oauth.consumer_key, oauth.consumer_secret, oauth.access_token_key, oauth.access_token_secret) try: if args.past: rank_old_hashtags(api, args.words, args.n) else: rank_new_hashtags(api, args.words, args.n) except KeyboardInterrupt: print('\nTerminated by user\n') except Exception as e: print('*** STOPPED %s\n' % e)
parser.add_argument('-endpoint', metavar='ENDPOINT', type=str, help='Twitter endpoint') parser.add_argument('-parameters', metavar='NAME_VALUE', type=str, help='parameter NAME=VALUE', nargs='+') parser.add_argument('-fields', metavar='FIELD', type=str, help='print a top-level field in the json response', nargs='+') args = parser.parse_args() try: client = MongoClient('localhost', 27017) db = client['devtweets'] tweets = db.tweets except Exception as e: print('*** STOPPED %s' % str(e)) try: params = to_dict(args.parameters) oauth = TwitterOAuth.read_file('./credentials.txt') api = TwitterAPI(oauth.consumer_key, oauth.consumer_secret, oauth.access_token_key, oauth.access_token_secret) """response = api.request('statuses/filter', {'locations':'-102.878723,21.659981,-101.997757,22.473779'})""" #response = api.request('search/tweets', {'q':'Aguascalientes 4sq com, ags 4sq com', 'count': 450}) lastTweet = tweets.find({}).sort('id', -1).limit(1) str_lastTweetId = str(lastTweet[0]["id"]) pager = TwitterRestPager(api, 'search/tweets', {'q':'Aguascalientes 4sq com, ags 4sq com', 'count':100, 'since_id': str_lastTweetId}) #for item in response.get_iterator(): for item in pager.get_iterator(10): print item tweets.insert(item) #print ('\n' % pager.get_rest_quota()) except KeyboardInterrupt: print('\nTerminated by user')
if item['code'] == 131: continue # ignore internal server error elif item['code'] == 88: print('Suspend search until %s' % search.get_quota()['reset']) raise Exception('Message from twiter: %s' % item['message']) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Search tweet history.') parser.add_argument('-location', type=str, help='limit tweets to a place') parser.add_argument('-oauth', metavar='FILENAME', type=str, help='read OAuth credentials from file') parser.add_argument('-radius', type=float, help='distance from "location" in km') parser.add_argument('words', metavar='W', type=str, nargs='+', help='word(s) to search') args = parser.parse_args() oauth = TwitterOAuth.read_file(args.oauth) api = TwitterAPI(oauth.consumer_key, oauth.consumer_secret, oauth.access_token_key, oauth.access_token_secret) try: if args.location: lat, lng, radius = GEO.get_region_circle(args.location) print('Google found region at %f,%f with a radius of %s km' % (lat, lng, radius)) if args.radius: radius = args.radius region = (lat, lng, radius) else: region = None search_tweets(api, args.words, region) except KeyboardInterrupt: print('\nTerminated by user\n') except Exception as e:
target_csv.writeheader() target_csv.writerows(data_lst) target.close() #fieldnames = ['tweet_date', 'tweet_id', 'tweet_date', # dict_temp['tweet_id'] = item['id_str'] # dict_temp['tweet_date'] = item['created_at'] # dict_temp['user_name'] = item['user']['name'] # dict_temp['user_screen_name'] = item['user']['screen_name'] # dict_temp['tweet_text'] = item['text'] return ############################################################################################################################################################# ############################################################################################################################################################# # SAVE YOUR APPLICATION CREDENTIALS IN TwitterAPI/credentials.txt. o = TwitterOAuth.read_file() api = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) try: if TEST_NUMBER == 0: # VERIFY YOUR CREDS r = api.request('account/verify_credentials') print(r.text) if TEST_NUMBER == 1: # POST A TWEET r = api.request('statuses/update', {'status':'the time is now %s' % datetime.now()})
#!/usr/bin/python3 # -*- encoding: utf-8 -*- from TwitterAPI import TwitterAPI, TwitterOAuth, TwitterRestPager import html, sys o = TwitterOAuth.read_file('credentials.txt') api = TwitterAPI( o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret)
from TwitterAPI import TwitterAPI, TwitterOAuth """### Twitter API Credentials Credentials file format: ``` consumer_key=YOUR_CONSUMER_KEY consumer_secret=YOUR_CONSUMER_SECRET access_token_key=YOUR_ACCESS_TOKEN access_token_secret=YOUR_ACCESS_TOKEN_SECRET ``` """ """### Connect and authenticate with Twitter REST API.""" o = TwitterOAuth.read_file(os.environ['HOME']+'/.twitterapi_credentials') twapi = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) """### Convenience functions""" def print_score(Ytrue,Ypred): s = (sklearn.metrics.precision_score(Ytrue,Ypred), sklearn.metrics.recall_score(Ytrue,Ypred), sklearn.metrics.f1_score(Ytrue,Ypred)) print('Precision: {:0.3}\nRecall: {:0.3}\nF-Score: {:0.3}\n'.format(*s)) def searchTwitter(q,api,feed="search/tweets",n=100): return [t for t in api.request(feed, {'q':q,'count':n})] """### Get JSON from Twitter"""
def setUp(self): """Read credentials from TwitterAPI/credentials.txt. You must copy your credentials into this text file. """ self.oa = TwitterOAuth.read_file()
from TwitterAPI import TwitterAPI, TwitterOAuth, TwitterRestPager from collections import Counter import pandas as pd from pandas import DataFrame, Series import os ### Set working directory and open file dir_path = os.path.dirname(os.path.realpath(__file__)) os.chdir(dir_path) # Note: you may need to replace credentials with your own o = TwitterOAuth.read_file('credentials.txt') print(o.access_token_key) twitter = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) ### Query twitter for topic "big+data" response = twitter.request('search/tweets', {'q': 'big+data', 'count': 100}) tweets = [r for r in response] # Identify a user user = tweets[0]['user'] print('screen_name={a}, name={b}, location={c}'.format(a=user['screen_name'], b=user['name'], c=user['location'])) # Identify a user's follower screen_name = user['screen_name'] response = twitter.request('followers/list', { 'screen_name': screen_name, 'count': 200
from TwitterAPI import TwitterAPI, TwitterOAuth, TwitterRequestError, TwitterConnectionError try: o = TwitterOAuth.read_file('./env/credentials.txt') api = TwitterAPI(o.consumer_key, o.consumer_secret, o.access_token_key, o.access_token_secret) r = api.request('statuses/sample') for item in r: print(item) except TwitterRequestError as e: print(e.status_code) for msg in iter(e): print(msg) except TwitterConnectionError as e: print(e) except Exception as e: print(e)