def preview(): # TODO: maybe unify with entries() somehow url = request.args['url'] # TODO: maybe redirect to the feed we have if we already have it # TODO: maybe cache stuff reader = current_app.config['READER_CONFIG'].make_reader( 'default', url=':memory:', plugin_loader=current_app.plugin_loader ) reader.add_feed(url) try: reader.update_feed(url) except ParseError as e: # give plugins a chance to intercept this got_preview_parse_error.send(e) # https://github.com/lemon24/reader/issues/172 # no plugin intercepted the response, so we show the feed; # feed.last_exception will be checked in the template, # and if there was a ParseError, it will be shown feed = reader.get_feed(url) entries = list(reader.get_entries()) # TODO: maybe limit return stream_template('entries.html', entries=entries, feed=feed, read_only=True)
def entries(reader): """List all the entries. Outputs one line per entry in the following format: <feed URL> <entry link or id> """ for entry in reader.get_entries(): click.echo("{} {}".format(entry.feed.url, entry.link or entry.id))
def entries(kwargs): """List all the entries. Outputs one line per entry in the following format: <feed URL> <entry link or id> """ reader = make_reader_with_plugins(**kwargs) for entry in reader.get_entries(): click.echo("{} {}".format(entry.feed.url, entry.link or entry.id))
def entries(): show = request.args.get('show', 'unread') read = {'all': None, 'unread': False, 'read': True}[show] has_enclosures = request.args.get('has-enclosures') has_enclosures = {None: None, 'no': False, 'yes': True}[has_enclosures] important = request.args.get('important') important = {None: None, 'no': False, 'yes': True}[important] reader = get_reader() feed_url = request.args.get('feed') feed = None if feed_url: feed = reader.get_feed(feed_url, None) if not feed: abort(404) entries = reader.get_entries(read=read, feed=feed_url, has_enclosures=has_enclosures, important=important) limit = request.args.get('limit', type=int) if limit: entries = itertools.islice(entries, limit) entries = list(entries) entries_data = None if feed_url: entries_data = [e.id for e in entries] # Ensure flashed messages get removed from the session, # otherwise they keep adding up and never disappear. # Assumes the template will call get_flashed_messages() at some point. # https://github.com/lemon24/reader/issues/81 get_flashed_messages() return stream_template('entries.html', entries=entries, feed=feed, entries_data=entries_data)
def get_entries(**kwargs): yield from reader.get_entries(sort=sort, **kwargs)