From 2566d4530accdbed6e68c9a097a0d78ed0f29143 Mon Sep 17 00:00:00 2001 From: aalavender Date: Tue, 20 Aug 2019 11:22:23 +0800 Subject: [PATCH 1/2] async_setup_platform --- custom_components/feedparser/sensor.py | 35 ++++++++++++++++---------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/custom_components/feedparser/sensor.py b/custom_components/feedparser/sensor.py index 0ec1664..10fa524 100644 --- a/custom_components/feedparser/sensor.py +++ b/custom_components/feedparser/sensor.py @@ -6,14 +6,13 @@ Following spec from https://validator.w3.org/feed/docs/rss2.html """ +import asyncio import re import feedparser import logging import voluptuous as vol from datetime import timedelta from dateutil import parser -from time import strftime -from subprocess import check_output from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv from homeassistant.components.sensor import (PLATFORM_SCHEMA) @@ -45,23 +44,33 @@ vol.Optional(CONF_EXCLUSIONS, default=[]): vol.All(cv.ensure_list, [cv.string]), }) -def setup_platform(hass, config, add_devices, discovery_info=None): - add_devices([FeedParserSensor(hass, config)]) + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + _LOGGER.info("start async_setup_platform sensor feedparser") + async_add_devices([FeedParserSensor( + feed=config[CONF_FEED_URL], + name=config[CONF_NAME], + date_format=config[CONF_DATE_FORMAT], + show_topn=config[CONF_SHOW_TOPN], + inclusions=config[CONF_INCLUSIONS], + exclusions=config[CONF_EXCLUSIONS] + )], True) + class FeedParserSensor(Entity): - def __init__(self, hass, config): - self.hass = hass - self._feed = config[CONF_FEED_URL] - self._name = config[CONF_NAME] - self._date_format = config[CONF_DATE_FORMAT] - self._show_topn = config[CONF_SHOW_TOPN] - self._inclusions = config[CONF_INCLUSIONS] - self._exclusions = config[CONF_EXCLUSIONS] + def __init__(self, feed: str, name: str, date_format: str, show_topn: str, exclusions: str, inclusions:str): + self._feed = feed + self._name = name + self._date_format = date_format + self._show_topn = show_topn + self._inclusions = inclusions + self._exclusions = exclusions self._state = None self._entries = [] - self.update() def update(self): + _LOGGER.info("sensor feedparser update from " + self._feed) parsedFeed = feedparser.parse(self._feed) if not parsedFeed: From 3eeb02d403fe2b5b0e2aa9dce4e21991a8276794 Mon Sep 17 00:00:00 2001 From: aalavender Date: Tue, 20 Aug 2019 11:24:08 +0800 Subject: [PATCH 2/2] async_setup_platform --- custom_components/feedparser/sensor.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/custom_components/feedparser/sensor.py b/custom_components/feedparser/sensor.py index 10fa524..b98d8a0 100644 --- a/custom_components/feedparser/sensor.py +++ b/custom_components/feedparser/sensor.py @@ -47,7 +47,6 @@ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - _LOGGER.info("start async_setup_platform sensor feedparser") async_add_devices([FeedParserSensor( feed=config[CONF_FEED_URL], name=config[CONF_NAME], @@ -70,7 +69,6 @@ def __init__(self, feed: str, name: str, date_format: str, show_topn: str, exclu self._entries = [] def update(self): - _LOGGER.info("sensor feedparser update from " + self._feed) parsedFeed = feedparser.parse(self._feed) if not parsedFeed: