npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ec-weather

v1.0.6

Published

Environment Canada publishes XML/RSS feeds with current conditions and a 7 day forecast for 768 towns/cities across Canada. This package retrieves the feed, and returns a parsed JSON representation of it.

Downloads

38

Readme

CI

ec-weather - an Environment Canada weather forecast feed in JSON

Weather.gc.ca provides weather forecasts for 768 locations in Canada, on the website and as atom RSS feeds. The purpose of this library is to transform this raw feed into clean, well formatted JSON suitable for use in your Node or Browser application.

Installation

npm install ec-weather

API

The module is called with a single options object.

const ecweather = require('ec-weather');

var options = {
  lang: 'en',
  city: 'nb-23',
};

ecweather(options)

The two parameters are:

  • lang {string} - either 'en' or 'fr'. Default 'en'.
  • city {string} - 5 character Environment Canada city code.

Returns a promise, which resolves to the forecast as a JSON object.

City Codes

Environment Canada uses 4-5 character city codes to identify the location for a given forecasts. The city code can be found by navigating to the Local forecast, and examining the URL.

For example:

https://weather.gc.ca/city/pages/on-82_metric_e.html --> on-82
https://weather.gc.ca/city/pages/ns-19_metric_e.html --> ns-19

Use

Sample code is available in the examples directory.

Browser

Note the axios dependency. It must be in scope before loading ec-weather.

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/ec-weather/dist/ec-weather.js"></script>
<pre id="json"></pre>
<script>
ecWeather({
        lang: 'en',
        city: 'nb-23',
    })
    .then((data) => {
        document.getElementById('json').innerHTML = JSON.stringify(data, undefined, 2);
    });
</script>

A note about CORS

When testing in a browser, you may get the following error:

Failed to load https://weather.gc.ca/rss/city/nb-23_e.xml: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

This occurs if the server hosting the javascript code above does not present the Access-Control-Allow-Origin header, or the value does not match your local host. During development, you can workaround the issue with the Cross Domain - CORS extension in the Chrome Web Store.

Node

const ecweather = require('ec-weather');

let data = await ecweather({
  lang: 'en',
  city: 'nb-23',
})

console.log(JSON.stringify(data, undefined, 2));

Sample Output

{
  "lang": "en",
  "city": "nb-23",
  "title": "Saint John - Weather - Environment Canada",
  "badgeUrl": "https://weather.gc.ca/wxlink/wxlink.html?cityCode=nb-23&lang=e",
  "author": {
    "name": "Environment Canada",
    "uri": "http://www.weather.gc.ca"
  },
  "updated": "2017-11-19T19:45:14Z",
  "rights": "Copyright 2017, Environment Canada",
  "entries": [
    {
      "type": "Warnings and Watches",
      "title": "No watches or warnings in effect, Saint John",
      "link": "http://www.weather.gc.ca/warnings/index_e.html",
      "updated": "2017-11-16T09:46:00Z",
      "published": "2017-11-16T09:46:00Z",
      "summary": "No watches or warnings in effect.",
      "inEffect": false
    },
    {
      "type": "Current Conditions",
      "title": "Current Conditions: Light Rain, 13.1°C",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T19:40:00Z",
      "published": "2017-11-19T19:40:00Z",
      "summary": "Observed at: Saint John Airport 3:40 PM AST Sunday 19 November 2017 | Condition: Light Rain | Temperature: 13.1°C | Pressure / Tendency: 98.5 kPa falling | Visibility: 3.2 km | Humidity: 98 % | Dewpoint: 12.8°C | Wind: SSW 41 km/h gust 58 km/h | Air Quality Health Index: 3",
      "observedAt": "Saint John Airport 3:40 PM AST Sunday 19 November 2017",
      "condition": "Light Rain",
      "temperature": "13.1°C",
      "pressureTendency": "98.5 kPa falling",
      "visibility": "3.2 km",
      "humidity": "98 %",
      "dewpoint": "12.8°C",
      "wind": "SSW 41 km/h gust 58 km/h",
      "airQualityHealthIndex": "3"
    },
    {
      "type": "Weather Forecasts",
      "title": "Sunday: Rain. High 12.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Rain. Fog patches. Amount 20 to 30 mm. Wind south 40 km/h gusting to 70. High 12. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Sunday night: Rain. Low minus 4.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Rain ending this evening then clearing. Fog patches dissipating this evening. Amount 5 mm. Wind southwest 40 km/h gusting to 60 becoming west 30 gusting to 50 after midnight. Low minus 4. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Monday: A mix of sun and cloud. High zero.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "A mix of sun and cloud. Wind west 30 km/h gusting to 50. High zero. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Monday night: Clear. Low minus 8.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Clear. Low minus 8. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Tuesday: Cloudy. High 7.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Cloudy. High 7. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Tuesday night: Cloudy periods. Low plus 2.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Cloudy periods. Low plus 2. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Wednesday: A mix of sun and cloud. High 6.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "A mix of sun and cloud. High 6. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Wednesday night: Periods of rain. Low minus 1.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Periods of rain. Low minus 1. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Thursday: A mix of sun and cloud. High plus 1.",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "A mix of sun and cloud. High plus 1. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Thursday night: Chance of flurries. Low minus 3. POP 60%",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Cloudy with 60 percent chance of flurries. Low minus 3. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Friday: Chance of flurries or rain showers. High plus 3. POP 60%",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Cloudy with 60 percent chance of flurries or rain showers. High plus 3. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Friday night: Chance of showers. Low minus 2. POP 60%",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Cloudy with 60 percent chance of showers. Low minus 2. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    },
    {
      "type": "Weather Forecasts",
      "title": "Saturday: Chance of showers. High plus 3. POP 60%",
      "link": "http://www.weather.gc.ca/city/pages/nb-23_metric_e.html",
      "updated": "2017-11-19T15:00:00Z",
      "published": "2017-11-19T15:00:00Z",
      "summary": "Cloudy with 60 percent chance of showers. High plus 3. Forecast issued 11:00 AM AST Sunday 19 November 2017"
    }
  ]
}

Contributing

Updates, additional features or bug fixes are always welcome.

License

The MIT License (MIT). See LICENCE file for details.