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

@ -16,16 +16,11 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"backend for http://20minutes.fr"
# 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 Newspaper20minutesBrowser
from .GenericBackend import GenericNewspaperBackend
class Newspaper20minutesBackend(BaseBackend, ICapMessages):
class Newspaper20minutesBackend(GenericNewspaperBackend, ICapMessages):
"Newspaper20minutesBackend class"
MAINTAINER = 'Julien Hebert'
EMAIL = 'juke@free.fr'
@ -37,66 +32,3 @@ class Newspaper20minutesBackend(BaseBackend, ICapMessages):
BROWSER = Newspaper20minutesBrowser
RSS_FEED = 'http://www.20minutes.fr/rss/20minutes.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()