How should I resolve this for the code block below? Running Python 3.x in Jupyter on Sagemaker Studio Lab.
I realize this is an FAQ, and it would really help to see an answer with my specific classes & variables. Not a link or a one line response. Thanks!
Context is using Tweepy to set up a filtered stream using Twitter API v2.
__init__() missing 2 required positional arguments: 'access_token' and 'access_token_secret'
# Importing Tweepy and time
import tweepy
import time
from tweepy import OAuthHandler
from tweepy import Stream
import json
import boto3
#Variables that contains the user credentials to access Twitter API (deleted for Stackoverflow question post)
consumer_key = ''
consumer_secret = ''
bearer_token = ''
api_key = ''
api_secret = ''
access_token = ''
access_token_secret = ''
# Gaining access and connecting to Twitter API using Credentials
client = tweepy.Client(bearer_token, api_key, api_secret, access_token, access_token_secret)
auth = tweepy.OAuth1UserHandler(api_key, api_secret, access_token, access_token_secret)
api = tweepy.API(auth)
#This is a basic listener that just prints received tweets to stdout.
class StdOutListener():
def on_data(self, data):
tweet = json.loads(data)
try:
if 'extended_tweet' in tweet.keys():
#print (tweet['text'])
message_lst = [str(tweet['id']),
str(tweet['user']['name']),
str(tweet['user']['screen_name']),
tweet['extended_tweet']['full_text'],
str(tweet['user']['followers_count']),
str(tweet['user']['location']),
str(tweet['geo']),
str(tweet['created_at']),
'\n'
]
message = '\t'.join(message_lst)
print(message)
client.put_record(
DeliveryStreamName=delivery_stream,
Record={
'Data': message
}
)
elif 'text' in tweet.keys():
#print (tweet['text'])
message_lst = [str(tweet['id']),
str(tweet['user']['name']),
str(tweet['user']['screen_name']),
tweet['text'].replace('\n',' ').replace('\r',' '),
str(tweet['user']['followers_count']),
str(tweet['user']['location']),
str(tweet['geo']),
str(tweet['created_at']),
'\n'
]
message = '\t'.join(message_lst)
print(message)
client.put_record(
DeliveryStreamName=delivery_stream,
Record={
'Data': message
}
)
except (AttributeError, Exception) as e:
print (e)
return True
def on_error(self, status):
print (status)
if __name__ == '__main__':
#This handles Twitter authentification and the connection to Twitter Streaming API. Keys removed for Stack Overflow.
listener = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
#tweets = Table('tweets_ft',connection=conn)
client = boto3.client('firehose',
region_name='us-east-1',
aws_access_key_id='',
aws_secret_access_key=''
)
delivery_stream = 'twitter_stream'
#This line filter Twitter Streams to capture data by keywords
while True:
try:
print('Twitter streaming...')
stream = Stream(auth, listener)
stream.filter(track=['pete carroll -is:retweet'], stall_warnings=True)
except Exception as e:
print(e)
print('Disconnected...')
time.sleep(5)
continue
Twitter streaming...
__init__() missing 2 required positional arguments: 'access_token' and 'access_token_secret' Disconnected...
--------------------------------------------------------------------------- TypeError Traceback (most recent call
last) /tmp/ipykernel_209/2696512367.py in <module>
74 print('Twitter streaming...')
---> 75 stream = Stream(auth, listener)
76 stream.filter(track=['pete carroll -is:retweet'], stall_warnings=True)
TypeError: __init__() missing 2 required positional arguments:
'access_token' and 'access_token_secret'