diff --git a/platypush/backend/weather/darksky/__init__.py b/platypush/backend/weather/darksky/__init__.py deleted file mode 100644 index 5d89c0aa0f..0000000000 --- a/platypush/backend/weather/darksky/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -from platypush.backend.weather import WeatherBackend - - -class WeatherDarkskyBackend(WeatherBackend): - """ - Weather forecast backend that leverages the DarkSky API. - - Requires: - - * The :class:`platypush.plugins.weather.darksky.WeatherDarkskyPlugin` plugin configured - - """ - - def __init__(self, poll_seconds: int = 300, **kwargs): - """ - :param poll_seconds: How often the backend should check for updates (default: every 5 minutes). - """ - super().__init__( - plugin_name='weather.darksky', poll_seconds=poll_seconds, **kwargs - ) - - -# vim:sw=4:ts=4:et: diff --git a/platypush/backend/weather/darksky/manifest.yaml b/platypush/backend/weather/darksky/manifest.yaml deleted file mode 100644 index 0063b81b8a..0000000000 --- a/platypush/backend/weather/darksky/manifest.yaml +++ /dev/null @@ -1,8 +0,0 @@ -manifest: - events: - platypush.message.event.weather.NewWeatherConditionEvent: when there is a weather - condition update - install: - pip: [] - package: platypush.backend.weather.darksky - type: backend diff --git a/platypush/plugins/weather/darksky/__init__.py b/platypush/plugins/weather/darksky/__init__.py deleted file mode 100644 index bc24e54aab..0000000000 --- a/platypush/plugins/weather/darksky/__init__.py +++ /dev/null @@ -1,262 +0,0 @@ -from platypush.plugins import action -from platypush.plugins.http.request import HttpRequestPlugin -from platypush.plugins.weather import WeatherPlugin - - -class WeatherDarkskyPlugin(HttpRequestPlugin, WeatherPlugin): - """ - Plugin for getting weather updates through Darksky API. - - **NOTE**: Shortly after being acquired by Apple, Darksky has [shut down their API](https://darksky.net/dev). - If you have an API token already then it should keep working until the end of 2021, but no new signups are allowed - - and yet again Apple hasn't lost a chance to stand against the developers. - - Please use the :class:`platypush.plugins.weather.openweathermap.WeatherOpenweathermapPlugin` plugin instead of this. - """ - - def __init__(self, darksky_token, lat, long, units='si', **kwargs): - """ - :param darksky_token: Your token for using the Darksky API, see https://darksky.net/dev - :type darksky_token: str - - :param lat: Default forecast latitude - :type lat: float - - :param long: Default forecast longitude - :type long: float - - :param units: Weather units (default: "si"). - - Supported units: - - * **si** (international system) - * **us** (US imperial units) - * **uk** (UK imperial units) - * **ca** (Canada imperial units) - - :type units: str - """ - - super().__init__(method='get', output='json', **kwargs) - self.darksky_token = darksky_token - self.units = units - self.lat = lat - self.long = long - self.latest_bulletin = {} - - def _get_url(self, lat=None, long=None): - return 'https://api.darksky.net/forecast/{}/{},{}?units={}'. \ - format(self.darksky_token, (lat or self.lat), (long or self.long), - self.units) - - @action - def get_current_weather(self, lat=None, long=None, **kwargs): - """ - Get the current weather. - - :param lat: Weather latitude (default: configured latitude) - :type lat: float - - :param long: Weather longitude (default: configured longitude) - :type long: float - - :returns: A dictionary containing the current weather object. - - Example output:: - - output = { - "time": 1529947892, - "summary": "Mostly Cloudy", - "icon": "partly-cloudy-day", - "precipIntensity": 0.0483, - "precipProbability": 0.04, - "precipType": "rain", - "temperature": 27.94, - "apparentTemperature": 29.6, - "dewPoint": 20.01, - "humidity": 0.62, - "pressure": 1009.34, - "windSpeed": 1.83, - "windGust": 5.49, - "windBearing": 192, - "cloudCover": 0.66, - "uvIndex": 0, - "visibility": 16.09, - "ozone": 273.74 - } - """ - - response = self.get(self._get_url(lat, long)) - return response.output['currently'] - - @action - def get_hourly_forecast(self, lat=None, long=None): - """ - Get the hourly forecast. - - :param lat: Weather latitude (default: configured latitude) - :type lat: float - - :param long: Weather longitude (default: configured longitude) - :type long: float - - :returns: A forecast object. - - Example output:: - - output = { - "summary": "Partly cloudy starting tomorrow morning, continuing until tomorrow evening.", - "icon": "partly-cloudy-day", - "data": [ - { - "time": 1529946000, - "summary": "Clear", - "icon": "clear-day", - "precipIntensity": 0, - "precipProbability": 0, - "temperature": 18.94, - "apparentTemperature": 18.94, - "dewPoint": 11.99, - "humidity": 0.64, - "pressure": 1025.53, - "windSpeed": 5.1, - "windGust": 6.22, - "windBearing": 329, - "cloudCover": 0.14, - "uvIndex": 1, - "visibility": 14.19, - "ozone": 334.3 - }, - { - "time": 1529949600, - "summary": "Clear", - "icon": "clear-day", - "precipIntensity": 0, - "precipProbability": 0, - "temperature": 18.41, - "apparentTemperature": 18.41, - "dewPoint": 11.12, - "humidity": 0.63, - "pressure": 1025.54, - "windSpeed": 4.6, - "windGust": 6.18, - "windBearing": 340, - "cloudCover": 0.07, - "uvIndex": 1, - "visibility": 16.09, - "ozone": 333.53 - }, - # ... - } - """ - - response = self.get(self._get_url(lat, long)) - return response.output['hourly'] - - @action - def get_daily_forecast(self, lat=None, long=None): - """ - Get the daily forecast. - - :param lat: Weather latitude (default: configured latitude) - :type lat: float - - :param long: Weather longitude (default: configured longitude) - :type long: float - - :returns: A forecast object. - - Example output:: - - "output": { - "summary": "Light rain on Sunday, with high temperatures rising to 28°C on Sunday.", - "icon": "rain", - "data": [ - { - "time": 1529877600, - "summary": "Mostly cloudy until afternoon.", - "icon": "partly-cloudy-day", - "sunriseTime": 1529896835, - "sunsetTime": 1529957280, - "moonPhase": 0.42, - "precipIntensity": 0, - "precipIntensityMax": 0.0051, - "precipIntensityMaxTime": 1529888400, - "precipProbability": 0, - "temperatureHigh": 20.04, - "temperatureHighTime": 1529931600, - "temperatureLow": 10.68, - "temperatureLowTime": 1529982000, - "apparentTemperatureHigh": 20.04, - "apparentTemperatureHighTime": 1529931600, - "apparentTemperatureLow": 10.68, - "apparentTemperatureLowTime": 1529982000, - "dewPoint": 12.18, - "humidity": 0.77, - "pressure": 1025.16, - "windSpeed": 3.84, - "windGust": 6.51, - "windGustTime": 1529881200, - "windBearing": 336, - "cloudCover": 0.5, - "uvIndex": 6, - "uvIndexTime": 1529928000, - "visibility": 14.08, - "ozone": 331.24, - "temperatureMin": 13.89, - "temperatureMinTime": 1529960400, - "temperatureMax": 20.04, - "temperatureMaxTime": 1529931600, - "apparentTemperatureMin": 13.89, - "apparentTemperatureMinTime": 1529960400, - "apparentTemperatureMax": 20.04, - "apparentTemperatureMaxTime": 1529931600 - }, - { - "time": 1529964000, - "summary": "Partly cloudy throughout the day.", - "icon": "partly-cloudy-day", - "sunriseTime": 1529983261, - "sunsetTime": 1530043677, - "moonPhase": 0.45, - "precipIntensity": 0, - "precipIntensityMax": 0, - "precipProbability": 0, - "temperatureHigh": 20.95, - "temperatureHighTime": 1530018000, - "temperatureLow": 11.47, - "temperatureLowTime": 1530064800, - "apparentTemperatureHigh": 20.95, - "apparentTemperatureHighTime": 1530018000, - "apparentTemperatureLow": 11.47, - "apparentTemperatureLowTime": 1530064800, - "dewPoint": 10.19, - "humidity": 0.69, - "pressure": 1026.14, - "windSpeed": 3.67, - "windGust": 7.13, - "windGustTime": 1530036000, - "windBearing": 4, - "cloudCover": 0.3, - "uvIndex": 5, - "uvIndexTime": 1530010800, - "visibility": 16.09, - "ozone": 328.59, - "temperatureMin": 10.68, - "temperatureMinTime": 1529982000, - "temperatureMax": 20.95, - "temperatureMaxTime": 1530018000, - "apparentTemperatureMin": 10.68, - "apparentTemperatureMinTime": 1529982000, - "apparentTemperatureMax": 20.95, - "apparentTemperatureMaxTime": 1530018000 - }, - # ... - } - """ - - response = self.get(self._get_url(lat, long)) - return response.output['daily'] - - -# vim:sw=4:ts=4:et: diff --git a/platypush/plugins/weather/darksky/manifest.yaml b/platypush/plugins/weather/darksky/manifest.yaml deleted file mode 100644 index 5d592f0ed0..0000000000 --- a/platypush/plugins/weather/darksky/manifest.yaml +++ /dev/null @@ -1,6 +0,0 @@ -manifest: - events: {} - install: - pip: [] - package: platypush.plugins.weather.darksky - type: plugin