diff --git a/modules/ecrans/backend.py b/modules/ecrans/backend.py index abd1732a..f2eb29ac 100644 --- a/modules/ecrans/backend.py +++ b/modules/ecrans/backend.py @@ -18,11 +18,13 @@ # along with weboob. If not, see . "backend for http://www.ecrans.fr" -from weboob.capabilities.messages import ICapMessages +import time + +from weboob.capabilities.messages import ICapMessages, Thread from weboob.tools.capabilities.messages.GenericBackend import GenericNewspaperBackend from .browser import NewspaperEcransBrowser -from .tools import rssid - +from .tools import rssid, url2id +from weboob.tools.newsfeed import Newsfeed class NewspaperEcransBackend(GenericNewspaperBackend, ICapMessages): MAINTAINER = 'Julien Hebert' @@ -36,4 +38,30 @@ class NewspaperEcransBackend(GenericNewspaperBackend, ICapMessages): RSS_FEED = 'http://www.ecrans.fr/spip.php?page=backend' RSSID = rssid + def set_message_read(self, message): + self.storage.set( + 'seen', + message.thread.id, + 'comments', + self.storage.get( + 'seen', + message.thread.id, + 'comments', + default=[]) + [message.id]) + + lastpurge = self.storage.get('lastpurge', default=0) + l = [] + if time.time() - lastpurge > 7200: + self.storage.set('lastpurge', time.time()) + # Get lasts 20 articles + for id in self.storage.get('seen', default={}): + l.append((int(url2id(id)), id)) + l.sort() + l.reverse() + tosave = [v[1] for v in l[0:19]] + toremove = set([v for v in self.storage.get('seen', default={})]).difference(tosave) + for id in toremove: + self.storage.delete('seen', id) + + self.storage.save() diff --git a/modules/ecrans/tools.py b/modules/ecrans/tools.py index d09d120c..d5621d4d 100644 --- a/modules/ecrans/tools.py +++ b/modules/ecrans/tools.py @@ -33,7 +33,12 @@ def id2url(_id): def url2id(url): "return an id from an url" - return url + regexp = re.compile("(^.*),([0-9]+)\.html$") + match = regexp.match(url) + if match: + return match.group(2) + else: + raise ValueError("Can't find an id for the url") def rssid(entry): return url2id(entry.id)