Add tool to manage RSS/Atom feeds
- weboob.tools.newsfeed a class representing a feed - the DLFP backend has been updated to use weboob.tools.newsfeed
This commit is contained in:
parent
8b7b34e4cb
commit
a5470b9ce6
3 changed files with 57 additions and 62 deletions
48
weboob/tools/newsfeed.py
Normal file
48
weboob/tools/newsfeed.py
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
import datetime
|
||||
import feedparser
|
||||
from weboob.backends.dlfp.tools import url2id
|
||||
|
||||
class Entry:
|
||||
def __init__(self, entry, url2id=None):
|
||||
if url2id:
|
||||
self.id = url2id(entry.id)
|
||||
else:
|
||||
self.id = entry.id
|
||||
if entry.has_key("link"):
|
||||
self.link = entry["link"]
|
||||
if entry.has_key("title"):
|
||||
self.title = entry["title"]
|
||||
else:
|
||||
self.title = None
|
||||
if entry.has_key("author"):
|
||||
self.author = entry["author"]
|
||||
else:
|
||||
self.author = None
|
||||
if entry.has_key("updated_parsed"):
|
||||
#updated_parsed = entry["updated_parsed"]
|
||||
self.datetime = datetime.datetime(*entry['updated_parsed'][:7])
|
||||
else:
|
||||
self.datetime = None
|
||||
if entry.has_key("content"):
|
||||
self.content = entry["content"][0]["value"]
|
||||
else:
|
||||
self.content = None
|
||||
|
||||
|
||||
class NewsFeed:
|
||||
def __init__(self, url, url2id=None):
|
||||
self.feed = feedparser.parse(url)
|
||||
self.url2id = url2id
|
||||
|
||||
|
||||
|
||||
|
||||
def iter_entries(self):
|
||||
for entry in self.feed['entries']:
|
||||
yield Entry(entry, self.url2id)
|
||||
|
||||
def get_entry(self, id):
|
||||
for entry in self.feed['entries']:
|
||||
if entry.id == id:
|
||||
return Entry(entry, self.url2id)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue