Skip to main content

A grabber for weather.com data with various output formats.

Project description

Weather Forecast CLI Script

Overview

This script fetches and parses weather forecast data from Weather.com and formats it for display in various environments such as a terminal or Waybar, a status bar tool. It leverages pyquery for HTML parsing and provides detailed weather information, including hourly and daily predictions, formatted for ease of use.

Waybar widget

Weather widget on Waybar

Terminal Console

Weather widget on terminal console

Features

  • Retrieves current weather and forecasts for a specified location.
  • Displays weather data in different formats:
    • Console output: Richly formatted weather data with icons.
    • Waybar JSON: For integration with Waybar.
  • Supports multiple languages for Weather.com data.
  • Includes data such as:
    • Current temperature and "feels-like" temperature.
    • Wind speed, humidity, visibility, and air quality.
    • Hourly and daily forecasts with icons and precipitation chances.

Requirements

Requires Python 3 or newer.

Install the package and all dependencies with:

pip install .

Or, for development (editable install with dev dependencies):

pip install -e .[dev]

Output Formats

Console Output

The script displays a formatted weather summary, including:

  • Current weather status.
  • Temperature (current, max/min).
  • Wind, humidity, visibility, and air quality.
  • Hourly and daily forecasts with icons.

Waybar JSON

The JSON includes:

  • text: Current weather icon and temperature.
  • alt: Weather status.
  • tooltip: Detailed weather information.
  • class: Status code for further customization.

JSON General output

Here the following JSON Schema for this output.

The key values for this json is:

  • temperature: An object containing the temperature information with the following fields:
    • current: The current temperature.
    • feel: The temperature feel
    • max : The maximum temperature
    • min : The minimum temperature

There's also other fields like hourly_predictions and daily_predictions containing lists of predictions informations. More defaults on JSON Schema.

Integration with Waybar

To integrate the script with Waybar:

  1. Add a custom script module in Waybar's configuration:

    {
        "modules-left": ["custom/weather"],
        "custom/weather": {
            "exec": "weathergrabber --output waybar",
            "interval": 600
        }
    }
    
  2. Reload Waybar to apply the changes.

Error Handling

  • Validates weather_id and lang inputs.
  • Handles HTTP errors gracefully, including 404 errors for invalid locations.

CI & Test Coverage

Test Status codecov

The test suite is run automatically on every push and pull request using GitHub Actions. Coverage results are uploaded to Codecov and displayed above.

To run tests and check coverage locally:

pytest --cov=weathergrabber --cov-report=term

License

This script is open-source and available under the MIT License.

CLI Usage

You can run the CLI as an installed command:

weathergrabber [location_name] [options]

Or as a Python module:

python -m weathergrabber [location_name] [options]

Importing as a Python module

You can also use the main API or CLI entry point in your own Python code:

import weathergrabber

# Call the main API
weathergrabber.main(log_level="INFO", location_name="London", location_id="", lang="en-GB", output="console", keep_open=False, icons="emoji")

# Or run the CLI programmatically
weathergrabber.main_cli()

Arguments

  • location_name (positional, optional): City name, zip code, etc. If not provided, you can use --location-id or the WEATHER_LOCATION_ID environment variable.

Options

  • --location-id, -l : 64-character-hex code for location (from Weather.com)
  • --lang, -L : Language (e.g., pt-BR, fr-FR). Defaults to system locale if not set.
  • --output, -o : Output format. One of console, json, or waybar. Default: console.
  • --keep-open, -k : Keep open and refresh every 5 minutes (only makes sense for console output).
  • --icons, -i : Icon set. fa for Font-Awesome, emoji for emoji icons. Default: emoji.
  • --log : Set logging level. One of debug, info, warning, error, critical. Default: critical.

Environment Variables

  • LANG : Used as default language if --lang is not set.
  • WEATHER_LOCATION_ID : Used as default location if neither location_name nor --location-id is set.

Example Usage

weathergrabber "London" --output console --lang en-GB
weathergrabber --location-id 1234567890abcdef... --output json
weathergrabber "Paris" -o waybar -i fa

Or as a Python module:

python -m weathergrabber "London" --output console --lang en-GB
python -m weathergrabber --location-id 1234567890abcdef... --output json
python -m weathergrabber "Paris" -o waybar -i fa

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

weathergrabber-0.0.8a2.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

weathergrabber-0.0.8a2-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file weathergrabber-0.0.8a2.tar.gz.

File metadata

  • Download URL: weathergrabber-0.0.8a2.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for weathergrabber-0.0.8a2.tar.gz
Algorithm Hash digest
SHA256 56a6c22ba0d887c8ca13fa9e60396ba6bb3c5ff90d1a9bbcf88f1b4754ad30c3
MD5 6f1acaf193b700927f450cab27a906c9
BLAKE2b-256 909e1cbcc98659801fc5217c6ee3fb5ebcd3dc37221dc23063b994349c930022

See more details on using hashes here.

Provenance

The following attestation bundles were made for weathergrabber-0.0.8a2.tar.gz:

Publisher: publish-to-pypi.yml on cjuniorfox/weathergrabber

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file weathergrabber-0.0.8a2-py3-none-any.whl.

File metadata

File hashes

Hashes for weathergrabber-0.0.8a2-py3-none-any.whl
Algorithm Hash digest
SHA256 073751f81ad16ef8cc3542768068b9ec1d0320aaf5a98ce727df27677362629b
MD5 dc02f6ed1555d69414adb9dc0dd6e57b
BLAKE2b-256 16c2db4a572027ff53685029ee066ec0ec11649dbfd31fe3e273c551d8d55055

See more details on using hashes here.

Provenance

The following attestation bundles were made for weathergrabber-0.0.8a2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on cjuniorfox/weathergrabber

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page