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/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
"backend for http://www.ecrans.fr" "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 weboob.tools.capabilities.messages.GenericBackend import GenericNewspaperBackend
from .browser import NewspaperEcransBrowser from .browser import NewspaperEcransBrowser
from .tools import rssid from .tools import rssid, url2id
from weboob.tools.newsfeed import Newsfeed
class NewspaperEcransBackend(GenericNewspaperBackend, ICapMessages): class NewspaperEcransBackend(GenericNewspaperBackend, ICapMessages):
MAINTAINER = 'Julien Hebert' MAINTAINER = 'Julien Hebert'
@ -36,4 +38,30 @@ class NewspaperEcransBackend(GenericNewspaperBackend, ICapMessages):
RSS_FEED = 'http://www.ecrans.fr/spip.php?page=backend' RSS_FEED = 'http://www.ecrans.fr/spip.php?page=backend'
RSSID = rssid 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()

View file

@ -33,7 +33,12 @@ def id2url(_id):
def url2id(url): def url2id(url):
"return an id from an 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): def rssid(entry):
return url2id(entry.id) return url2id(entry.id)