Alternatives To Darkskylib
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Pyowm74657321a month ago25February 14, 202216mitPython
A Python wrapper around the OpenWeatherMap web API
Darkskylib1101013 years ago13January 14, 20187mitPython
Python wrapper for the Dark Sky API
Worldweatheronline3412 years ago5December 27, 20204Python
WorldWeatherOnline historical weather data API Python wrapper
a year ago3epl-1.0Python
A Python wrapper for the forecast.io API.
2 days agoapache-2.0Python
Python wrapper for getting weather data from AccuWeather servers for Limited Trial package.
Cfo Api6
2 years ago1January 12, 2021mitPython
Python wrappers for accessing Forest Observatory data via the Salo API
Python Openweathermap Api5
10 years ago1otherPython
The module provides a python wrapper for the open weather api
Python Wunderground2
8 years agomitPython
Simple python wrapper around Weather Underground API
Alternatives To Darkskylib
Select To Compare

Alternative Project Comparisons


This library for the Dark Sky API provides access to detailed weather information from around the globe.

Quick start

Before you start using this library, you need to get your API key here.

API Calls

Function forecast handles all request parameters and returns a Forecast object.

>>> from darksky import forecast
>>> boston = forecast(key, 42.3601, -71.0589)

The first 3 positional arguments are identical to the 3 required parameters for API call. The optional query parameters need to be provided as keyword arguments.

Using time argument will get you a time machine call. Using timeout argument will set default request timeout .

>>> BOSTON = key, 42.3601, -71.0589
>>> from datetime import datetime as dt
>>> t = dt(2013, 5, 6, 12).isoformat()
>>> boston = forecast(*BOSTON, time=t)
>>> boston.time

Data Points and Data Blocks

The values as well as DataPoint and DataBlock objects are accessed using instance attributes or dictionary keys. You can access current values directly, without going through currently data point.

>>> boston['currently']['temperature']
>>> boston.temperature

Data blocks are indexable and iterable by their data values.

>>> len(boston.hourly)
>>> boston.hourly[1].temperature
>>> # list temperatures for next 10 hours
... [hour.temperature for hour in boston.hourly[:10]]
[60.83, 59.49, 58.93, 57.95, 56.01, 53.95, 51.21, 49.21, 47.95, 46.31]

Nonexistent attributes will raise AttributeError and dictionary keys KeyError the way you'd expect.

Raw data

To get the raw data dictionary, you can either access it through instance attributes or navigate to it through dictionary keys, the same way you would navigate the actual dictionary.

>>> boston.hourly[2]
{'ozone': 290.06, 'temperature': 58.93, 'pressure': 1017.8, 'windBearing': 274, 'dewPoint': 52.58, 'cloudCover': 0.29, 'apparentTemperature': 58.93, 'windSpeed': 7.96, 'summary': 'Partly Cloudy', 'icon': 'partly-cloudy-night', 'humidity': 0.79, 'precipProbability': 0, 'precipIntensity': 0, 'visibility': 8.67, 'time': 1476410400}
>>> boston['hourly']['data'][2]
{'ozone': 290.06, 'temperature': 58.93, 'pressure': 1017.8, 'windBearing': 274, 'dewPoint': 52.58, 'cloudCover': 0.29, 'apparentTemperature': 58.93, 'windSpeed': 7.96, 'summary': 'Partly Cloudy', 'icon': 'partly-cloudy-night', 'humidity': 0.79, 'precipProbability': 0, 'precipIntensity': 0, 'visibility': 8.67, 'time': 1476410400}

Flags and Alerts

All dashes - in attribute names of Flags objects are replaced by underscores _. This doesn't affect the dictionary keys.

>>> # instead of 'boston.flags.isd-stations'
... boston.flags.isd_stations
['383340-99999', '383390-99999', '383410-99999', '384620-99999', '384710-99999']
>>> boston.flags['isd-stations']
['383340-99999', '383390-99999', '383410-99999', '384620-99999', '384710-99999']

Even though Alerts are represented by a list, the data accessibility through instance attributes is preserved for alerts in the list.

>>> boston.alerts[0].title
'Freeze Watch for Norfolk, MA'

Updating data

Use refresh() method to update data of a Forecast object. The refresh() method takes optional queries (including time, making it a Time machine object) as keyword arguments. Calling refresh() without any arguments will set all queries to default values. Use timeout argument to set the request timeout.

>>> boston.refresh()
>>> (boston.time, boston.temperature, len(boston.hourly))
(1476403500, 60.72, 49)
>>> boston.refresh(units='si', extend='hourly')
>>> (boston.time, boston.temperature, len(boston.hourly))
(1476404205, 15.81, 169)
>>> boston.refresh(units='us')
>>> (boston.time, boston.temperature, len(boston.hourly))
(1476404489, 60.57, 49)

For Developers

Response headers are stored in a dictionary under response_headers attribute.

>>> boston.response_headers['X-response-Time']

Example script

from darksky import forecast
from datetime import date, timedelta

BOSTON = 42.3601, 71.0589

weekday = date.today()
with forecast('API_KEY', *BOSTON) as boston:
    print(boston.daily.summary, end='\n---\n')
    for day in boston.daily:
        day = dict(day = date.strftime(weekday, '%a'),
                   sum = day.summary,
                   tempMin = day.temperatureMin,
                   tempMax = day.temperatureMax
        print('{day}: {sum} Temp range: {tempMin} - {tempMax}'.format(**day))
        weekday += timedelta(days=1)


Light rain on Friday and Saturday, with temperatures bottoming out at 48F on Tuesday.
Sun: Partly cloudy in the morning. Temp range: 44.86 - 57.26F
Mon: Mostly cloudy in the morning. Temp range: 44.26 - 55.28F
Tue: Clear throughout the day. Temp range: 36.85 - 47.9F
Wed: Partly cloudy starting in the afternoon, continuing until evening. Temp range: 33.23 - 47.93F
Thu: Light rain overnight. Temp range: 35.75 - 49.71F
Fri: Light rain in the morning and afternoon. Temp range: 45.47 - 57.11F
Sat: Drizzle in the morning. Temp range: 43.3 - 62.08F
Sun: Clear throughout the day. Temp range: 39.81 - 60.84F


The code is available under terms of MIT License

Popular Python Wrapper Projects
Popular Weather Projects
Popular Application Programming Interfaces Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Python Wrapper