[dlfp] ICapMessagesReply.post_reply() implemented
This commit is contained in:
parent
c819276f4f
commit
76c4622dc3
5 changed files with 72 additions and 5 deletions
|
|
@ -20,12 +20,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
from weboob.backend import Backend
|
from weboob.backend import Backend
|
||||||
from weboob.capabilities.messages import ICapMessages, ICapMessagesReply, Message
|
from weboob.capabilities.messages import ICapMessages, ICapMessagesReply, Message
|
||||||
from weboob.capabilities.updatable import ICapUpdatable
|
|
||||||
|
|
||||||
from .feeds import ArticlesList
|
from .feeds import ArticlesList
|
||||||
from .browser import DLFP
|
from .browser import DLFP
|
||||||
|
|
||||||
class DLFPBackend(Backend, ICapMessages, ICapMessagesReply, ICapUpdatable):
|
class DLFPBackend(Backend, ICapMessages, ICapMessagesReply):
|
||||||
NAME = 'dlfp'
|
NAME = 'dlfp'
|
||||||
MAINTAINER = 'Romain Bignon'
|
MAINTAINER = 'Romain Bignon'
|
||||||
EMAIL = 'romain@peerfuse.org'
|
EMAIL = 'romain@peerfuse.org'
|
||||||
|
|
@ -104,3 +103,6 @@ class DLFPBackend(Backend, ICapMessages, ICapMessagesReply, ICapUpdatable):
|
||||||
'Score: %d' % comment.score)
|
'Score: %d' % comment.score)
|
||||||
self.storage.set(self.name, 'seen', what, seen)
|
self.storage.set(self.name, 'seen', what, seen)
|
||||||
self.storage.save(self.name)
|
self.storage.save(self.name)
|
||||||
|
|
||||||
|
def post_reply(self, thread_id, reply_id, message):
|
||||||
|
return self.browser.post(thread_id, reply_id, message)
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import urllib
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
|
||||||
from weboob.tools.browser import Browser
|
from weboob.tools.browser import Browser
|
||||||
from .pages.index import IndexPage, LoginPage
|
from .pages.index import IndexPage, LoginPage
|
||||||
from .pages.news import ContentPage
|
from .pages.news import ContentPage
|
||||||
from .tools import id2url
|
from .tools import id2url, id2threadid, id2contenttype
|
||||||
|
|
||||||
from weboob.tools.parser import StandardParser
|
from weboob.tools.parser import StandardParser
|
||||||
|
|
||||||
|
|
@ -57,6 +58,44 @@ class DLFP(Browser):
|
||||||
self.location(id2url(_id))
|
self.location(id2url(_id))
|
||||||
return self.page.get_article()
|
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):
|
def login(self):
|
||||||
self.location('/login.html', 'login=%s&passwd=%s&isauto=1' % (self.username, self.password))
|
self.location('/login.html', 'login=%s&passwd=%s&isauto=1' % (self.username, self.password))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,3 +42,21 @@ def id2url(_id):
|
||||||
if m:
|
if m:
|
||||||
return '/~%s/%d.html' % (m.group(1), int(m.group(2)))
|
return '/~%s/%d.html' % (m.group(1), int(m.group(2)))
|
||||||
return None
|
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
|
||||||
|
|
|
||||||
|
|
@ -98,5 +98,13 @@ class ICapMessages(ICap):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
class ICapMessagesReply(ICap):
|
class ICapMessagesReply(ICap):
|
||||||
def post_reply(self, to, message):
|
def post_reply(self, thread_id, reply_id, title, message):
|
||||||
|
"""
|
||||||
|
Post a reply.
|
||||||
|
|
||||||
|
@param thread_id ID of thread
|
||||||
|
@param reply_id message's id to reply
|
||||||
|
@param title title of message
|
||||||
|
@param message message to send
|
||||||
|
"""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ class Browser(mechanize.Browser):
|
||||||
|
|
||||||
def change_location(func):
|
def change_location(func):
|
||||||
def inner(self, *args, **kwargs):
|
def inner(self, *args, **kwargs):
|
||||||
if args and args[0][0] == '/' and (not self.request or self.request.host != self.DOMAIN):
|
if args and isinstance(args[0], (str,unicode)) and args[0][0] == '/' and (not self.request or self.request.host != self.DOMAIN):
|
||||||
args = ('%s://%s%s' % (self.PROTOCOL, self.DOMAIN, args[0]),) + args[1:]
|
args = ('%s://%s%s' % (self.PROTOCOL, self.DOMAIN, args[0]),) + args[1:]
|
||||||
print args
|
print args
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue