An automation using Twitter and OpenWeather API for weather updates – Twitter account.

#@TempoVix - Twitter Bot - Python
#updated - 01/05/2023
import requests
import tweepy
import random
import datetime
#Twitter API Key
API_KEY_TWITTER = "your_key"
API_KEY_SECRET_TWITTER = "your_key"
API_KEY_Bearer = r"your_key"
API_KEY_TOKEN = "your_key"
API_KEY_TOKEN_SECRET = "your_key"
API_KEY_CLIENT_ID = "your_key"
API_KEY_CLIENT_SECRET = "your_key"
client = tweepy.Client(API_KEY_Bearer, API_KEY_TWITTER, API_KEY_SECRET_TWITTER, API_KEY_TOKEN, API_KEY_TOKEN_SECRET)
auth = tweepy.OAuth1UserHandler(API_KEY_TWITTER, API_KEY_SECRET_TWITTER, API_KEY_TOKEN, API_KEY_TOKEN_SECRET)
api = tweepy.API(auth)
#OpenWeather key
API_KEY = "your_key"
rnd_cidade = random.randint(1, 8)
if rnd_cidade == 1:
cidade = "your_city"
elif rnd_cidade == 2:
cidade = "your_city"
elif rnd_cidade == 3:
cidade = "your_city"
elif rnd_cidade == 4:
cidade = "your_city"
elif rnd_cidade == 5:
cidade = "your_city"
elif rnd_cidade == 6:
cidade = "your_city"
else:
cidade = "your_city"
URL = f"https://api.openweathermap.org/data/2.5/weather?q={cidade}&appid={API_KEY}&lang=pt_br"
URL_FORECAST = f"https://api.openweathermap.org/data/2.5/forecast?q={cidade}&appid={API_KEY}&lang=pt_br"
#request do clima atual
requisicao = requests.get(URL)
requisicao_dic = requisicao.json()
print(requisicao)
main = requisicao_dic['weather'][0]['main']
descricao = requisicao_dic['weather'][0]['description']
temperatura = requisicao_dic['main']['temp'] - 273.15 # kelvin pra celsius
temp_max = requisicao_dic['main']['temp_max'] - 273.15
temp_min = requisicao_dic['main']['temp_min'] - 273.15
sensacao = requisicao_dic['main']['feels_like'] - 273.15
umidade = requisicao_dic['main']['humidity'] # %
vento = requisicao_dic['wind']['speed'] * 3.6 # m/s para km/h
#request clima próximo dia
requisicao_5 = requests.get(URL_FORECAST)
requisicao_5_dic = requisicao_5.json()
#prob=probabilidade
prob_chuva = requisicao_5_dic['list'][0]['pop'] * 100
prob_chuva_amanha = requisicao_5_dic['list'][1]['pop'] * 100
# EMOJI
sombrinha_1 = "☔️"
sombrinha_2 = "🌂"
clima_ico_1 = "☀️"
clima_ico_2 = "⛅"
clima_ico_3 = "🌨️"
clima_ico_4 = "⛈️"
temp_ico_1 = "🔥"
temp_ico_2 = "❄️"
temp_ico_3 = "🌡️"
# CONDIÇÕES ICONES
rnd_sol= random.randint(0,4)
if rnd_sol<=1:
msg_sol="\n\n💬 Vamos curtir uma praia? 🏖️"
elif rnd_sol==2:
msg_sol="\n\n💬 Passe protetor solar 🧴"
elif rnd_sol>=3:
msg_sol="\n\n💬 Sol pocando! 🌞"
rnd_msg_chuva = random.randint(0, 6)
if rnd_msg_chuva <= 1:
msg_chuva = "\n\n💬 Se você não levar a sombrinha e chover, saiba que a voz da sua mãe ecoará em sua mente..."
elif rnd_msg_chuva == 2:
msg_chuva = "\n\n💬 Você foi avisado da chuva!"
elif rnd_msg_chuva == 3:
msg_chuva = "\n\n💬 Vai contar com a sorte? Leve uma sombrinha 🌂"
elif rnd_msg_chuva == 4:
msg_chuva = "\n\n💬 Existe uma grande probabilidade de chuva, mas não uma certeza."
elif rnd_msg_chuva == 5:
msg_chuva = "\n\n💬 A previsão podia estar errada..."
elif rnd_msg_chuva == 6:
msg_chuva = "\n\n💬 É uma cilada, Bino! ⛈️"
if prob_chuva_amanha >= 40:
msg_chuva_tweet = msg_chuva
else:
msg_chuva_tweet = msg_sol
rnd_msg_chuva_hoje = random.randint(0, 6)
if rnd_msg_chuva_hoje<=1:
msg_chuva_hoje= "\n\n💬 Ouça sua mãe dizendo 'Leve uma sombrinha'"
elif rnd_msg_chuva_hoje == 2:
msg_chuva_hoje = "\n\n💬 Você foi avisado da chuva!"
elif rnd_msg_chuva_hoje == 3:
msg_chuva_hoje = "\n\n💬 Vai contar com a sorte? Leve uma sombrinha 🌂"
elif rnd_msg_chuva_hoje == 4:
msg_chuva_hoje = "\n\n💬 Se o pior pesadelo do capixaba é encontrar a mesma pessoa duas vezes no supermercado, imagina ter que pedir uma sombrinha? Leve a sua!"
elif rnd_msg_chuva_hoje == 5:
msg_chuva_hoje = "\n\n💬 Quem mora em Vila Velha já fique esperto 🛶"
elif rnd_msg_chuva_hoje == 6:
msg_chuva_hoje = "\n\n💬 É uma cilada, Bino! ⛈️"
if prob_chuva >= 50 or main == "Rain":
msg_chuva_hoje_tweet = msg_chuva_hoje
elif main == "Clear":
msg_chuva_hoje_tweet = msg_sol
else:
msg_chuva_hoje_tweet = ""
if main != "Clear" and main != "Clouds":
sombrinha = sombrinha_1
else:
sombrinha = sombrinha_2
if temperatura > 34:
temp_ico = temp_ico_1
elif temperatura < 20:
temp_ico = temp_ico_2
else:
temp_ico = temp_ico_3
if main == "Clear":
clima_ico = clima_ico_1
elif main == "Rain":
clima_ico = clima_ico_3
elif main == "Thunderstorm":
clima_ico = clima_ico_4
temp_ico = "⚠️ "
msg_chuva_hoje_tweet= "\n\n💬 É UM DELÚVIO! ⛈️"
else:
clima_ico = clima_ico_2
# Sorteio da mega-sena
megasena=random.sample(range(1,60),6)
# Selecionar tipo de mensagem que será postada
rnd = random.randint(1, 10)
if rnd < 9 and rnd > 4:
tweet_previsao = "Tempo agora em " + str(cidade) + " " + str(clima_ico) + "\n \n" + str(temp_ico) + " " + str(
descricao.capitalize()) + " com temperatura de " + str(round(temperatura, 1)) + "ºC" + "\n" + str(
sombrinha) + " Probabilidade de chuva de " + str(round(prob_chuva, 1)) + "% " + "\n" + "💧 Umidade de " + str(
round(umidade, 1)) + "%" + "\n" + "🌬️ Vento de " + str(round(vento, 2)) + " km/h" + str(msg_chuva_hoje_tweet)
elif rnd == 10 or rnd == 9:
tweet_previsao = "Previsão de chuva para amanhã em\n" + str(
cidade) + "📍\n \n" + "🔮 Probabilidade de chuva de " + str(round(prob_chuva_amanha, 1)) + "%\n🎲 Como aqui fazemos previsões, esses são os números da Mega-Sena:\n" + str(megasena) + str(
msg_chuva_tweet)
else:
tweet_previsao = "Previsão do tempo em " + str(cidade) + " " + str(clima_ico) + "\n \n" + str(
temp_ico) + " " + str(descricao.capitalize()) + " com máxima de " + str(round(temp_max, 1)) + "ºC" + " e mínima de " + str(
round(temp_min, 1)) + "ºC" + "\n" + "💦 Sensação térmica de " + str(round(sensacao, 1)) + "ºC\n" + str(
sombrinha) + " Probabilidade de chuva de " + str(round(prob_chuva, 1)) + "%\n" + "🌬️ Vento de " + str(round(vento, 2)) + " km/h" + str(
msg_chuva_hoje_tweet)
print(tweet_previsao) #log
tweet = client.create_tweet(text=tweet_previsao)
print(tweet) #log
