API reference¶
This part of the documentation covers all the interfaces of reader.
Reader object¶
Most of reader’s functionality can be accessed through a Reader
instance.
- reader.make_reader(url, *, feed_root='', plugins=..., session_timeout=(3.05, 60), reserved_name_scheme=...)¶
Create a new
Reader
.reader can optionally parse local files, with the feed URL either a bare path or a file URI.
The interpretation of local feed URLs depends on the value of the feed
feed_root
argument. It can be one of the following:None
No local file parsing. Updating local feeds will fail.
''
(the empty string)Full filesystem access. This should be used only if the source of feed URLs is trusted.
Both absolute and relative feed paths are supported. The current working directory is used normally (as if the path was passed to
open()
).Example: Assuming the current working directory is
/feeds
, all of the following feed URLs correspond to/feeds/feed.xml
:feed.xml
,/feeds/feed.xml
,file:feed.xml
, andfile:/feeds/feed.xml
.'/path/to/feed/root'
(any non-empty string)An absolute path; all feed URLs are interpreted as relative to it. This can be used if the source of feed URLs is untrusted.
Feed paths must be relative. The current working directory is ignored.
Example: Assuming the feed root is
/feeds
, feed URLsfeed.xml
andfile:feed.xml
correspond to/feeds/feed.xml
./feed.xml
andfile:/feed.xml
are both errors.Relative paths pointing outside the feed root are errors, to prevent directory traversal attacks. Note that symbolic links inside the feed root can point outside it.
The root and feed paths are joined and normalized with no regard for symbolic links; see
os.path.normpath()
for details.Accessing device files on Windows is an error.
- Parameters
url (str) – Path to the reader database.
feed_root (str or None) – Directory where to look for local feeds. One of
None
(don’t open local feeds),''
(full filesystem access; default), or'/path/to/feed/root'
(an absolute path that feed paths are relative to).plugins (iterable(str or callable(Reader)) or None) – An iterable of built-in plugin names or plugin(reader) –> None callables. The callables are called with the reader object before it is returned. Exceptions from plugin code will propagate to the caller. The only plugin used by default is
reader.ua_fallback
.session_timeout (float or tuple(float, float) or None) – When retrieving HTTP(S) feeds, how many seconds to wait for the server to send data, as a float, or a (connect timeout, read timeout) tuple. Passed to the underlying Requests session.
reserved_name_scheme (dict(str, str) or None) – Value for
reserved_name_scheme
. The prefixes default to.reader.
/.plugin.
, and the separator to.
- Returns
The reader.
- Return type
- Raises
InvalidPluginError – If an invalid plugin name is passed to
plugins
.
New in version 1.6: The
feed_root
keyword argument.Changed in version 2.0: The default
feed_root
behavior will change from full filesystem access (''
) to don’t open local feeds (None
).New in version 1.14: The
session_timeout
keyword argument, with a default of (3.05, 60) seconds; the previous behavior was to never time out.New in version 1.16: The
plugins
keyword argument. Using an invalid plugin name raisesInvalidPluginError
, aValueError
subclass.New in version 1.17: The
reserved_name_scheme
argument.
- class reader.Reader(...)¶
A feed reader.
Persists feed and entry state, provides operations on them, and stores configuration.
Currently, the following feed types are supported:
Atom (provided by feedparser)
RSS (provided by feedparser)
JSON Feed
Important
Reader objects should be created using
make_reader()
; the Reader constructor is not stable yet and may change without any notice.Important
The
Reader
object is not thread safe; its methods should be called only from the thread that created it.To access the same database from multiple threads, create one instance in each thread. If you have a strong use case preventing you to do so, please +1 / comment in #206.
New in version 1.13: JSON Feed support.
- after_entry_update_hooks¶
List of functions called for each updated entry after the feed was updated.
Each function is called with:
reader – the
Reader
instanceentry – an
Entry
-like objectstatus – an
EntryUpdateStatus
value
Each function should return
None
.Warning
The only entry attributes guaranteed to be present are
feed_url
,id
, andobject_id
; all other attributes may be missing (accessing them may raiseAttributeError
).New in version 1.20.
- close()¶
Close this
Reader
.Releases any underlying resources associated with the reader.
The reader becomes unusable from this point forward; a
ReaderError
will be raised if any other method is called.- Raises
- add_feed(feed)¶
Add a new feed.
Feed updates are enabled by default.
- Parameters
- Raises
- delete_feed(feed)¶
Delete a feed and all of its entries, metadata, and tags.
- Parameters
- Raises
New in version 1.18: Renamed from
remove_feed()
.
- remove_feed(feed)¶
Deprecated alias for
delete_feed()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
delete_feed()
instead.
- change_feed_url(old, new)¶
Change the URL of a feed.
User-defined feed attributes are preserved:
added
,user_title
. Feed-defined feed attributes are also preserved, at least until the next update:title
,link
,author
(exceptupdated
, which gets set to None). All other feed attributes are set to their default values.The entries, tags and metadata are preserved.
- Parameters
- Raises
FeedNotFoundError – If
old
does not exist.FeedExistsError – If
new
already exists.
New in version 1.8.
- get_feeds(*, feed=None, tags=None, broken=None, updates_enabled=None, sort='title', limit=None, starting_after=None)¶
Get all or some of the feeds.
The
tags
argument can be a list of one or more feed tags. Multiple tags are interpreted as a conjunction (AND). To use a disjunction (OR), use a nested list. To negate a tag, prefix the tag value with a minus sign (-
). Examples:['one']
one
['one', 'two']
[['one'], ['two']]
one AND two
[['one', 'two']]
one OR two
[['one', 'two'], 'three']
(one OR two) AND three
['one', '-two']
one AND NOT two
Special values
True
andFalse
match feeds with any tags and no tags, respectively.True
[True]
any tags
False
[False]
no tags
[True, '-one']
any tags AND NOT one
[[False, 'one']]
no tags OR one
- Parameters
feed (str or Feed or None) – Only return the feed with this URL.
tags (None or bool or list(str or bool or list(str or bool))) – Only return feeds matching these tags.
updates_enabled (bool or None) – Only return feeds that have updates enabled / disabled.
sort (str) – How to order feeds; one of
'title'
(byuser_title
ortitle
, case insensitive; default), or'added'
(last added first).limit (int or None) – A limit on the number of feeds to be returned; by default, all feeds are returned.
starting_after (str or Feed or None) – Return feeds after this feed; a cursor for use in pagination.
- Yields
Feed
– Sorted according tosort
.- Raises
FeedNotFoundError – If
starting_after
does not exist.
New in version 1.7: The
tags
keyword argument.New in version 1.7: The
broken
keyword argument.New in version 1.11: The
updates_enabled
keyword argument.New in version 1.12: The
limit
andstarting_after
keyword arguments.
- get_feed(feed, default=no value)¶
Get a feed.
Like
next(iter(reader.get_feeds(feed=feed)), default)
, but raises a custom exception instead ofStopIteration
.- Parameters
- Returns
The feed.
- Return type
- Raises
- get_feed_counts(*, feed=None, tags=None, broken=None, updates_enabled=None)¶
Count all or some of the feeds.
See
get_feeds()
for details on how filtering works.- Parameters
- Returns
- Return type
- Raises
New in version 1.11.
- set_feed_user_title(feed, title)¶
Set a user-defined title for a feed.
- Parameters
- Raises
- enable_feed_updates(feed)¶
Enable updates for a feed.
See
update_feeds()
for details.- Parameters
- Raises
New in version 1.11.
- disable_feed_updates(feed)¶
Disable updates for a feed.
See
update_feeds()
for details.- Parameters
- Raises
New in version 1.11.
- update_feeds(new_only=no value, workers=1, *, new=no value)¶
Update all the feeds that have updates enabled.
Silently skip feeds that raise
ParseError
.Roughly equivalent to
for _ in reader.update_feed_iter(...): pass
.- Parameters
new_only (bool) –
Only update feeds that have never been updated. Defaults to False.
Deprecated since version 1.19: Use
new
instead.workers (int) – Number of threads to use when getting the feeds.
new (bool or None) – Only update feeds that have never been updated / have been updated before. Defaults to None.
- Raises
Changed in version 1.11: Only update the feeds that have updates enabled.
Changed in version 1.15: Update entries whenever their content changes, regardless of their
updated
date.Content-only updates (not due to an
updated
change) are limited to 24 consecutive updates, to prevent spurious updates for entries whose content changes excessively (for example, because it includes the current time).Previously, entries would be updated only if the entry
updated
was newer than the stored one.Deprecated since version 1.19: The
new_only
argument (will be removed in reader 2.0); usenew
instead.
- update_feeds_iter(new_only=no value, workers=1, *, new=no value)¶
Update all the feeds that have updates enabled.
- Parameters
new_only (bool) –
Only update feeds that have never been updated. Defaults to False.
Deprecated since version 1.19: Use
new
instead.workers (int) – Number of threads to use when getting the feeds.
new (bool or None) – Only update feeds that have never been updated / have been updated before. Defaults to None.
- Yields
UpdateResult
– An (url, value) pair; the value is one of:a summary of the updated feed, if the update was successful
None, if the server indicated the feed has not changed since the last update
an exception instance
Currently, the exception is always a
ParseError
, but otherReaderError
subclasses may be yielded in the future.- Raises
New in version 1.14.
Changed in version 1.15: Update entries whenever their content changes. See
update_feeds()
for details.Deprecated since version 1.19: The
new_only
argument (will be removed in reader 2.0); usenew
instead.
- update_feed(feed)¶
Update a single feed.
The feed will be updated even if updates are disabled for it.
- Parameters
- Returns
A summary of the updated feed or None, if the server indicated the feed has not changed since the last update.
- Return type
UpdatedFeed or None
- Raises
Changed in version 1.14: The method now returns UpdatedFeed or None instead of None.
Changed in version 1.15: Update entries whenever their content changes. See
update_feeds()
for details.
- get_entries(*, feed=None, entry=None, read=None, important=None, has_enclosures=None, feed_tags=None, sort='recent', limit=None, starting_after=None)¶
Get all or some of the entries.
Entries are sorted according to
sort
. Possible values:'recent'
Most recent first. Currently, that means:
by import date for entries published less than 7 days ago
by published date otherwise (if an entry does not have
published
,updated
is used)
This is to make sure newly imported entries appear at the top regardless of when the feed says they were published (sometimes, it lies by a day or two).
Note
The algorithm for “recent” is a heuristic and may change over time.
'random'
Random order (shuffled). At at most 256 entries will be returned.
New in version 1.2.
- Parameters
feed (str or Feed or None) – Only return the entries for this feed.
entry (tuple(str, str) or Entry or None) – Only return the entry with this (feed URL, entry id) tuple.
important (bool or None) – Only return (un)important entries.
has_enclosures (bool or None) – Only return entries that (don’t) have enclosures.
feed_tags (None or bool or list(str or bool or list(str or bool))) – Only return the entries from feeds matching these tags; works like the
get_feeds()
tags
argument.sort (str) – How to order entries; one of
'recent'
(default) or'random'
.limit (int or None) – A limit on the number of entries to be returned; by default, all entries are returned.
starting_after (tuple(str, str) or Entry or None) – Return entries after this entry; a cursor for use in pagination. Using
starting_after
withsort='random'
is not supported.
- Yields
Entry
– Sorted according tosort
.- Raises
EntryNotFoundError – If
starting_after
does not exist.
New in version 1.2: The
sort
keyword argument.New in version 1.7: The
feed_tags
keyword argument.New in version 1.12: The
limit
andstarting_after
keyword arguments.
- get_entry(entry, default=no value)¶
Get an entry.
Like
next(iter(reader.get_entries(entry=entry)), default)
, but raises a custom exception instead ofStopIteration
.- Parameters
- Returns
The entry.
- Return type
- Raises
- get_entry_counts(*, feed=None, entry=None, read=None, important=None, has_enclosures=None, feed_tags=None)¶
Count all or some of the entries.
See
get_entries()
for details on how filtering works.- Parameters
feed (str or Feed or None) – Only count the entries for this feed.
entry (tuple(str, str) or Entry or None) – Only count the entry with this (feed URL, entry id) tuple.
important (bool or None) – Only count (un)important entries.
has_enclosures (bool or None) – Only count entries that (don’t) have enclosures.
feed_tags (None or bool or list(str or bool or list(str or bool))) – Only count the entries from feeds matching these tags.
- Returns
- Return type
- Raises
New in version 1.11.
- mark_entry_as_read(entry)¶
Mark an entry as read.
New in version 1.18: Renamed from
mark_as_read()
.
- mark_entry_as_unread(entry)¶
Mark an entry as unread.
New in version 1.18: Renamed from
mark_as_unread()
.
- mark_entry_as_important(entry)¶
Mark an entry as important.
New in version 1.18: Renamed from
mark_as_important()
.
- mark_entry_as_unimportant(entry)¶
Mark an entry as unimportant.
New in version 1.18: Renamed from
mark_as_unimportant()
.
- mark_as_read(entry)¶
Deprecated alias for
mark_entry_as_read()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
mark_entry_as_read()
instead.
- mark_as_unread(entry)¶
Deprecated alias for
mark_entry_as_unread()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
mark_entry_as_unread()
instead.
- mark_as_important(entry)¶
Deprecated alias for
mark_entry_as_important()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
mark_entry_as_important()
instead.
- mark_as_unimportant(entry)¶
Deprecated alias for
mark_entry_as_unimportant()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
mark_entry_as_unimportant()
instead.
- get_feed_metadata(feed, *args, key=None)¶
Get all or some of the metadata for a feed as
(key, value)
pairs.- Parameters
- Yields
tuple(str, JSONType) –
(key, value)
pairs, in undefined order. JSONType is whateverjson.dumps()
accepts.- Raises
Changed in version 1.18:
iter_feed_metadata()
was renamed toget_feed_metadata()
, andget_feed_metadata()
was renamed toget_feed_metadata_item()
.To preserve backwards compatibility, the
get_feed_metadata(feed, key[, default]) -> value
form (positional arguments only) will continue to work as an alias forget_feed_metadata_item(feed, key[, default])
until the last 1.* reader version, after which it will result in aTypeError
.
- get_feed_metadata_item(feed, key, default=no value)¶
Get metadata for a feed.
Like
next(iter(reader.get_feed_metadata(feed, key=key)), (None, default))[1]
, but raises a custom exception instead ofStopIteration
.- Parameters
- Returns
The metadata value. JSONType is whatever
json.dumps()
accepts.- Return type
JSONType
- Raises
New in version 1.18: Renamed from
get_feed_metadata()
.
- set_feed_metadata_item(feed, key, value)¶
Set metadata for a feed.
- Parameters
key (str) – The key of the metadata item to set.
value (JSONType) – The value of the metadata item to set. JSONType is whatever
json.dumps()
accepts.
- Raises
New in version 1.18: Renamed from
set_feed_metadata()
.
- delete_feed_metadata_item(feed, key)¶
Delete metadata for a feed.
- Parameters
- Raises
New in version 1.18: Renamed from
delete_feed_metadata()
.
- iter_feed_metadata(feed, *args, key=None)¶
Deprecated alias for
get_feed_metadata()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
get_feed_metadata()
instead.
- set_feed_metadata(feed, key, value)¶
Deprecated alias for
set_feed_metadata_item()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
set_feed_metadata_item()
instead.
- delete_feed_metadata(feed, key)¶
Deprecated alias for
delete_feed_metadata_item()
.Deprecated since version 1.18: This method will be removed in reader 2.0. Use
delete_feed_metadata_item()
instead.
- enable_search()¶
Enable full-text search.
Calling this method if search is already enabled is a no-op.
- Raises
- disable_search()¶
Disable full-text search.
Calling this method if search is already disabled is a no-op.
- Raises
- is_search_enabled()¶
Check if full-text search is enabled.
- Returns
Whether search is enabled or not.
- Return type
- Raises
- update_search()¶
Update the full-text search index.
Search must be enabled to call this method.
- Raises
- search_entries(query, *, feed=None, entry=None, read=None, important=None, has_enclosures=None, feed_tags=None, sort='relevant', limit=None, starting_after=None)¶
Get entries matching a full-text search query.
Entries are sorted according to
sort
. Possible values:'relevant'
Most relevant first.
'recent'
Most recent first. See
get_entries()
for details on what recent means.New in version 1.4.
'random'
Random order (shuffled). At at most 256 entries will be returned.
New in version 1.10.
Note
The query syntax is dependent on the search provider.
The default (and for now, only) search provider is SQLite FTS5. You can find more details on its query syntax here: https://www.sqlite.org/fts5.html#full_text_query_syntax
The columns available in queries are:
title
: the entry titlefeed
: the feed titlecontent
: the entry main text content; this includes the summary and the value of contents that have text/(x)html, text/plain or missing content types
Query examples:
hello internet
: entries that match “hello” and “internet”hello NOT internet
: entries that match “hello” but do not match “internet”hello feed: cortex
: entries that match “hello” anywhere, and their feed title matches “cortex”hello NOT feed: internet
: entries that match “hello” anywhere, and their feed title does not match “internet”
Search must be enabled to call this method.
- Parameters
query (str) – The search query.
feed (str or Feed or None) – Only search the entries for this feed.
entry (tuple(str, str) or Entry or None) – Only search for the entry with this (feed URL, entry id) tuple.
important (bool or None) – Only search (un)important entries.
has_enclosures (bool or None) – Only search entries that (don’t) have enclosures.
feed_tags (None or bool or list(str or bool or list(str or bool))) – Only return the entries from feeds matching these tags; works like the
get_feeds()
tags
argument.sort (str) – How to order results; one of
'relevant'
(default),'recent'
, or'random'
.limit (int or None) – A limit on the number of results to be returned; by default, all results are returned.
starting_after (tuple(str, str) or EntrySearchResult or None) – Return results after this result; a cursor for use in pagination. Using
starting_after
withsort='random'
is not supported.
- Yields
EntrySearchResult
– Sorted according tosort
.- Raises
EntryNotFoundError – If
starting_after
does not exist.
New in version 1.4: The
sort
keyword argument.New in version 1.7: The
feed_tags
keyword argument.New in version 1.12: The
limit
andstarting_after
keyword arguments.
- search_entry_counts(query, *, feed=None, entry=None, read=None, important=None, has_enclosures=None, feed_tags=None)¶
Count entries matching a full-text search query.
See
search_entries()
for details on how the query syntax and filtering work.Search must be enabled to call this method.
- Parameters
query (str) – The search query.
feed (str or Feed or None) – Only count the entries for this feed.
entry (tuple(str, str) or Entry or None) – Only count the entry with this (feed URL, entry id) tuple.
important (bool or None) – Only count (un)important entries.
has_enclosures (bool or None) – Only count entries that (don’t) have enclosures.
feed_tags (None or bool or list(str or bool or list(str or bool))) – Only count the entries from feeds matching these tags.
- Returns
- Return type
- Raises
New in version 1.11.
- add_feed_tag(feed, tag)¶
Add a tag to a feed.
Adding a tag that the feed already has is a no-op.
- Parameters
- Raises
New in version 1.7.
- remove_feed_tag(feed, tag)¶
Remove a tag from a feed.
Removing a tag that the feed does not have is a no-op.
- Parameters
- Raises
New in version 1.7.
- get_feed_tags(feed=None)¶
Get all or some of the feed tags.
- Parameters
feed (str or Feed or None) – Only return the tags for this feed.
- Yields
str – The tags, in alphabetical order.
- Raises
New in version 1.7.
- make_reader_reserved_name(key)¶
Create a reader-reserved tag or metadata name. See Reserved names for details.
Uses
reserved_name_scheme
to build names of the format:{reader_prefix}{key}
Using the default scheme:
>>> reader.make_reader_reserved_name('key') '.reader.key'
New in version 1.17.
- make_plugin_reserved_name(plugin_name, key=None)¶
Create a plugin-reserved tag or metadata name. See Reserved names for details.
Plugins should use this to generate names for plugin-specific tags and metadata.
Uses
reserved_name_scheme
to build names of the format:{plugin_prefix}{plugin_name} {plugin_prefix}{plugin_name}{separator}{key}
Using the default scheme:
>>> reader.make_plugin_reserved_name('myplugin') '.plugin.myplugin' >>> reader.make_plugin_reserved_name('myplugin', 'key') '.plugin.myplugin.key'
- Parameters
- Returns
The name.
- Return type
New in version 1.17.
- property reserved_name_scheme¶
Mapping used to build reserved names. See
make_reader_reserved_name()
andmake_plugin_reserved_name()
for details on how this is used.The default scheme (these keys are required):
{'reader_prefix': '.reader.', 'plugin_prefix': '.plugin.', 'separator': '.'}
The returned mapping is immutable; assign a new mapping to change the scheme.
New in version 1.17.
Data objects¶
- class reader.Feed(url, updated=None, title=None, link=None, author=None, user_title=None, added=None, last_updated=None, last_exception=None, updates_enabled=True)¶
Data type representing a feed.
All
datetime
attributes are timezone-naive, and always represent UTC.- url¶
The URL of the feed.
- updated = None¶
The date the feed was last updated, according to the feed.
- title = None¶
The title of the feed.
- link = None¶
The URL of a page associated with the feed.
- author = None¶
The author of the feed.
- user_title = None¶
User-defined feed title.
- added = None¶
The date when the feed was added.
New in version 1.3.
- last_updated = None¶
The date when the feed was last retrieved by reader.
New in version 1.3.
- last_exception = None¶
If a
ParseError
happend during the last update, its cause.New in version 1.3.
- updates_enabled = True¶
Whether updates are enabled for this feed.
New in version 1.11.
- class reader.ExceptionInfo(type_name, value_str, traceback_str)¶
Data type representing information about an exception.
New in version 1.3.
- type_name¶
The fully qualified name of the exception type.
- value_str¶
String representation of the exception value.
- traceback_str¶
String representation of the exception traceback.
- class reader.Entry(id, updated, title=None, link=None, author=None, published=None, summary=None, content=(), enclosures=(), read=False, important=False, last_updated=None, original_feed_url=None, feed=None)¶
Data type representing an entry.
All
datetime
attributes are timezone-naive, and always represent UTC.- property feed_url¶
The feed URL.
- id¶
The entry id.
- updated¶
The date the entry was last updated, according to the feed.
- title = None¶
The title of the entry.
- link = None¶
The URL of a page associated with the entry.
- author = None¶
The author of the feed.
- published = None¶
The date the entry was first published.
- summary = None¶
A summary of the entry.
- read = False¶
Whether the entry was read or not.
- important = False¶
Whether the entry is important or not.
- last_updated = None¶
The date when the entry was last updated by reader.
New in version 1.3.
- original_feed_url = None¶
The URL of the original feed of the entry.
If the feed URL never changed, the same as
feed_url
.New in version 1.8.
- feed = None¶
The entry’s feed.
- class reader.Content(value, type=None, language=None)¶
Data type representing a piece of content.
- value¶
The content value.
- type = None¶
The content type.
- language = None¶
The content language.
- class reader.Enclosure(href, type=None, length=None)¶
Data type representing an external file.
- href¶
The file URL.
- type = None¶
The file content type.
- length = None¶
The file length.
- class reader.EntrySearchResult(feed_url, id, metadata=mappingproxy({}), content=mappingproxy({}))¶
Data type representing the result of an entry search.
metadata
andcontent
are dicts where the key is the path of an entry attribute, and the value is aHighlightedString
snippet corresponding to that attribute, with HTML stripped.>>> result = next(reader.search_entries('hello internet')) >>> result.metadata['.title'].value 'A Recent Hello Internet' >>> reader.get_entry(result).title 'A Recent Hello Internet'
- feed_url¶
The feed URL.
- id¶
The entry id.
- metadata = mappingproxy({})¶
Matching entry metadata, in arbitrary order. Currently entry.title and entry.feed.user_title/.title.
- content = mappingproxy({})¶
Matching entry content, sorted by relevance. Any of entry.summary and entry.content[].value.
- class reader.HighlightedString(value='', highlights=())¶
A string that has some of its parts highlighted.
- value = ''¶
The underlying string.
- highlights = ()¶
The highlights; non-overlapping slices with positive start/stop and None step.
- classmethod extract(text, before, after)¶
Extract highlights with before/after markers from text.
>>> HighlightedString.extract( '>one< two', '>', '<') HighlightedString(value='one two', highlights=(slice(0, 3, None),))
- Parameters
- Returns
A highlighted string.
- Return type
- split()¶
Split the highlighted string into parts.
>>> list(HighlightedString('abcd', [slice(1, 3)])) ['a', 'bc', 'd']
- Yields
str – The parts (always an odd number); parts with odd indexes are highlighted, parts with even indexes are not.
- class reader.FeedCounts(total=None, broken=None, updates_enabled=None)¶
Count information about feeds.
New in version 1.11.
- total = None¶
Total number of feeds.
- broken = None¶
Number of broken feeds.
- updates_enabled = None¶
Number of feeds that have updates enabled.
- class reader.EntryCounts(total=None, read=None, important=None, has_enclosures=None)¶
Count information about entries.
New in version 1.11.
- total = None¶
Total number of entries.
- read = None¶
Number of read entries.
- important = None¶
Number of important entries.
- has_enclosures = None¶
Number of entries that have enclosures.
- class reader.EntrySearchCounts(total=None, read=None, important=None, has_enclosures=None)¶
Count information about entry search results.
New in version 1.11.
- total = None¶
Total number of entries.
- read = None¶
Number of read entries.
- important = None¶
Number of important entries.
- has_enclosures = None¶
Number of entries that have enclosures.
- class reader.UpdateResult(url, value)¶
Named tuple representing the result of a feed update.
New in version 1.14.
- property url¶
The URL of the feed.
- property value¶
One of:
If the update was successful; a summary of the updated feed.
If the server indicated the feed has not changed since the last update.
If there was an error while updating the feed.
- class reader.UpdatedFeed(url, new, modified)¶
The result of a successful feed update.
New in version 1.14.
Changed in version 1.19: The
updated
argument/attribute was renamed tomodified
.- url¶
The URL of the feed.
- new¶
The number of new entries (entries that did not previously exist in storage).
- modified¶
The number of modified entries (entries that existed in storage, but had different data than the corresponding feed file entry.)
- property updated¶
Deprecated alias for
UpdatedFeed.modified
.
Exceptions¶
- exception reader.ReaderError(message='')¶
Base for all public exceptions.
- exception reader.FeedError(url, message='')¶
A feed error occured.
Subclass of
ReaderError
.- url¶
The feed URL.
- exception reader.ParseError(url, message='')¶
An error occured while getting/parsing feed.
The original exception should be chained to this one (e.__cause__).
Subclass of
FeedError
.
- exception reader.EntryError(feed_url, id, message='')¶
An entry error occurred.
Changed in version 1.18: The
url
argument/attribute was renamed tofeed_url
.Subclass of
ReaderError
.- feed_url¶
The feed URL.
- id¶
The entry id.
- property url¶
Deprecated alias for
EntryError.feed_url
.
- exception reader.EntryNotFoundError(feed_url, id, message='')¶
Entry not found.
Subclass of
EntryError
.
- exception reader.MetadataError(*args, key, **kwargs)¶
A metadata error occurred.
Changed in version 1.18: Signature changed from
MetadataError(message='')
toMetadataError(key, message='')
.Subclass of
ReaderError
.- key¶
The metadata key.
- exception reader.MetadataNotFoundError(*args, key, **kwargs)¶
Metadata not found.
Changed in version 1.18: Signature changed from
MetadataNotFoundError(url, key, message='')
toMetadataNotFoundError(key, message='')
.Subclass of
MetadataError
.
- exception reader.FeedMetadataNotFoundError(url, key, message='')¶
Feed metadata not found.
New in version 1.18.
Subclass of
MetadataNotFoundError
andFeedError
.
- exception reader.StorageError(message='')¶
An exception was raised by the underlying storage.
The original exception should be chained to this one (e.__cause__).
Subclass of
ReaderError
.
- exception reader.SearchError(message='')¶
A search-related exception.
If caused by an exception raised by the underlying search provider, the original exception should be chained to this one (e.__cause__).
Subclass of
ReaderError
.
- exception reader.SearchNotEnabledError(message='')¶
A search-related method was called when search was not enabled.
Subclass of
SearchError
.
- exception reader.InvalidSearchQueryError(message='')¶
The search query provided was somehow invalid.
Subclass of
SearchError
andValueError
.
- exception reader.PluginError(message='')¶
A plugin-related exception.
Subclass of
ReaderError
.
- exception reader.InvalidPluginError(message='')¶
An invalid plugin was provided.
Subclass of
PluginError
andValueError
.