diff --git a/modules/okc/backend.py b/modules/okc/backend.py index 0cd995db..a23a2e35 100644 --- a/modules/okc/backend.py +++ b/modules/okc/backend.py @@ -36,6 +36,7 @@ from weboob.tools.misc import local2utc from .browser import OkCBrowser from .optim.visibility import Visibility from .optim.queries_queue import QueriesQueue +from .optim.profiles_walker import ProfilesWalker __all__ = ['OkCBackend'] @@ -75,7 +76,8 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD DESCRIPTION = u'OkCupid dating website' CONFIG = BackendConfig(Value('username', label='Username'), ValueBackendPassword('password', label='Password')) - STORAGE = {'queries_queue': {'queue': []}, + STORAGE = {'profiles_walker': {'viewed': []}, + 'queries_queue': {'queue': []}, 'sluts': {}, #'notes': {}, } @@ -88,6 +90,7 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost, ICapD def init_optimizations(self): self.add_optimization('VISIBILITY', Visibility(self.weboob.scheduler, self.browser)) self.add_optimization('QUERIES_QUEUE', QueriesQueue(self.weboob.scheduler, self.storage, self.browser)) + self.add_optimization('PROFILE_WALKER', ProfilesWalker(self.weboob.scheduler, self.storage, self.browser)) def iter_events(self): all_events = {} diff --git a/modules/okc/browser.py b/modules/okc/browser.py index d049727f..fa9974c2 100644 --- a/modules/okc/browser.py +++ b/modules/okc/browser.py @@ -22,7 +22,7 @@ import urllib from weboob.tools.browser import BaseBrowser, BasePage from weboob.tools.ordereddict import OrderedDict -from .pages import LoginPage, ThreadPage, MessagesPage, PostMessagePage, ProfilePage, PhotosPage, VisitsPage +from .pages import LoginPage, ThreadPage, MessagesPage, PostMessagePage, ProfilePage, PhotosPage, VisitsPage, QuickMatchPage __all__ = ['OkCBrowser'] @@ -43,7 +43,8 @@ class OkCBrowser(BaseBrowser): ('http://%s/messages\?.*' % DOMAIN, MessagesPage), ('http://%s/profile/.*/photos' % DOMAIN, PhotosPage), ('http://%s/profile/[^/]*' % DOMAIN, ProfilePage), - ('http://%s/visitors' % DOMAIN, VisitsPage) + ('http://%s/visitors' % DOMAIN, VisitsPage), + ('http://%s/quickmatch' % DOMAIN, QuickMatchPage) )) logged_in = False @@ -182,21 +183,11 @@ class OkCBrowser(BaseBrowser): # else: # return True - #def search_profiles(self, **kwargs): - # if self.search_query is None: - # r = self.api_request('searchs', '[default]') - # self.search_query = r['result']['search']['query'] - - # params = {} - # for key, value in json.loads(self.search_query).iteritems(): - # if isinstance(value, dict): - # for k, v in value.iteritems(): - # params['%s%s' % (key, k.capitalize())] = v - # else: - # params[key] = value or '' - # r = self.api_request('searchs', 'advanced', '30,0', params) - # ids = [s['id'] for s in r['result']['search']] - # return set(ids) + @check_login + def search_profiles(self, **kwargs): + self.location(self.absurl('/quickmatch')) + user_id = self.page.get_id() + return set([user_id]) @check_login def get_profile(self, id): diff --git a/modules/okc/pages.py b/modules/okc/pages.py index 09b57f05..fc629703 100644 --- a/modules/okc/pages.py +++ b/modules/okc/pages.py @@ -204,4 +204,10 @@ class VisitsPage(BasePage): 'date': visitor_timestamp }) return visitors + +class QuickMatchPage(BasePage): + def get_id(self): + element = self.parser.select(self.document.getroot(), '//*[@id="sn"]', method='xpath')[0] + visitor_id = unicode(element.get('value')) + return visitor_id \ No newline at end of file