rss_reader.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. import logging
  3. import feedparser
  4. from kalliope.core.NeuronModule import NeuronModule, MissingParameterException
  5. logging.basicConfig()
  6. logger = logging.getLogger("kalliope")
  7. class Rss_reader(NeuronModule):
  8. def __init__(self, **kwargs):
  9. super(Rss_reader, self).__init__(**kwargs)
  10. self.feedUrl = kwargs.get('feed_url', None)
  11. self.limit = kwargs.get('max_items', 30)
  12. # check if parameters have been provided
  13. if self._is_parameters_ok():
  14. # prepare a returned dict
  15. returned_dict = dict()
  16. logging.debug("Reading feed from: %s" % self.feedUrl)
  17. feed = feedparser.parse( self.feedUrl )
  18. logging.debug("Read title from feed: %s" % feed["channel"]["title"])
  19. returned_dict["feed"] = feed["channel"]["title"]
  20. returned_dict["items"] = feed["items"][:self.limit]
  21. self.say(returned_dict)
  22. def _is_parameters_ok(self):
  23. """
  24. Check if received parameters are ok to perform operations in the neuron
  25. :return: true if parameters are ok, raise an exception otherwise
  26. .. raises:: MissingParameterException
  27. """
  28. if self.feedUrl is None:
  29. raise MissingParameterException("feed url parameter required")
  30. return True