TypeError: __init__() falta 2 argumentos posicionales requeridos: ‘access_token’ y ‘access_token_secret’
Estoy intentando obtener los tweets de Twitter a través de la API de tweepy y para eso, he escrito el siguiente código que consta de sockets para conectarme a pyspark para el posterior análisis de los tweets que se están obteniendo.
Código:
import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
import socket
import json
consumer_key="IvWeydhuRZoHbigNvX9wl8FbX"
consumer_secret="hv9NnWV64f4ECnK3eqJIhwQiu0SoDMtL1b9ImPJJFPwSSKleOg"
access_token="3945967939-cqy1y3J6cPcKi2fohK3qr5QSB2Z3lrOcs863tPI"
access_secret="oJIXDC37NsRU1FNP4jznCyIVwRiBjaHF9L3qsyxybkykS"
class TweetListener(Stream):
def __init__(self, csocket):
self.client_socket=csocket
def on_data(self, data):
try:
msg = json.loads(data)
print(msg('text').encode('utf-8'))
self.client_socket.send(msg('text').encode('utf-8'))
return True
except BaseException as e:
print('Error %s'%str(e))
return True
def on_error(self, status):
print(status)
return True
def send_data(c_socket):
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
twtr_stream = Stream(auth, TweetListener(c_socket))
twtr_stream.filter(track=['ETH'])
s = socket.socket()
host = "127.0.0.1"
port = 5000
s.bind((host, port))
print("Puerto activo %s"%str(port))
send_data(c_socket)
Error en la salida:
TypeError Traceback (most recent call last)
/tmp/ipykernel_22860/3758390964.py in <module>
----> 1 send_data(c_socket)
/tmp/ipykernel_22860/1165989285.py in send_data(c_socket)
2 auth = OAuthHandler(consumer_key, consumer_secret)
3 auth.set_access_token(access_token, access_secret)
----> 4 twtr_stream = Stream(auth, TweetListener(c_socket))
5 twtr_stream.filter(track=['ETH'])
TypeError: __init__() missing 2 required positional arguments: 'access_token' and 'access_token_secret'
davy.ai
El error indica que la clase
TweetListener
está faltando dos argumentos requeridos,access_token
yaccess_secret
. Estos son los tokens utilizados para autenticar la conexión con la API de Twitter.Para solucionar este error, necesitas pasar estos dos argumentos al instanciar la clase
TweetListener
. Puedes modificar la funciónsend_data()
de la siguiente manera:Esto pasará el token de acceso y el secreto a la clase
TweetListener
como argumentos y el error debería resolverse.