[dlfp] ICapMessagesReply.post_reply() implemented

This commit is contained in:
Romain Bignon 2010-04-10 17:14:59 +02:00
commit 76c4622dc3
5 changed files with 72 additions and 5 deletions

View file

@ -20,12 +20,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
from weboob.backend import Backend
from weboob.capabilities.messages import ICapMessages, ICapMessagesReply, Message
from weboob.capabilities.updatable import ICapUpdatable
from .feeds import ArticlesList
from .browser import DLFP
class DLFPBackend(Backend, ICapMessages, ICapMessagesReply, ICapUpdatable):
class DLFPBackend(Backend, ICapMessages, ICapMessagesReply):
NAME = 'dlfp'
MAINTAINER = 'Romain Bignon'
EMAIL = 'romain@peerfuse.org'
@ -104,3 +103,6 @@ class DLFPBackend(Backend, ICapMessages, ICapMessagesReply, ICapUpdatable):
'Score: %d' % comment.score)
self.storage.set(self.name, 'seen', what, seen)
self.storage.save(self.name)
def post_reply(self, thread_id, reply_id, message):
return self.browser.post(thread_id, reply_id, message)

View file

@ -18,12 +18,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""
import urllib
from cStringIO import StringIO
from weboob.tools.browser import Browser
from .pages.index import IndexPage, LoginPage
from .pages.news import ContentPage
from .tools import id2url
from .tools import id2url, id2threadid, id2contenttype
from weboob.tools.parser import StandardParser
@ -57,6 +58,44 @@ class DLFP(Browser):
self.location(id2url(_id))
return self.page.get_article()
def post_reply(self, thread, reply_id, title, message):
content_type = id2contenttype(thread)
thread_id = id2threadid(thread)
reply_id = int(reply_id)
if not content_type or not thread_id:
return False
# Define every data fields
d = {'news_id': thread_id,
'com_parent': reply_id,
'timestamp': '',
'res_type': content_type,
'referer': '%s://%s%s' % (self.PROTOCOL, self.DOMAIN, id2url(thread)),
'subject': title,
'body': message,
'format': 3,
'submit': 'Envoyer',
}
data = ''
for key, value in d.iteritems():
if data:
data += '&'
data += key
data += '='
if isinstance(value, unicode):
value = value.encode('utf-8')
else:
value = str(value)
data += urllib.quote_plus(value)
url = '%s://%s/submit/comments,%d,%d,%d.html#post' % (self.PROTOCOL, self.DOMAIN, thread_id, reply_id, content_type)
request = self.request_class(url, data, {'Referer': url})
result = self.openurl(request).read()
return result.find('<div class="commentsreplythanks">') >= 0
def login(self):
self.location('/login.html', 'login=%s&passwd=%s&isauto=1' % (self.username, self.password))

View file

@ -42,3 +42,21 @@ def id2url(_id):
if m:
return '/~%s/%d.html' % (m.group(1), int(m.group(2)))
return None
def id2threadid(_id):
m = URL2ID_NEWSPAPER.match(_id)
if m:
return int(m.group(4))
m = URL2ID_TELEGRAM.match(_id)
if m:
return int(m.group(2))
return None
def id2contenttype(_id):
if not _id:
return None
if _id[0] == 'N':
return 1
if _id[0] == 'T':
return 5
return None