can use okc with monboob

This commit is contained in:
Romain Bignon 2014-05-17 19:05:58 +02:00
commit db2494d3ad
3 changed files with 38 additions and 54 deletions

View file

@ -157,7 +157,7 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD
child = None child = None
msg = None msg = None
slut = self._get_slut(mails['member']['pseudo']) slut = self._get_slut(thread.id)
if contacts is None: if contacts is None:
contacts = {} contacts = {}
@ -166,7 +166,7 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD
for mail in mails['messages']: for mail in mails['messages']:
flags = Message.IS_HTML flags = Message.IS_HTML
if parse_dt(mail['date']) > slut['lastmsg'] and mail['id_from'] != self.browser.get_my_name(): if parse_dt(mail['date']) > slut['lastmsg']:
flags |= Message.IS_UNREAD flags |= Message.IS_UNREAD
if get_profiles: if get_profiles:
@ -187,7 +187,7 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD
receivers=[my_name if mail['id_from'] != my_name else mails['member']['pseudo']], receivers=[my_name if mail['id_from'] != my_name else mails['member']['pseudo']],
date=parse_dt(mail['date']), date=parse_dt(mail['date']),
content=unescape(mail['message']).strip(), content=unescape(mail['message']).strip(),
signature=signature, signature='<pre>%s</pre>' % signature,
children=[], children=[],
flags=flags) flags=flags)
if child: if child:
@ -203,39 +203,19 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD
return thread return thread
#def iter_unread_messages(self, thread=None): def iter_unread_messages(self, thread=None):
# try: contacts = {}
# contacts = {} for thread in self.browser.get_threads_list():
# with self.browser: t = self.get_thread(thread['username'], contacts, get_profiles=True)
# threads = self.browser.get_threads_list() for m in t.iter_all_messages():
# for thread in threads: if m.flags & m.IS_UNREAD:
# if thread['member'].get('isBan', thread['member'].get('dead', False)): yield m
# with self.browser:
# self.browser.delete_thread(int(thread['member']['id']))
# continue
# if self.antispam and not self.antispam.check_thread(thread):
# self.logger.info('Skipped a spam-unread-thread from %s' % thread['member']['pseudo'])
# self.report_spam(thread['member']['pseudo'])
# continue
# slut = self._get_slut(thread['member']['pseudo'])
# if parse_dt(thread['date']) > slut['lastmsg']:
# t = self.get_thread(thread['member']['pseudo'], contacts, get_profiles=True)
# for m in t.iter_all_messages():
# if m.flags & m.IS_UNREAD:
# yield m
# except BrowserUnavailable as e:
# self.logger.debug('No messages, browser is unavailable: %s' % e)
# pass # don't care about waiting
def set_message_read(self, message): def set_message_read(self, message):
if message.sender == self.browser.get_my_name(): slut = self._get_slut(message.thread.id)
return
slut = self._get_slut(message.sender)
if slut['lastmsg'] < message.date: if slut['lastmsg'] < message.date:
slut['lastmsg'] = message.date slut['lastmsg'] = message.date
self.storage.set('sluts', message.sender, slut) self.storage.set('sluts', message.thread.id, slut)
self.storage.save() self.storage.save()
def _get_slut(self, id): def _get_slut(self, id):
@ -357,25 +337,25 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD
yield c yield c
def send_query(self, id): def send_query(self, id):
if isinstance(id, Contact): if isinstance(id, Contact):
id = id.id id = id.id
queries_queue = None queries_queue = None
try: try:
queries_queue = self.get_optimization('QUERIES_QUEUE') queries_queue = self.get_optimization('QUERIES_QUEUE')
except OptimizationNotFound: except OptimizationNotFound:
pass pass
if queries_queue and queries_queue.is_running(): if queries_queue and queries_queue.is_running():
if queries_queue.enqueue_query(id): if queries_queue.enqueue_query(id):
return Query(id, 'A profile was visited') return Query(id, 'A profile was visited')
else: else:
return Query(id, 'Unable to visit profile: it has been enqueued') return Query(id, 'Unable to visit profile: it has been enqueued')
else: else:
with self.browser: with self.browser:
if not self.browser.visit_profile(id): if not self.browser.visit_profile(id):
raise QueryError('Could not visit profile') raise QueryError('Could not visit profile')
return Query(id, 'Profile was visited') return Query(id, 'Profile was visited')
#def get_notes(self, id): #def get_notes(self, id):
# if isinstance(id, Contact): # if isinstance(id, Contact):

View file

@ -40,7 +40,7 @@ class ProfilesWalker(Optimization):
self.browser = browser self.browser = browser
self.logger = getLogger('walker', browser.logger) self.logger = getLogger('walker', browser.logger)
self.config = storage.get('priority_connection', 'config', default=None) self.config = storage.get('profile_walker', 'config', default=None)
if self.config == {}: if self.config == {}:
self.config = None self.config = None
@ -70,7 +70,7 @@ class ProfilesWalker(Optimization):
def set_config(self, params): def set_config(self, params):
self.config = params self.config = params
self.storage.set('priority_connection', 'config', self.config) self.storage.set('profile_walker', 'config', self.config)
self.storage.save() self.storage.save()
def get_config(self): def get_config(self):

View file

@ -43,6 +43,7 @@ class ThreadPage(BasePage):
threads.append({ threads.append({
u'username' : unicode(elem.getchildren()[0].get('href').split('/')[-1].split('?')[0]), u'username' : unicode(elem.getchildren()[0].get('href').split('/')[-1].split('?')[0]),
u'id' : unicode(elem.get('id', '').split('_')[1]), u'id' : unicode(elem.get('id', '').split('_')[1]),
u'date' : unicode(elem.find('.//p[@class="date"]').text)
}) })
return threads return threads
@ -57,7 +58,10 @@ class MessagesPage(BasePage):
'messages' : [], 'messages' : [],
} }
mails['member']['pseudo'] = self.document.xpath('//li[starts-with(@id, "usr_")]')[0].attrib['id'].split('_', 1)[-1] try:
mails['member']['pseudo'] = self.document.xpath('//li[starts-with(@id, "usr_")]')[0].attrib['id'].split('_', 1)[-1]
except IndexError:
mails['member']['pseudo'] = 'Unknown'
for li_msg in reversed(ul_item.getchildren()): for li_msg in reversed(ul_item.getchildren()):
div = li_msg.getchildren()[1] div = li_msg.getchildren()[1]