aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/UserScripts
diff options
context:
space:
mode:
authorbrockar <martinnguzman.mg@gmail.com>2025-02-21 16:32:04 -0300
committerbrockar <martinnguzman.mg@gmail.com>2025-02-21 16:32:04 -0300
commit6c96baddd16accffb27cad48d534cf688e83d332 (patch)
tree71ab4841beafc31167066ce0ec451af8ca4de20f /config/hypr/UserScripts
parent9f5b41c3e230cda406592167fcd0446a5f56821c (diff)
Weather.py update, auto get location
I just can test it on my location, so I need that be tested before merging :)
Diffstat (limited to 'config/hypr/UserScripts')
-rwxr-xr-xconfig/hypr/UserScripts/Weather.py61
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}")
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage