Add feed config option generator.
This allows setting or overwriting the generator provided by the feed.
This commit is contained in:
@ -52,6 +52,7 @@ Since *feeds* is a list you can add additional feeds to watch if you want.
|
|||||||
template: "dot com: {title} {url}"
|
template: "dot com: {title} {url}"
|
||||||
- url: https://example.org/feed/
|
- url: https://example.org/feed/
|
||||||
template: "dot org: {title} {url}"
|
template: "dot org: {title} {url}"
|
||||||
|
generator: wordpress
|
||||||
|
|
||||||
|
|
||||||
## Special Handling for Different Feed Generators
|
## 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
|
generators. For example detecting the entries perma-link. Currently
|
||||||
only Wordpress is handled, but others may follow.
|
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?
|
## Why?
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,8 @@ def main():
|
|||||||
|
|
||||||
for feed in config['feeds']:
|
for feed in config['feeds']:
|
||||||
for entry in get_feed(feed['url'], config['updated'],
|
for entry in get_feed(feed['url'], config['updated'],
|
||||||
config['include_images']):
|
config['include_images'],
|
||||||
|
generator=feed.get('generator')):
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print(entry)
|
print(entry)
|
||||||
if args.dry_run:
|
if args.dry_run:
|
||||||
@ -107,7 +108,7 @@ def detect_generator(feed):
|
|||||||
return "wordpress"
|
return "wordpress"
|
||||||
return None
|
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
|
new_entries = 0
|
||||||
feed = feedparser.parse(feed_url)
|
feed = feedparser.parse(feed_url)
|
||||||
if last_update:
|
if last_update:
|
||||||
@ -116,7 +117,7 @@ def get_feed(feed_url, last_update, include_images):
|
|||||||
else:
|
else:
|
||||||
entries = feed.entries
|
entries = feed.entries
|
||||||
entries.sort(key=lambda e: e.published_parsed)
|
entries.sort(key=lambda e: e.published_parsed)
|
||||||
generator = detect_generator(feed)
|
generator = generator or detect_generator(feed)
|
||||||
for entry in entries:
|
for entry in entries:
|
||||||
new_entries += 1
|
new_entries += 1
|
||||||
yield get_entry(entry, include_images, generator)
|
yield get_entry(entry, include_images, generator)
|
||||||
@ -198,6 +199,7 @@ def get_entry(entry, include_images, generator=None):
|
|||||||
'hashtags': ' '.join(hashtags),
|
'hashtags': ' '.join(hashtags),
|
||||||
'updated': dateutil.parser.parse(entry['updated']),
|
'updated': dateutil.parser.parse(entry['updated']),
|
||||||
'images': collect_images(entry, generator) if include_images else [],
|
'images': collect_images(entry, generator) if include_images else [],
|
||||||
|
'__generator__': generator,
|
||||||
}
|
}
|
||||||
|
|
||||||
def setup(config_file):
|
def setup(config_file):
|
||||||
|
|||||||
Reference in New Issue
Block a user