File size: 1,127 Bytes
c325552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import requests
from haystack.nodes import BaseComponent

class TwitterRetriever(BaseComponent):
    outgoing_edges = 1
    
    def __init__(self, bearer_token: str, last_k_tweets: int = 10):
        self.headers = {"Authorization": "Bearer {}".format(bearer_token)}
        self.last_k_tweets = last_k_tweets
        
    def run(self, query: str, last_k_tweets: int = None):
        if last_k_tweets is None:
            last_k_tweets = self.last_k_tweets

        url = f"https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name={query}&count={last_k_tweets}"
        try:
            response = requests.request("GET", url, headers=self.headers)
            twitter_stream = ""
            for tweet in response.json():
                print(tweet)
                twitter_stream += tweet["text"] + '\n'
        except Exception as e:
            twitter_stream = ["Please make sure you are providing a correct, public twitter account"]
        
        output = {
            "results":  f"{twitter_stream}",
            "username": query,
        }
        return output

    def run_batch(self):
        pass