From 6e3e93e08b6ecbe621c2115a06ae6f4837e4c2ba Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Thu, 8 Apr 2010 22:34:57 +0200 Subject: [PATCH] use storage to store dlfp messages state --- weboob/backend.py | 2 +- weboob/backends/dlfp/backend.py | 36 +++++++++++++++++------------- weboob/backends/dlfp/pages/news.py | 1 + weboob/tools/storage.py | 4 ++-- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/weboob/backend.py b/weboob/backend.py index 9af7e8b6cb..4372a4e17c 100644 --- a/weboob/backend.py +++ b/weboob/backend.py @@ -71,7 +71,7 @@ def __init__(self, weboob, name, config, storage): self.config[name] = value self.storage = storage if self.storage: - self.storage.load(self.name, self.CONFIG) + self.storage.load(self.name, self.STORAGE) def has_caps(self, *caps): for c in caps: diff --git a/weboob/backends/dlfp/backend.py b/weboob/backends/dlfp/backend.py index 40a19f8e2c..7b80a994d8 100644 --- a/weboob/backends/dlfp/backend.py +++ b/weboob/backends/dlfp/backend.py @@ -38,6 +38,7 @@ class DLFPBackend(Backend, ICapMessages, ICapMessagesReply, ICapUpdatable): 'get_news': Backend.ConfigField(default=True, description='Get newspapers'), 'get_telegrams': Backend.ConfigField(default=False, description='Get telegrams'), } + STORAGE = {'seen': {'contents': [], 'comments': []}} browser = None def need_browser(func): @@ -60,22 +61,27 @@ def iter_messages(self): def _iter_messages(self, what): for article in ArticlesList(what).iter_articles(): thread = self.browser.get_content(article.id) - yield Message(thread.id, - 0, - thread.title, - thread.author, - article.datetime, - content=''.join([thread.body, thread.part2]), - signature='URL: %s' % article.url) - for comment in thread.iter_all_comments(): + if not thread.id in self.storage.get(self.name, 'seen', 'contents'): + self.storage.get(self.name, 'seen', 'contents').append(thread.id) yield Message(thread.id, - comment.id, - comment.title, - comment.author, - comment.date, - comment.reply_id, - comment.body, - 'Score: %d' % comment.score) + 0, + thread.title, + thread.author, + article.datetime, + content=''.join([thread.body, thread.part2]), + signature='URL: %s' % article.url) + for comment in thread.iter_all_comments(): + if not comment.id in self.storage.get(self.name, 'seen', 'comments'): + self.storage.get(self.name, 'seen', 'comments').append(comment.id) + yield Message(thread.id, + comment.id, + comment.title, + comment.author, + comment.date, + comment.reply_id, + comment.body, + 'Score: %d' % comment.score) + self.storage.save(self.name) def iter_new_messages(self): return self.iter_messages() diff --git a/weboob/backends/dlfp/pages/news.py b/weboob/backends/dlfp/pages/news.py index 678d47fcb4..d36693ffb2 100644 --- a/weboob/backends/dlfp/pages/news.py +++ b/weboob/backends/dlfp/pages/news.py @@ -79,6 +79,7 @@ def __init__(self, _id, tree): for a in div.find('h1').getiterator('a'): if a.text: self.title += a.text if a.tail: self.title += a.tail + self.title = self.title.strip() subdivs = div.findall('a') if len(subdivs) > 1: date_s = unicode(subdivs[1].text) diff --git a/weboob/tools/storage.py b/weboob/tools/storage.py index 35f50faf3f..533acad631 100644 --- a/weboob/tools/storage.py +++ b/weboob/tools/storage.py @@ -48,11 +48,11 @@ def load(self, backend, default={}): self.config.values[backend] = default.copy() self.config.values[backend].update(d) - def save(self): + def save(self, backend): self.config.save() def set(self, backend, *args): - self.config.set(backend, self.backends[backend]) + self.config.set(backend, *args) def get(self, backend, *args, **kwargs): return self.config.get(backend, *args, **kwargs) -- GitLab