docker_weather/script.py

64 lines
2.7 KiB
Python
Raw Normal View History

2023-09-20 23:28:10 +03:00
import pandas as pd
from geopy.distance import geodesic
import requests
import subprocess
import time
from datetime import datetime
import os
cmd = 'nginx'
os.system(cmd)
while True:
# Muuta seuraavat parametrit tarpeen mukaan
LATITUDE = "61.4981"
LONGITUDE = "23.7608"
2023-09-22 08:23:09 +03:00
MAX_RESULTS = 8
2023-09-20 23:28:10 +03:00
# Lataa maailman kaupunkien tietokanta
world_cities = pd.read_csv('https://download.geonames.org/export/dump/cities15000.zip', sep='\t', header=None, encoding='utf-8', low_memory=False)
world_cities.columns = ['geonameid', 'name', 'asciiname', 'alternatenames', 'latitude', 'longitude', 'feature_class', 'feature_code', 'country_code', 'cc2', 'admin1_code', 'admin2_code', 'admin3_code', 'admin4_code', 'population', 'elevation', 'dem', 'timezone', 'modification_date']
# Laske etäisyys ja valitse lähimmät kaupungit
world_cities['distance'] = world_cities.apply(lambda row: geodesic((LATITUDE, LONGITUDE), (row['latitude'], row['longitude'])).km, axis=1)
nearest_cities = world_cities.nsmallest(MAX_RESULTS, 'distance')
# Hae säätiedot wttr.in-sivustolta curl-komennolla
weather_data_list = []
cities_to_fetch = ["Death_valley", "London", "Sydney", "Oimjakon"]
for city_name in cities_to_fetch:
url = f"https://wttr.in/{city_name}?format=%l:+%c+%t+%h+%P+%w+%p+%S+%s"
response = requests.get(url)
weather_data = response.text.strip()
weather_data_list.append(weather_data)
#Kello
current_time = datetime.now()
formatted_time = current_time.strftime("%H:%M")
# Tulosta lähimpien kaupunkien nimet ja säätiedot
with open("/var/www/html/index_TEMP.html", "w") as f: # Avaa tiedosto kirjoitustilassa
f.write('<meta charset="UTF-8">\n')
f.write('<meta http-equiv="refresh" content="20">\n')
2023-09-22 08:23:09 +03:00
f.write(f"<h3>Sää tiedot klo:{formatted_time}, {MAX_RESULTS} lähintä kaupunkia.</h3>\n")
2023-09-20 23:28:10 +03:00
for index, city in nearest_cities.iterrows():
if not pd.isnull(city['name']):
url = f"https://wttr.in/{city['name']}?format=%l:+%c+%t+%h+%P+%w+%p+%S+%s"
response = requests.get(url)
weather_data = response.text.strip()
city_name = city['name']
f.write(f"<p>{weather_data}</p>") # Kirjoita tiedostoon säätiedot
# Kirjoita muutaman kaupungin säätiedot tiedostoon
f.write(f"<h3>Muutama kylmä ja kuuma kaupunki</h3>\n")
for weather_data in weather_data_list:
f.write(f"<p>{weather_data}</p>\n")
# Siirrä temp-tiedosto lopulliseen tiedostoon
cmd = 'mv /var/www/html/index_TEMP.html /var/www/html/index.html'
os.system(cmd)
2023-09-22 08:23:09 +03:00
time.sleep(60) # Odota 1 minuutti ennen seuraavaa hakuajoa