Et til spørsmål om noen gidder og se på det da
Har nå lagt til sånn at man mottar kopi av søket på emailen sin.
MEN..men, alltid et men. Hvordan skal jeg klare og få den til å sende søket som flere søk hver gang man velger en ny by?
Kode
# - Good Morning Program -
#Import
import datetime
import requests
import sys
import smtplib
import ad_pw
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#Input
name_of_user = input("What is your name?: ")
receiver_email = input("Your e-mail: ")
#Email
sender_email = ad_pw.email_address
password = ad_pw.email_password
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(sender_email, password)
#Loop
while True:
#Input
city = input('City Name: ')
# API
api_address='http://api.openweathermap.org/data/2.5/weather?appid=0c42f7f6b53b244c78a418f4f181282a&q='
url = api_address + city
json_data = requests.get(url).json()
# Variables
format_add = json_data['main']['temp']
day_of_month = str(datetime.date.today().strftime("%d "))
month = datetime.date.today().strftime("%b ")
year = str(datetime.date.today().strftime("%Y "))
time = str(datetime.datetime.now().strftime("%H:%M:%S"))
degrees = format_add - 273.15
humidity = json_data['main']['humidity']
latitude = json_data['coord']['lon']
longitude = json_data['coord']['lat']
#Program
if degrees < 20 and time > str(12.00):
print("\nGood afternoon " + name_of_user + ".")
print("\nThe date today is: " +
day_of_month +
month +
year)
print("The current time is: " + time)
print("The humidity is: " + str(humidity) + '%')
print("Latitude and longitude for " + city + " is: " + str(latitude), str(longitude))
print("The temperature is a mild " + "{:.1f}".format(degrees) +
"°C, you might need a jacket.")
elif degrees < 20 and time < str(12.00):
print("\nGood morning " + name_of_user + ".")
print("\nThe date today is: " +
day_of_month +
month +
year)
print("The current time is: " + time)
print("The humidity is: " + str(humidity) + '%')
print("Latitude and longitude for " + city + " is: " + str(latitude), str(longitude))
print("The temperature is a mild " + "{:.1f}".format(degrees) +
"°C, you might need a jacket.")
elif degrees >= 20 and time > str(12.00):
print("\nGood afternoon " + name_of_user + ".")
print("\nThe date today is: " +
day_of_month +
month +
year)
print("The current time is: " + time)
print("The humidity is: " + str(humidity) + '%')
print("Latitude and longitude for " + city + " is: " + str(latitude), str(longitude))
print("The temperature is a warm " + "{:.1f}".format(degrees) +
"°C, don't forget to drink water.")
elif degrees >= 20 and time < str(12.00):
print("\nGood morning " + name_of_user + ".")
print("\nThe date today is: " +
day_of_month +
month +
year)
print("The current time is: " + time)
print("The humidity is: " + str(humidity) + '%')
print("Latitude and longitude for " + city + " is: " + str(latitude), str(longitude))
print("The temperature is a warm " + "{:.1f}".format(degrees) +
"°C, don't forget to drink water.")
restart = input('Would you like to check another city (y/n)?: ')
if restart == 'y':
continue
else:
break
#HTML
html_message = """\
<html>
<head></head>
<body>
<p>Hi, """ + str(name_of_user) + """<br>
Here is the data from your weather search:<br>
<br>
City: """ + str(city) + """<br>
Temperature: """ + "{:.1f}".format(degrees) + """°C<br>
Humidity: """ + str(humidity) + """%<b>
</p>
</body>
</html>
"""
#Email
msg = MIMEMultipart('alternative')
msg['From'] = sender_email
msg['To'] = receiver_email
msg = MIMEText(html_message, "html")
#Send email
server.sendmail(sender_email, receiver_email, msg.as_string())
#Final print
print('Goodbye, an email has been sent to ' + receiver_email + " and you will receive a copy for data from your searched cities there")
#Exit
sys.exit()
Jeg tenkte jeg kunne legge det i loopen (ligger utenfor loopen nå), men sånn jeg tenker det så vil den sende en ny email for hver gang man velger en ny by, istedenfor at alt havner i EN email (om dette var forståelig hehe
). Klarer ikke forstå hvordan jeg skal få sendt alt i EN epost.
Regner med at jeg på en måte må lagre hvert svar + søk, så sende det på slutten av koden eller slutten av loopen på en måte?
PS: Prøvde med yagmail men når jeg brukte yagmail ville ikke pw og email bli godkjent. Og bruker HTML fordi når jeg skrev alt som vanlig tekst ble bare meldingen helt blank jo flere variable jeg addet i mailen
En annen ting. Prøvde å legge til at man kunne velge med y/n om man vil motta svaret på email så det ikke blir tvang å motta været på email (ikke det at jeg skal publisere det her, bare øver meg), men får invalid syntax.
Kode
restart = input('Would you like to check another city (y/n)?: ')
if restart == 'y':
continue
else:
# HTML
html_message = """\
<html>
<head></head>
<body>
<p>Hi, """ + str(name_of_user) + """<br>
Here is the data from your weather search:<br>
<br>
City: """ + str(city) + """<br>
Temperature: """ + "{:.1f}".format(degrees) + """°C<br>
Humidity: """ + str(humidity) + """%<b>
</p>
</body>
</html>
"""
# Email
msg = MIMEMultipart('alternative')
msg['From'] = sender_email
msg['To'] = receiver_email
msg = MIMEText(html_message, "html")
receive_email = input("Do you want to receive a copy from you search (y/n)?: ")
if receive_email = "y":
print(
'Goodbye, an email has been sent to ' + receiver_email + " and you will receive a copy for data from your searched cities there")
server.sendmail(sender_email, receiver_email, msg.as_string())
else:
print('Goodbye')
break
#Exit
sys.exit()
Kommer rød strek under
Kode
f receive_email = "y":
Holder jeg over den streken står det "colon expected", men har jo colon?
Det med og spørre om man vil motta emailen fikk jeg fiksa, hadde vist bare slurva ser jeg.
Kode
restart = input('Would you like to check another city (y/n)?: ')
if restart == 'y':
continue
else:
# HTML
html_message = """\
<html>
<head></head>
<body>
<p>Hi, """ + str(name_of_user) + """<br>
Here is the data from your weather search:<br>
<br>
City: """ + str(city) + """<br>
Temperature: """ + "{:.1f}".format(degrees) + """°C<br>
Humidity: """ + str(humidity) + """%<b>
</p>
</body>
</html>
"""
# Email
msg = MIMEMultipart('alternative')
msg = MIMEText(html_message, "html")
receive_email = input("Do you want to receive a copy from you search (y/n)?: ")
if receive_email == 'y':
receiver_email = input("Your e-mail: ")
msg['From'] = sender_email
msg['To'] = receiver_email
print(
'Goodbye, an email has been sent to ' + receiver_email + " and you will receive a copy for data from your searched cities there")
server.sendmail(sender_email, receiver_email, msg.as_string())
sys.exit()
else:
print('Goodbye')
sys.exit()
Sist endret av hvagjordo; 4. mai 2019 kl. 13:09.
Grunn: Automatisk sammenslåing med etterfølgende innlegg.