diff --git a/README.md b/README.md index 1faf7ee..084dc8a 100644 --- a/README.md +++ b/README.md @@ -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? diff --git a/feediverse.py b/feediverse.py index afbc6a4..1e7ea2b 100755 --- a/feediverse.py +++ b/feediverse.py @@ -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):