153 lines
4.9 KiB
Python
153 lines
4.9 KiB
Python
|
|
import sys
|
|
import os
|
|
import threading
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
import time
|
|
import csv
|
|
|
|
from rgbmatrix import RGBMatrix, RGBMatrixOptions
|
|
from stockTicker import StockTicker
|
|
import finnhub
|
|
|
|
import pexpect
|
|
from pycoingecko import CoinGeckoAPI
|
|
from newsapi import NewsApiClient
|
|
import configparser
|
|
import requests
|
|
import json
|
|
|
|
import sys, os
|
|
try:
|
|
raise NotImplementedError("No error")
|
|
except Exception as e:
|
|
exc_type, exc_obj, exc_tb = sys.exc_info()
|
|
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
|
print(exc_type, fname, exc_tb.tb_lineno, exc_obj, exc_tb)
|
|
|
|
|
|
def update_weather():
|
|
api_key = 'bd5d5096a5ba30bbcfb57ead42ab3fee'
|
|
location = 'London'
|
|
url = "https://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid={}".format(location, api_key)
|
|
r = requests.get(url)
|
|
weather = r.json()
|
|
|
|
current_weather = {}
|
|
|
|
coords = weather['coord']
|
|
lat = coords['lat']
|
|
lon = coords['lon']
|
|
url = 'https://api.openweathermap.org/data/2.5/onecall?lat={}&units=metric&lon={}&appid={}'.format(lat, lon, api_key)
|
|
r = requests.get(url)
|
|
|
|
current_weather['main_weather'] = weather['weather'][0]['main']
|
|
current_weather['description'] = weather['weather'][0]['description']
|
|
current_weather['temp'] = weather['main']['temp']
|
|
current_weather['min_temp'] = weather['main']['temp_min']
|
|
current_weather['max_temp'] = weather['main']['temp_max']
|
|
current_weather['feels_like'] = weather['main']['feels_like']
|
|
current_weather['humidity'] = weather['main']['humidity']
|
|
current_weather['clouds'] = weather['clouds']['all']
|
|
current_weather['wind_speed'] = weather['wind']['speed']
|
|
current_weather['wind_direction'] = weather['wind']['deg']
|
|
current_weather['visibility'] = weather['visibility']
|
|
current_weather['uv'] = r.json()['current']['uvi']
|
|
|
|
json.dump( current_weather, open( "csv/current_weather.json", 'w+' ))
|
|
|
|
|
|
daily_weather = []
|
|
daily = r.json()['daily']
|
|
|
|
for day in daily:
|
|
dct = {}
|
|
dct['main_weather'] = day['weather'][0]['main']
|
|
dct['description'] = day['weather'][0]['description']
|
|
dct['min_temp'] = day['temp']['min']
|
|
dct['min_temp'] = day['temp']['max']
|
|
daily_weather.append(dct)
|
|
|
|
|
|
json.dump( daily_weather, open( "csv/daily_weather.json", 'w+' ))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
update_weather()
|
|
sys.exit()
|
|
|
|
api_key = 'bd5d5096a5ba30bbcfb57ead42ab3fee'
|
|
location = 'London'
|
|
|
|
url = "https://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid={}".format(location, api_key)
|
|
r = requests.get(url)
|
|
weather = r.json()
|
|
|
|
current_weather = {}
|
|
|
|
coords = weather['coord']
|
|
lat = coords['lat']
|
|
lon = coords['lon']
|
|
url = 'https://api.openweathermap.org/data/2.5/onecall?lat={}&units=metric&lon={}&appid={}'.format(lat, lon, api_key)
|
|
r = requests.get(url)
|
|
print()
|
|
print('main weather: ', weather['weather'][0]['main'])
|
|
print('description: ', weather['weather'][0]['description'])
|
|
print('temp (degrees C): ', weather['main']['temp'])
|
|
print('min: ', weather['main']['temp_min'])
|
|
print('max: ', weather['main']['temp_max'])
|
|
print('feels like: ', weather['main']['feels_like'])
|
|
print('humidity (%): ', weather['main']['humidity'])
|
|
print('clouds: ', weather['clouds']['all'])
|
|
print('wind speed (m/s): ', weather['wind']['speed'], 'direction:', weather['wind']['deg'])
|
|
print('visibility (metres): ', weather['visibility'])
|
|
print('UV index: ', r.json()['current']['uvi'])
|
|
|
|
current_weather['main_weather'] = weather['weather'][0]['main']
|
|
current_weather['description'] = weather['weather'][0]['description']
|
|
current_weather['temp'] = weather['main']['temp']
|
|
current_weather['min_temp'] = weather['main']['temp_min']
|
|
current_weather['max_temp'] = weather['main']['temp_max']
|
|
current_weather['feels_like'] = weather['main']['feels_like']
|
|
current_weather['humidity'] = weather['main']['humidity']
|
|
current_weather['clouds'] = weather['clouds']['all']
|
|
current_weather['wind_speed'] = weather['wind']['speed']
|
|
current_weather['wind_direction'] = weather['wind']['deg']
|
|
current_weather['visibility'] = weather['visibility']
|
|
current_weather['uv'] = r.json()['current']['uvi']
|
|
print()
|
|
print(current_weather)
|
|
|
|
json.dump( current_weather, open( "csv/current_weather.json", 'w+' ))
|
|
|
|
|
|
daily_weather = []
|
|
daily = r.json()['daily']
|
|
|
|
for day in daily:
|
|
dct = {}
|
|
dct['main_weather'] = day['weather'][0]['main']
|
|
dct['description'] = day['weather'][0]['description']
|
|
dct['min_temp'] = day['temp']['min']
|
|
dct['min_temp'] = day['temp']['max']
|
|
daily_weather.append(dct)
|
|
|
|
|
|
json.dump( daily_weather, open( "csv/daily_weather.json", 'w+' ))
|
|
|
|
|
|
print()
|
|
print(weather)
|
|
print()
|
|
print(r.json()['daily'][0])
|
|
print()
|
|
print(daily_weather)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|