diff options
Diffstat (limited to 'config/hypr/UserScripts/Weather.py')
| -rwxr-xr-x | config/hypr/UserScripts/Weather.py | 61 |
1 files changed, 28 insertions, 33 deletions
diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py index e3a6c538..c739d2c5 100755 --- a/config/hypr/UserScripts/Weather.py +++ b/config/hypr/UserScripts/Weather.py @@ -1,13 +1,22 @@ #!/usr/bin/env python3 # /* ---- š« https://github.com/JaKooLit š« ---- */ # +# original code https://gist.github.com/Surendrajat/ff3876fd2166dd86fb71180f4e9342d7 # weather using python -import subprocess -from pyquery import PyQuery # install using `pip install pyquery` +import requests import json import os +from pyquery import PyQuery # install using `pip install pyquery` + + +# Get current location based on IP address +def get_location(): + response = requests.get("https://ipinfo.io") + data = response.json() + loc = data["loc"].split(",") + return float(loc[0]), float(loc[1]) + -# original code https://gist.github.com/Surendrajat/ff3876fd2166dd86fb71180f4e9342d7 # weather icons weather_icons = { "sunnyDay": "ó°", @@ -22,30 +31,22 @@ weather_icons = { "default": "ī", } -# get location_id -# to get your own location_id, go to https://weather.com & search your location. -# once you choose your location, you can see the location_id in the URL(64 chars long hex string) -# like this: https://weather.com/en-PH/weather/today/l/bca47d1099e762a012b9a139c36f30a0b1e647f69c0c4ac28b537e7ae9c1c200 -location_id = "bca47d1099e762a012b9a139c36f30a0b1e647f69c0c4ac28b537e7ae9c1c200" # TODO +# Get latitude and longitude +latitude, longitude = get_location() -# NOTE to change to deg F, change the URL to your preffered location after weather.com -# Default is English-Philippines with Busan, South Korea as location_id -# get html page -url = "https://weather.com/en-PH/weather/today/l/" + location_id +# Open-Meteo API endpoint +url = f"https://weather.com/en-PH/weather/today/l/{latitude},{longitude}" html_data = PyQuery(url=url) # current temperature temp = html_data("span[data-testid='TemperatureValue']").eq(0).text() -# print(temp) # current status phrase status = html_data("div[data-testid='wxPhrase']").text() status = f"{status[:16]}.." if len(status) > 17 else status -# print(status) # status code status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2] -# print(status_code) # status icon icon = ( @@ -53,14 +54,12 @@ icon = ( if status_code in weather_icons else weather_icons["default"] ) -# print(icon) # temperature feels like temp_feel = html_data( "div[data-testid='FeelsLikeSection'] > span > span[data-testid='TemperatureValue']" ).text() temp_feel_text = f"Feels like {temp_feel}c" -# print(temp_feel_text) # min-max temperature temp_min = ( @@ -74,26 +73,21 @@ temp_max = ( .text() ) temp_min_max = f"ļ {temp_min}\t\tļ {temp_max}" -# print(temp_min_max) # wind speed wind_speed = html_data("span[data-testid='Wind']").text().split("\n")[1] wind_text = f"ī¾ {wind_speed}" -# print(wind_text) # humidity humidity = html_data("span[data-testid='PercentageValue']").text() humidity_text = f"ī³ {humidity}" -# print(humidity_text) # visibility -visbility = html_data("span[data-testid='VisibilityValue']").text() -visbility_text = f"ļ® {visbility}" -# print(visbility_text) +visibility = html_data("span[data-testid='VisibilityValue']").text() +visibility_text = f"ļ® {visibility}" # air quality index air_quality_index = html_data("text[data-testid='DonutChartValue']").text() -# print(air_quality_index) # hourly rain prediction prediction = html_data("section[aria-label='Hourly Forecast']")( @@ -101,7 +95,6 @@ prediction = html_data("section[aria-label='Hourly Forecast']")( ).text() prediction = prediction.replace("Chance of Rain", "") prediction = f"\n\nī (hourly) {prediction}" if len(prediction) > 0 else prediction -# print(prediction) # tooltip text tooltip_text = str.format( @@ -112,7 +105,7 @@ tooltip_text = str.format( f"<small>{temp_feel_text}</small>", f"<b>{temp_min_max}</b>", f"{wind_text}\t{humidity_text}", - f"{visbility_text}\tAQI {air_quality_index}", + f"{visibility_text}\tAQI {air_quality_index}", f"<i> {prediction}</i>", ) @@ -125,14 +118,16 @@ out_data = { } print(json.dumps(out_data)) -simple_weather =f"{icon} {status}\n" + \ - f"ļ {temp} ({temp_feel_text})\n" + \ - f"{wind_text} \n" + \ - f"{humidity_text} \n" + \ - f"{visbility_text} AQI{air_quality_index}\n" +simple_weather = ( + f"{icon} {status}\n" + + f"ļ {temp} ({temp_feel_text})\n" + + f"{wind_text} \n" + + f"{humidity_text} \n" + + f"{visibility_text} AQI{air_quality_index}\n" +) try: with open(os.path.expanduser("~/.cache/.weather_cache"), "w") as file: file.write(simple_weather) -except: - pass +except Exception as e: + print(f"Error writing to cache: {e}") |
