iter events (baskets, charms and visits)

This commit is contained in:
Romain Bignon 2011-10-19 18:55:24 +02:00
commit 05a5ca0fe1
3 changed files with 140 additions and 30 deletions

View file

@ -338,7 +338,7 @@ Return value:
u'news': {u'newBaskets': 0, u'newMails': 1, u'newVisits': 113},
u'token': u'9a97a03774c9f440e676c78f48794a7221a67285'}}
me.baskets
me.basket
----------
Return value:
@ -369,6 +369,77 @@ Return value:
u'inBasket': 57,
u'token': u'ea7bac8837f6e5bb1e2a3267d6a08b32e388d593'}}
me.flashs
---------
Return value:
{u'errors': [],
u'result': {u'all': [{u'date': u'2011-10-19 10:50:43',
u'fid': u'41311269',
u'id': u'12656592',
u'member': {u'alert': u'1',
u'birthday': u'1986-08-08',
u'city': u'Armes',
u'country': u'fr',
u'cover': u'3',
u'id': u'12656592',
u'isBan': False,
u'isOnline': False,
u'last_cnx': u'2011-10-19 17:28:00',
u'list5': u'0',
u'login': u'@12656592',
u'mod_level': u'0',
u'path': u'2/9/5/6/5/6/2/',
u'pseudo': u'Yayanne',
u'region': u'5',
u'sex': 1,
u'shard': 2,
u'style': u'0',
u'table': u'adopteun.girls',
u'url': u'/api.php?member/view/12656592/Yayanne',
u'zip': u'58500'},
u'seen': u'2011-10-19 10:54:09'}],
u'count': 1467,
u'news': [],
u'olds': [],
u'popu': u'110350',
u'token': u'3af90dd563431fe6b4c65930d18337c997fac34e'}}
me.visits
---------
Return value:
{u'errors': [],
u'result': {u'count': u'607',
u'news': [],
u'offset': 0,
u'olds': [{u'alert': u'0',
u'birthday': u'1985-01-29',
u'city': u'Albi',
u'country': u'fr',
u'cover': u'11',
u'date': u'2011-10-19 17:40:43',
u'id': u'13461054',
u'isBan': False,
u'isOnline': True,
u'last_cnx': u'2011-10-19 17:47:25',
u'list5': u'0',
u'login': u'@13461054',
u'mod_level': u'0',
u'path': u'4/5/0/1/6/4/3/',
u'pseudo': u'Bruume',
u'region': u'15',
u'seen': u'2011-10-19 17:42:55',
u'sex': 1,
u'shard': 4,
u'style': u'0',
u'table': u'adopteun.girls',
u'url': u'/api.php?member/view/13461054/Bruume',
u'vid': u'199226074',
u'zip': u'81000'}],
u'popu': u'110350',
u'token': u'd7380871794008c94971acec82b7b679dd800307'}}
MESSAGE Commands
================

View file

@ -30,7 +30,7 @@ from dateutil.parser import parse as _parse_dt
from weboob.capabilities.base import NotLoaded
from weboob.capabilities.chat import ICapChat
from weboob.capabilities.messages import ICapMessages, ICapMessagesPost, Message, Thread
from weboob.capabilities.dating import ICapDating, OptimizationNotFound
from weboob.capabilities.dating import ICapDating, OptimizationNotFound, Event
from weboob.capabilities.contact import ICapContact, ContactPhoto, Query, QueryError
from weboob.capabilities.account import ICapAccount, StatusField
from weboob.tools.backend import BaseBackend, BackendConfig
@ -97,6 +97,32 @@ class AuMBackend(BaseBackend, ICapMessages, ICapMessagesPost, ICapDating, ICapCh
self.add_optimization('VISIBILITY', Visibility(self.weboob.scheduler, self.browser))
self.add_optimization('QUERIES_QUEUE', QueriesQueue(self.weboob.scheduler, self.storage, self.browser))
def iter_events(self):
all_events = {}
with self.browser:
all_events['baskets'] = (self.browser.get_baskets, 'You are taken in the %s basket')
all_events['flashs'] = (self.browser.get_flashs, 'You sent a charm to %s')
all_events['visits'] = (self.browser.get_visits, 'Visited by %s')
for type, (events, message) in all_events.iteritems():
for event in events():
try:
e = Event(event['%sid' % type[0]])
except KeyError:
e = Event(event['id'])
e.date = parse_dt(event['date'])
e.type = type
if 'member' in event:
e.contact = self._get_partial_contact(event['member'])
else:
e.contact = self._get_partial_contact(event)
if not e.contact:
continue
e.message = message % e.contact.name
yield e
# ---- ICapMessages methods ---------------------
def fill_thread(self, thread, fields):
@ -350,38 +376,41 @@ class AuMBackend(BaseBackend, ICapMessages, ICapMessagesPost, ICapDating, ICapCh
contact.parse_profile(profile, self.browser.get_consts())
return contact
def _get_partial_contact(self, contact):
if contact.get('isBan', True):
with self.browser:
self.browser.delete_thread(int(contact['id']))
return None
s = 0
if contact['isOnline']:
s = Contact.STATUS_ONLINE
else:
s = Contact.STATUS_OFFLINE
c = Contact(contact['id'], contact['pseudo'], s)
c.url = self.browser.id2url(contact['id'])
birthday = _parse_dt(contact['birthday'])
age = int((datetime.datetime.now() - birthday).days / 365.25)
c.status_msg = u'%s old' % age
if int(contact['cover']) > 0:
url = 'http://s%s.adopteunmec.com/%s%%(type)s%s.jpg' % (contact['shard'], contact['path'], contact['cover'])
else:
url = 'http://s.adopteunmec.com/www/img/thumb0.gif'
c.set_photo('image%s' % contact['cover'],
url=url % {'type': 'image'},
thumbnail_url=url % {'type': 'thumb0_'})
return c
def iter_contacts(self, status=Contact.STATUS_ALL, ids=None):
with self.browser:
threads = self.browser.get_threads_list(count=100)
for thread in threads:
contact = thread['member']
if contact.get('isBan', True):
with self.browser:
self.browser.delete_thread(int(contact['id']))
continue
s = 0
if contact['isOnline']:
s = Contact.STATUS_ONLINE
else:
s = Contact.STATUS_OFFLINE
if not status & s or (ids and not contact['id'] in ids):
continue
c = Contact(contact['id'], contact['pseudo'], s)
c.url = self.browser.id2url(contact['id'])
birthday = _parse_dt(contact['birthday'])
age = int((datetime.datetime.now() - birthday).days / 365.25)
c.status_msg = u'%s old' % age
if int(contact['cover']) > 0:
url = 'http://s%s.adopteunmec.com/%s%%(type)s%s.jpg' % (contact['shard'], contact['path'], contact['cover'])
else:
url = 'http://s.adopteunmec.com/www/img/thumb0.gif'
c.set_photo('image%s' % contact['cover'],
url=url % {'type': 'image'},
thumbnail_url=url % {'type': 'thumb0_'})
yield c
c = self._get_partial_contact(thread['member'])
if c and (c.status & status) and (not ids or c.id in ids):
yield c
def send_query(self, id):
if isinstance(id, Contact):

View file

@ -216,6 +216,16 @@ class AuMBrowser(BaseBrowser):
r = self.api_request('me', 'basket')
return r['result']['basket']
@check_login
def get_flashs(self):
r = self.api_request('me', 'flashs')
return r['result']['all']
@check_login
def get_visits(self):
r = self.api_request('me', 'visits')
return r['result']['news'] + r['result']['olds']
@check_login
def get_threads_list(self, count=30):
r = self.api_request('message', '[default]', '%d,0' % count)