예제 #1
0
 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
예제 #2
0
    def run_async(self):
        auth = TwitterOAuth.read_file_object(self.wrapper.getFileObject(__file__, "TwitterAPI/credentials.txt"))
        api = TwitterAPI(auth.consumer_key, auth.consumer_secret, auth.access_token_key, auth.access_token_secret)

        # list of user id to follow (by Nazli)
        """ '@StiftenAGF','@jpaarhus','#Aarhus','@AarhusKultur','@smagaarhus','@AarhusNyheder','@AarhusPortaldk',
        '@Aarhus2017','@OpenDataAarhus', '@aarhusupdate','@AskVest','@SundhedOgOmsorg','@ArhusVejr','@aarhus_ints',
        '@AGFFANdk','@AarhusCykelby','@VisitAarhus','@larshaahr' """

        users = ['3601200017', '3370065087', '3330970365', '2911388001', '2706568231',
			'2647614595', '2201213730', '1324132976', '1065597596', '816850003', '763614246',
			'210987829', '159110346', '112585923', '77749562', '38227253', '36040150']

        # list of terms to track
        tracks = ['#Aarhus']
        print "TAA ready."
        try:
            r = api.request('statuses/filter', {'locations': self.location, 'follow': ','.join(users), 'track': ','.join(tracks)})
        except:
            print r.text

        for item in r:
            self.tweet = item
            # print item
            self.wrapper.update()
            if self.abort.is_set():
                break
예제 #3
0
    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 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
예제 #5
0
    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
예제 #6
0
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
예제 #7
0
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
        })
    ]
예제 #8
0
    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)
		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()})
예제 #11
0
파일: replies.py 프로젝트: lanodan/scripts
#!/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)
예제 #12
0
	def setUp(self):
		"""Read credentials from TwitterAPI/credentials.txt. You
		must copy your credentials into this text file.
		"""
		self.oa = TwitterOAuth.read_file()
예제 #13
0
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)
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"""
예제 #15
0
				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:
예제 #16
0
파일: agent.py 프로젝트: agencia/tweetmines
        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')
예제 #17
0
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