Store only last 20 articles for ecrans backend

This commit is contained in:
Florent 2012-03-05 13:44:44 +01:00 committed by Romain Bignon
commit 03c775efa1
2 changed files with 37 additions and 4 deletions

View file

@ -18,11 +18,13 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
"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()