Spaces:
Runtime error
Runtime error
| import os | |
| import string | |
| import random | |
| import time | |
| import json | |
| import requests | |
| from requests_oauthlib import OAuth1 | |
| import pandas as pd | |
| from datasets import load_dataset | |
| BEARER_TOKEN = os.environ.get("BEARER_TOKEN") | |
| CONSUMER_KEY = os.environ.get("CONSUMER_KEY") | |
| CONSUMER_SECRET = os.environ.get("CONSUMER_SECRET") | |
| ACCESS_TOKEN = os.environ.get("ACCESS_TOKEN") | |
| ACCESS_TOKEN_SECRET = os.environ.get("ACCESS_TOKEN_SECRET") | |
| # Real tweets | |
| real_dataset = load_dataset("dawood/elon-tweets", split="train") | |
| real_df = real_dataset.to_pandas() | |
| real_tweets = real_df["Tweets"][:500].values.tolist() | |
| def load_real_tweet(): | |
| index = random.randint(0, len(real_tweets)) | |
| return real_tweets[index] | |
| # Fake tweets | |
| fake_df = pd.read_csv("elon_generated_tweets.csv") | |
| fake_tweets = fake_df.values.tolist() | |
| def load_fake_tweet(): | |
| index = random.randint(0, len(fake_tweets)) | |
| return fake_tweets[index] | |
| def connect_to_endpoint(url, params=None, data=None, type='GET'): | |
| resp = None | |
| if type == 'GET': | |
| resp = requests.get(url, json=data, params=params, auth=bearer_oauth) | |
| elif type == 'POST': | |
| resp = requests.post(url, json=data, params=params, auth=OAuth1(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)) | |
| elif type == 'DELETE': | |
| resp = requests.delete(url, json=data, params=params, auth= OAuth1(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)) | |
| if not resp.status_code in (200, 201): | |
| raise Exception(resp.status_code, resp.text) | |
| return resp.json() | |
| def tweet(content): | |
| url = "https://api.twitter.com/2/tweets" | |
| data = { | |
| "text": content, | |
| } | |
| connect_to_endpoint(url, data=data, type='POST') | |
| def create_poll(): | |
| url = "https://api.twitter.com/2/tweets" | |
| real_or_fake = random.randint(0, 2) | |
| function = load_real_tweet if real_or_fake > 0 else load_fake_tweet | |
| tweet = function() | |
| data = { | |
| "text": tweet, | |
| "poll": { | |
| "options": [ | |
| "Elon", | |
| "Not", | |
| ], | |
| "duration_minutes": 24 * 60 | |
| } | |
| } | |
| connect_to_endpoint(url, data=data, type='POST') | |
| return "Elon" if real_or_fake > 0 else "Not" | |
| if __name__ == "__main__": | |
| while True: | |
| answer = create_poll() | |
| time.sleep(24 * 60 * 60) | |
| tweet(f"The answer is: {answer}, contgratulations if you guessed it right!") | |