create a genericBackend

This commit is contained in:
Juke 2011-02-22 01:50:13 +01:00
commit c74734545b
6 changed files with 300 additions and 206 deletions

View file

@ -19,13 +19,11 @@
# python2.5 compatibility
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 weboob.capabilities.messages import ICapMessages
from .browser import NewspaperFigaroBrowser
from .GenericBackend import GenericNewspaperBackend
class NewspaperFigaroBackend(BaseBackend, ICapMessages):
class NewspaperFigaroBackend(GenericNewspaperBackend, ICapMessages):
"NewspaperFigaroBackend class"
MAINTAINER = 'Julien Hebert'
EMAIL = 'juke@free.fr'
@ -37,66 +35,4 @@ class NewspaperFigaroBackend(BaseBackend, ICapMessages):
BROWSER = NewspaperFigaroBrowser
RSS_FEED = 'http://rss.lefigaro.fr/lefigaro/laune?format=xml'
def get_thread(self, _id):
if isinstance(_id, Thread):
thread = _id
_id = thread.id
else:
thread = None
with self.browser:
content = self.browser.get_content(_id)
if not thread:
thread = Thread(_id)
flags = Message.IS_HTML
if not thread.id in self.storage.get('seen', default={}):
flags |= Message.IS_UNREAD
thread.title = content.title
if not thread.date:
thread.date = content.date
thread.root = Message(
thread=thread,
id=0,
title=content.title,
sender=content.author,
receivers=None,
date=thread.date,
parent=None,
content=content.body,
signature='URL: %s' % content.url,
flags=flags,
children= [])
return thread
def iter_threads(self):
for article in Newsfeed(self.RSS_FEED, url2id).iter_entries():
thread = Thread(article.id)
thread.title = article.title
thread.date = article.datetime
yield(thread)
def fill_thread(self, thread):
"fill the thread"
return self.get_thread(thread)
def iter_unread_messages(self, thread=None):
for thread in self.iter_threads():
self.fill_thread(thread)
for msg in thread.iter_all_messages():
if msg.flags & msg.IS_UNREAD:
yield msg
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])
self.storage.save()