Files
workspace/tools/weather.py

73 lines
2.0 KiB
Python
Executable File

#!/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()