diff --git a/weboob/backends/inrocks/GenericBackend.py b/weboob/backends/inrocks/GenericBackend.py index b1236d58..3b8f4819 100644 --- a/weboob/backends/inrocks/GenericBackend.py +++ b/weboob/backends/inrocks/GenericBackend.py @@ -21,7 +21,7 @@ from __future__ import with_statement from weboob.capabilities.messages import ICapMessages, Message, Thread from weboob.tools.backend import BaseBackend from weboob.tools.newsfeed import Newsfeed -from .tools import url2id +from .tools import rssid class GenericNewspaperBackend(BaseBackend, ICapMessages): "GenericNewspaperBackend class" @@ -67,7 +67,7 @@ class GenericNewspaperBackend(BaseBackend, ICapMessages): return thread def iter_threads(self): - for article in Newsfeed(self.RSS_FEED, url2id).iter_entries(): + for article in Newsfeed(self.RSS_FEED, rssid).iter_entries(): thread = Thread(article.id) thread.title = article.title thread.date = article.datetime diff --git a/weboob/backends/inrocks/tools.py b/weboob/backends/inrocks/tools.py index 6cc231fc..6f36a172 100644 --- a/weboob/backends/inrocks/tools.py +++ b/weboob/backends/inrocks/tools.py @@ -32,3 +32,6 @@ def id2url(_id): def url2id(url): "return an id from an url" return url + +def rssid(entry): + return url2id(entry.id) diff --git a/weboob/backends/lefigaro/GenericBackend.py b/weboob/backends/lefigaro/GenericBackend.py index b1236d58..3b8f4819 100644 --- a/weboob/backends/lefigaro/GenericBackend.py +++ b/weboob/backends/lefigaro/GenericBackend.py @@ -21,7 +21,7 @@ from __future__ import with_statement from weboob.capabilities.messages import ICapMessages, Message, Thread from weboob.tools.backend import BaseBackend from weboob.tools.newsfeed import Newsfeed -from .tools import url2id +from .tools import rssid class GenericNewspaperBackend(BaseBackend, ICapMessages): "GenericNewspaperBackend class" @@ -67,7 +67,7 @@ class GenericNewspaperBackend(BaseBackend, ICapMessages): return thread def iter_threads(self): - for article in Newsfeed(self.RSS_FEED, url2id).iter_entries(): + for article in Newsfeed(self.RSS_FEED, rssid).iter_entries(): thread = Thread(article.id) thread.title = article.title thread.date = article.datetime diff --git a/weboob/backends/lefigaro/tools.py b/weboob/backends/lefigaro/tools.py index c1179a10..9fc522a3 100644 --- a/weboob/backends/lefigaro/tools.py +++ b/weboob/backends/lefigaro/tools.py @@ -32,3 +32,6 @@ def id2url(_id): def url2id(url): "return an id from an url" return url + +def rssid(entry): + return url2id(entry.id) diff --git a/weboob/backends/minutes20/GenericBackend.py b/weboob/backends/minutes20/GenericBackend.py index b1236d58..3b8f4819 100644 --- a/weboob/backends/minutes20/GenericBackend.py +++ b/weboob/backends/minutes20/GenericBackend.py @@ -21,7 +21,7 @@ from __future__ import with_statement from weboob.capabilities.messages import ICapMessages, Message, Thread from weboob.tools.backend import BaseBackend from weboob.tools.newsfeed import Newsfeed -from .tools import url2id +from .tools import rssid class GenericNewspaperBackend(BaseBackend, ICapMessages): "GenericNewspaperBackend class" @@ -67,7 +67,7 @@ class GenericNewspaperBackend(BaseBackend, ICapMessages): return thread def iter_threads(self): - for article in Newsfeed(self.RSS_FEED, url2id).iter_entries(): + for article in Newsfeed(self.RSS_FEED, rssid).iter_entries(): thread = Thread(article.id) thread.title = article.title thread.date = article.datetime diff --git a/weboob/backends/minutes20/tools.py b/weboob/backends/minutes20/tools.py index 0cf9f34e..871da413 100644 --- a/weboob/backends/minutes20/tools.py +++ b/weboob/backends/minutes20/tools.py @@ -34,3 +34,6 @@ def url2id(url): regexp = re.compile("http://www.20minutes.fr/(\w+)/([0-9]+)/(.*$)") match = regexp.match(url) return '%s.%d.%s' % (match.group(1), int(match.group(2)), match.group(3)) + +def rssid(entry): + return url2id(entry.id) diff --git a/weboob/tools/newsfeed.py b/weboob/tools/newsfeed.py index 72fa874f..4f7a837e 100644 --- a/weboob/tools/newsfeed.py +++ b/weboob/tools/newsfeed.py @@ -23,11 +23,8 @@ __all__ = ['Entry', 'Newsfeed'] class Entry: - def __init__(self, entry, url2id=None): - if url2id: - self.id = url2id(entry.id) - else: - self.id = entry.id + def __init__(self, entry, rssid_func=None): + self.id = entry.id if entry.has_key("link"): self.link = entry["link"] @@ -63,16 +60,19 @@ class Entry: else: self.content = None + if rssid_func: + self.id = rssid_func(self) + class Newsfeed: - def __init__(self, url, url2id=None): + def __init__(self, url, rssid_func=None): self.feed = feedparser.parse(url) - self.url2id = url2id + self.rssid_func = rssid_func def iter_entries(self): for entry in self.feed['entries']: - yield Entry(entry, self.url2id) + yield Entry(entry, self.rssid_func) def get_entry(self, id): for entry in self.feed['entries']: if entry.id == id: - return Entry(entry, self.url2id) + return Entry(entry, self.rssid_func)