def parser(_, objconf, skip=False, **kwargs): """ Parses the pipe content Args: _ (None): Ignored objconf (obj): The pipe configuration (an Objectify instance) skip (bool): Don't parse the content kwargs (dict): Keyword arguments Kwargs: stream (dict): The original item conf (dict): The pipe configuration Returns: Iter[dict]: The stream of items Examples: >>> from riko import get_path >>> from meza.fntools import Objectify >>> >>> objconf = Objectify({'url': get_path('feed.xml'), 'delay': 0}) >>> result = parser(None, objconf, stream={}) >>> next(result)['title'] == 'Donations' True """ if skip: stream = kwargs['stream'] else: if objconf.memoize and not objconf.cache_type: objconf.cache_type = 'auto' parsed = parse_rss(**objconf) stream = gen_entries(parsed) return stream
def parser(_, objconf, skip=False, **kwargs): """ Parses the pipe content Args: _ (None): Ignored objconf (obj): The pipe configuration (an Objectify instance) skip (bool): Don't parse the content kwargs (dict): Keyword arguments Kwargs: stream (dict): The original item Returns: Iter[dict]: The stream of items Examples: >>> from riko import get_path >>> from meza.fntools import Objectify >>> >>> objconf = Objectify({'url': get_path('bbc.html')}) >>> result = parser(None, objconf, stream={}) >>> next(result)['title'] == 'Using NFC tags in the car' True """ if skip: stream = kwargs['stream'] else: url = get_abspath(objconf.url) rss = autorss.get_rss(url) objconf.url = get_abspath(next(rss)['link']) parsed = parse_rss(**objconf) stream = gen_entries(parsed) return stream
def parser(_, objconf, skip=False, **kwargs): """ Parses the pipe content Args: _ (None): Ignored objconf (obj): The pipe configuration (an Objectify instance) skip (bool): Don't parse the content kwargs (dict): Keyword arguments Kwargs: stream (dict): The original item conf (dict): The pipe configuration Returns: Iter[dict]: The stream of items Examples: >>> from riko import get_path >>> from meza.fntools import Objectify >>> >>> objconf = Objectify({'url': get_path('feed.xml'), 'delay': 0}) >>> result = parser(None, objconf, stream={}) >>> next(result)['title'] == 'Donations' True """ if skip: stream = kwargs['stream'] else: parsed = parse_rss(**objconf) stream = gen_entries(parsed) return stream
def async_parser(_, objconf, skip=False, **kwargs): """ Asynchronously parses the pipe content Args: _ (None): Ignored objconf (obj): The pipe configuration (an Objectify instance) skip (bool): Don't parse the content kwargs (dict): Keyword arguments Kwargs: stream (dict): The original item Returns: Iter[dict]: The stream of items Examples: >>> from riko import get_path >>> from riko.bado import react >>> from riko.bado.mock import FakeReactor >>> from meza.fntools import Objectify >>> >>> def run(reactor): ... callback = lambda x: print(next(x)['title']) ... objconf = Objectify({'url': get_path('bbc.html')}) ... d = async_parser(None, objconf, stream={}) ... return d.addCallbacks(callback, logger.error) >>> >>> try: ... react(run, _reactor=FakeReactor()) ... except SystemExit: ... pass ... Using NFC tags in the car """ if skip: stream = kwargs['stream'] else: url = get_abspath(objconf.url) rss = yield autorss.async_get_rss(url) link = get_abspath(next(rss)['link']) content = yield io.async_url_read(link) parsed = parse_rss(content) stream = gen_entries(parsed) return_value(stream)
def async_parser(_, objconf, skip=False, **kwargs): """ Asynchronously parses the pipe content Args: _ (None): Ignored objconf (obj): The pipe configuration (an Objectify instance) skip (bool): Don't parse the content kwargs (dict): Keyword arguments Kwargs: stream (dict): The original item conf (dict): The pipe configuration Returns: Deferred: twisted.internet.defer.Deferred Iter[dict] Examples: >>> from riko import get_path >>> from riko.bado import react >>> from riko.bado.mock import FakeReactor >>> from meza.fntools import Objectify >>> >>> def run(reactor): ... callback = lambda x: print(next(x)['title']) ... objconf = Objectify({'url': get_path('feed.xml'), 'delay': 0}) ... d = async_parser(None, objconf, stream={}) ... return d.addCallbacks(callback, logger.error) >>> >>> try: ... react(run, _reactor=FakeReactor()) ... except SystemExit: ... pass ... Donations """ if skip: stream = kwargs['stream'] else: url = get_abspath(objconf.url) content = yield io.async_url_read(url, delay=objconf.delay) parsed = parse_rss(content) stream = gen_entries(parsed) return_value(stream)