support board

This commit is contained in:
Romain Bignon 2011-03-07 17:36:53 +01:00
commit e5b2c1d7e5
2 changed files with 56 additions and 0 deletions

View file

@ -23,6 +23,7 @@ from weboob.capabilities.messages import CantSendMessage
from .pages.index import IndexPage, LoginPage
from .pages.news import ContentPage, NewCommentPage, NodePage, CommentPage
from .pages.board import BoardIndexPage
from .tools import id2url, url2id
# Browser
@ -36,8 +37,11 @@ class DLFP(BaseBrowser):
'https://linuxfr.org/nodes/(\d+)/comments/(\d+)$': CommentPage,
'https://linuxfr.org/nodes/(\d+)/comments/nouveau': NewCommentPage,
'https://linuxfr.org/nodes/(\d+)/comments$': NodePage,
'https://linuxfr.org/board/index.xml': BoardIndexPage,
}
last_board_msg_id = None
def home(self):
return self.location('https://linuxfr.org')
@ -134,3 +138,13 @@ class DLFP(BaseBrowser):
urllib.urlencode({'authenticity_token': comment.relevance_token}))
return res
def iter_new_board_messages(self):
self.location('/board/index.xml')
assert self.is_on_page(BoardIndexPage)
msgs = self.page.get_messages(self.last_board_msg_id)
if len(msgs) > 0:
self.last_board_msg_id = msgs[0].id
return reversed(msgs)

View file

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
# Copyright(C) 2010-2011 Romain Bignon
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
from weboob.tools.parsers.lxmlparser import select, SelectElementException
from weboob.tools.browser import BasePage
class Message(object):
def __init__(self, id, timestamp, login, message):
self.id = id
self.timestamp = timestamp
self.login = login
self.message = message
class BoardIndexPage(BasePage):
def is_logged(self):
return True
def get_messages(self, last=None):
msgs = []
for post in select(self.document.getroot(), 'post'):
m = Message(int(post.attrib['id']),
post.attrib['time'],
post.find('login').text,
post.find('message').text)
if last is not None and last == m.id:
break
msgs.append(m)
return msgs