Add decision journal, metrics, ideas, weather, standup - decide.py: Decision journal with outcomes and lessons - metrics.py: Track arbitrary metrics over time - ideas.py: Idea incubator with stages - weather.py: Quick weather via wttr.in - standup.py: Daily standup generator - 27 tools total now
This commit is contained in:
72
tools/weather.py
Executable file
72
tools/weather.py
Executable file
@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
weather - Quick weather check
|
||||
|
||||
Get current weather and forecasts using wttr.in.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
WORKSPACE = Path("/home/wdjones/.openclaw/workspace")
|
||||
DEFAULT_LOCATION = "auto" # wttr.in auto-detects
|
||||
|
||||
def get_weather(location: str = None, detailed: bool = False):
|
||||
"""Get weather for a location."""
|
||||
loc = location or DEFAULT_LOCATION
|
||||
loc = loc.replace(' ', '+')
|
||||
|
||||
if detailed:
|
||||
# Full forecast
|
||||
cmd = f'curl -s "wttr.in/{loc}?T"'
|
||||
else:
|
||||
# Compact format
|
||||
cmd = f'curl -s "wttr.in/{loc}?format=%l:+%c+%t+%h+%w"'
|
||||
|
||||
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
||||
output = result.stdout.strip()
|
||||
|
||||
if 'Unknown location' in output:
|
||||
print(f"Location not found: {location}")
|
||||
return
|
||||
|
||||
print(output)
|
||||
|
||||
def get_moon():
|
||||
"""Get moon phase."""
|
||||
cmd = 'curl -s "wttr.in/moon"'
|
||||
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
||||
print(result.stdout)
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
# Default: compact weather for auto location
|
||||
get_weather()
|
||||
return
|
||||
|
||||
cmd = sys.argv[1]
|
||||
|
||||
if cmd == 'moon':
|
||||
get_moon()
|
||||
elif cmd == 'full':
|
||||
location = ' '.join(sys.argv[2:]) if len(sys.argv) > 2 else None
|
||||
get_weather(location, detailed=True)
|
||||
elif cmd in ['-h', '--help']:
|
||||
print("Usage:")
|
||||
print(" weather - Current weather (auto location)")
|
||||
print(" weather <location> - Weather for location")
|
||||
print(" weather full [loc] - Detailed forecast")
|
||||
print(" weather moon - Moon phase")
|
||||
print("")
|
||||
print("Examples:")
|
||||
print(" weather London")
|
||||
print(" weather 'New York'")
|
||||
print(" weather full Chicago")
|
||||
else:
|
||||
# Treat as location
|
||||
location = ' '.join(sys.argv[1:])
|
||||
get_weather(location)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user