[okc] Photos handling in profile
This commit is contained in:
parent
72fd993b3c
commit
cba809a8d0
3 changed files with 26 additions and 12 deletions
|
|
@ -242,13 +242,13 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact):
|
||||||
data = self.browser.openurl(photo.thumbnail_url).read()
|
data = self.browser.openurl(photo.thumbnail_url).read()
|
||||||
contact.set_photo(name, thumbnail_data=data)
|
contact.set_photo(name, thumbnail_data=data)
|
||||||
|
|
||||||
#def fill_photo(self, photo, fields):
|
def fill_photo(self, photo, fields):
|
||||||
# with self.browser:
|
with self.browser:
|
||||||
# if 'data' in fields and photo.url and not photo.data:
|
if 'data' in fields and photo.url and not photo.data:
|
||||||
# photo.data = self.browser.readurl(photo.url)
|
photo.data = self.browser.readurl(photo.url)
|
||||||
# if 'thumbnail_data' in fields and photo.thumbnail_url and not photo.thumbnail_data:
|
if 'thumbnail_data' in fields and photo.thumbnail_url and not photo.thumbnail_data:
|
||||||
# photo.thumbnail_data = self.browser.readurl(photo.thumbnail_url)
|
photo.thumbnail_data = self.browser.readurl(photo.thumbnail_url)
|
||||||
# return photo
|
return photo
|
||||||
|
|
||||||
def get_contact(self, contact):
|
def get_contact(self, contact):
|
||||||
with self.browser:
|
with self.browser:
|
||||||
|
|
@ -280,6 +280,8 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact):
|
||||||
contact.status = Contact.STATUS_OFFLINE
|
contact.status = Contact.STATUS_OFFLINE
|
||||||
contact.status_msg = contact.profile['details']['last_online'].value
|
contact.status_msg = contact.profile['details']['last_online'].value
|
||||||
|
|
||||||
|
for no, photo in enumerate(self.browser.get_photos(_id)):
|
||||||
|
contact.set_photo('image_%i' % no, url=photo, thumbnail_url=photo)
|
||||||
return contact
|
return contact
|
||||||
|
|
||||||
#def _get_partial_contact(self, contact):
|
#def _get_partial_contact(self, contact):
|
||||||
|
|
@ -355,5 +357,5 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact):
|
||||||
|
|
||||||
OBJECTS = {Thread: fill_thread,
|
OBJECTS = {Thread: fill_thread,
|
||||||
Contact: fill_contact,
|
Contact: fill_contact,
|
||||||
#ContactPhoto: fill_photo
|
ContactPhoto: fill_photo
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ except ImportError:
|
||||||
from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword, BrowserUnavailable
|
from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword, BrowserUnavailable
|
||||||
from weboob.tools.ordereddict import OrderedDict
|
from weboob.tools.ordereddict import OrderedDict
|
||||||
|
|
||||||
from .pages import LoginPage, ThreadPage, MessagesPage, ProfilePage
|
from .pages import LoginPage, ThreadPage, MessagesPage, ProfilePage, PhotosPage
|
||||||
|
|
||||||
__all__ = ['OkCBrowser']
|
__all__ = ['OkCBrowser']
|
||||||
|
|
||||||
|
|
@ -48,7 +48,8 @@ class OkCBrowser(BaseBrowser):
|
||||||
('https://%s/login.*' % DOMAIN, LoginPage),
|
('https://%s/login.*' % DOMAIN, LoginPage),
|
||||||
('http://%s/messages' % DOMAIN, ThreadPage),
|
('http://%s/messages' % DOMAIN, ThreadPage),
|
||||||
('http://%s/messages\?.*' % DOMAIN, MessagesPage),
|
('http://%s/messages\?.*' % DOMAIN, MessagesPage),
|
||||||
('http://%s/profile/.*' % DOMAIN, ProfilePage),
|
('http://%s/profile/.*/photos' % DOMAIN, PhotosPage),
|
||||||
|
('http://%s/profile/[^/]*' % DOMAIN, ProfilePage),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -200,9 +201,15 @@ class OkCBrowser(BaseBrowser):
|
||||||
# return set(ids)
|
# return set(ids)
|
||||||
|
|
||||||
@check_login
|
@check_login
|
||||||
def get_profile(self, id, with_pics=True):
|
def get_profile(self, id):
|
||||||
self.location(self.absurl('/profile/%s' % id))
|
self.location(self.absurl('/profile/%s' % id))
|
||||||
return self.page.get_profile()
|
profile = self.page.get_profile()
|
||||||
|
return profile
|
||||||
|
|
||||||
|
@check_login
|
||||||
|
def get_photos(self, id):
|
||||||
|
self.location(self.absurl('/profile/%s/photos' % id))
|
||||||
|
return self.page.get_photos()
|
||||||
|
|
||||||
#def _get_chat_infos(self):
|
#def _get_chat_infos(self):
|
||||||
# try:
|
# try:
|
||||||
|
|
|
||||||
|
|
@ -129,3 +129,8 @@ class ProfilePage(BasePage):
|
||||||
profile['data']['details'].value[key] = ProfileNode(key, label, val)
|
profile['data']['details'].value[key] = ProfileNode(key, label, val)
|
||||||
|
|
||||||
return profile
|
return profile
|
||||||
|
|
||||||
|
class PhotosPage(BasePage):
|
||||||
|
def get_photos(self):
|
||||||
|
imgs = self.parser.select(self.document.getroot(), "//div[@class='pic clearfix']//img", method='xpath')
|
||||||
|
return [img.get('src') for img in imgs]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue