From 921409ebbc4ca301591dba6f20edd3bec66cd881 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 2 Mar 2013 11:01:47 +0100 Subject: [PATCH] support joint accounts --- modules/creditdunord/pages.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/modules/creditdunord/pages.py b/modules/creditdunord/pages.py index 2208c5f6..5a60b64e 100644 --- a/modules/creditdunord/pages.py +++ b/modules/creditdunord/pages.py @@ -35,10 +35,11 @@ class LoginPage(BasePage): pass class CDNBasePage(BasePage): - def get_from_js(self, pattern, end): + def get_from_js(self, pattern, end, is_list=False): """ find a pattern in any javascript text """ + value = None for script in self.document.xpath('//script'): txt = script.text if txt is None: @@ -48,8 +49,22 @@ class CDNBasePage(BasePage): if start < 0: continue - txt = txt[start+len(pattern):start+txt[start+len(pattern):].find(end)+len(pattern)] - return txt + while 1: + if value is None: + value = '' + else: + value += ',' + value += txt[start+len(pattern):start+txt[start+len(pattern):].find(end)+len(pattern)] + + if not is_list: + break + + txt = txt[start+len(pattern)+txt[start+len(pattern):].find(end):] + + start = txt.find(pattern) + if start < 0: + break + return value def get_execution(self): return self.get_from_js("name: 'execution', value: '", "'") @@ -66,7 +81,7 @@ class AccountsPage(CDNBasePage): def get_list(self): accounts = [] - txt = self.get_from_js('_data = new Array(', ');') + txt = self.get_from_js('_data = new Array(', ');', is_list=True) if txt is None: raise BrokenPageError('Unable to find accounts list in scripts')