Add feed config option generator.

This allows setting or overwriting the generator provided by
the feed.
This commit is contained in:
Hartmut Goebel
2019-09-16 14:28:00 +02:00
parent 7df2d306e4
commit 52cf05c09c
2 changed files with 14 additions and 3 deletions

View File

@ -52,6 +52,7 @@ Since *feeds* is a list you can add additional feeds to watch if you want.
template: "dot com: {title} {url}"
- url: https://example.org/feed/
template: "dot org: {title} {url}"
generator: wordpress
## Special Handling for Different Feed Generators
@ -60,6 +61,14 @@ Since *feeds* is a list you can add additional feeds to watch if you want.
generators. For example detecting the entries perma-link. Currently
only Wordpress is handled, but others may follow.
If a feed does not provide a proper *generator* entry, you can set it
by adding a `generator:` value to the feed's configuration. See the
seconds one in the example above.
You can check whether feed provides a *generator* entry like this:
feediverse --verbose --dry-run feedverse-test.rc | grep generator
## Why?

View File

@ -56,7 +56,8 @@ def main():
for feed in config['feeds']:
for entry in get_feed(feed['url'], config['updated'],
config['include_images']):
config['include_images'],
generator=feed.get('generator')):
if args.verbose:
print(entry)
if args.dry_run:
@ -107,7 +108,7 @@ def detect_generator(feed):
return "wordpress"
return None
def get_feed(feed_url, last_update, include_images):
def get_feed(feed_url, last_update, include_images, generator=None):
new_entries = 0
feed = feedparser.parse(feed_url)
if last_update:
@ -116,7 +117,7 @@ def get_feed(feed_url, last_update, include_images):
else:
entries = feed.entries
entries.sort(key=lambda e: e.published_parsed)
generator = detect_generator(feed)
generator = generator or detect_generator(feed)
for entry in entries:
new_entries += 1
yield get_entry(entry, include_images, generator)
@ -198,6 +199,7 @@ def get_entry(entry, include_images, generator=None):
'hashtags': ' '.join(hashtags),
'updated': dateutil.parser.parse(entry['updated']),
'images': collect_images(entry, generator) if include_images else [],
'__generator__': generator,
}
def setup(config_file):