def Get_workshops_url(self, storeUrl): page = GeniusbarPage(storeUrl) data = page.get_data() Writefile('debug/workshops.html', data) attrs = {'class': "nav hero-nav selfclear"} page_soup = page.get_soup() navtag = page_soup.find('nav', attrs=attrs) hrefs = navtag.findAll('a') url = None for href in hrefs: target = href.find('img', {'alt': 'Workshops'}) if target: url = href.get('href') break return url
def waitingCmd(self, page, taskStatus): ''' waiting the input ''' runtime = 300 # waiting time storeUrl = taskStatus['storeUrl'] debug.debug(storeUrl) while runtime > 0: taskCmd = taskStatus['taskCmd'] if taskCmd == 'refresh': debug.debug('refresh cmd %s' % taskStatus['appleId']) verifycodedata, tSt = page.get_verification_code_pic() taskStatus['verifyCodeData'] = verifycodedata taskStatus['taskCmd'] = None time.sleep(1) continue if taskCmd == 'submit': debug.debug('get submit cmd %s' % taskStatus['appleId']) postData = page.build_submit_post_data() postData['captchaAnswer'] = taskStatus['captchaAnswer'] postData['phoneNumber'] = taskStatus['phoneNumber'] postData['smsCode'] = taskStatus['smsCode'] postData['clientTimezone'] = taskStatus['clientTimezone'] # 'Asia/Shanghai' submitUrl = self.challengeUrlFormat % GeniusbarPage.storeNumber headers = page.headers headers['Referer'] = submitUrl headers.pop('Accept-Encoding') submitpage = GeniusbarPage(submitUrl, data=urllib.urlencode(postData), headers=headers) data = submitpage.get_data() resultfile = 'tmp/%s.htm' % taskStatus['appleId'] Writefile(resultfile, data) attrs = {"class": "error-message on", "id": "error_message_generalError"} errorMsg = submitpage.get_tag_text('label', attrs=attrs) if errorMsg: taskStatus['cmdStatus'] = 'NOK' taskStatus['taskCmd'] = None taskStatus['prompInfo'] = errorMsg page = submitpage debug.error(errorMsg) Writefile('tmp/submiterr.html', page.get_data()) continue else: # success for submit # get the time slots ret, maxrow = self.buildTimeSlotsTable(submitpage) taskStatus['cmdStatus'] = 'OK' taskStatus['timeSlots'] = (ret, maxrow) taskStatus['taskCmd'] = None page = submitpage continue if taskCmd == 'timeslot': # post timeslots debug.debug('get timeslot cmd %s' % taskStatus['appleId']) postData = self.buildPostTimeSlotsData(page) postData['clientTimezone'] = taskStatus['clientTimezone'] postData['id'] = taskStatus['id'] tlsUrl = self.timeslotFormat % GeniusbarPage.storeNumber debug.debug('tls ulr %s' % tlsUrl) headers = {} headers['Accept-Language'] = 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3' headers['User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' headers["Connection"] = 'keep-alive' headers["Host"] = 'concierge.apple.com' tlspage = GeniusbarPage(tlsUrl, data=urllib.urlencode(postData), headers=headers) data = tlspage.get_data() Writefile('tmp/posttimeslotsresult.html', data) text = self.getConfirmMsg(tlspage) taskStatus['prompInfo'] = text.replace(' ', '') Writefile('tmp/reserv-%s' % taskStatus['appleId'], taskStatus['prompInfo']) taskStatus['taskCmd'] = None taskStatus['cmdStatus'] = 'OK' break if taskCmd == 'end': taskStatus['taskCmd'] = None break #debug.debug('waiting cmd') time.sleep(1) runtime -= 1 debug.info('End task %s' % taskStatus['appleId'])
def waitingCmd(self, page, taskStatus): ''' waiting the input ''' runtime = 300 # waiting time storeUrl = taskStatus['storeUrl'] debug.debug(storeUrl) while runtime > 0: taskCmd = taskStatus['taskCmd'] if taskCmd == 'refresh': debug.debug('refresh cmd %s' % taskStatus['appleId']) verifycodedata, tSt = page.get_verification_code_pic() taskStatus['verifyCodeData'] = verifycodedata taskStatus['taskCmd'] = None time.sleep(1) continue if taskCmd == 'submit': debug.debug('get submit cmd %s' % taskStatus['appleId']) postData = page.build_submit_post_data() postData['captchaAnswer'] = taskStatus['captchaAnswer'] postData['phoneNumber'] = taskStatus['phoneNumber'] postData['smsCode'] = taskStatus['smsCode'] postData['clientTimezone'] = taskStatus['clientTimezone'] # 'Asia/Shanghai' submitUrl = self.challengeUrlFormat % GeniusbarPage.storeNumber headers = page.headers headers['Referer'] = submitUrl headers.pop('Accept-Encoding') submitpage = GeniusbarPage(submitUrl, data=urllib.urlencode(postData), headers=headers) data = submitpage.get_data() resultfile = 'tmp/%s.htm' % taskStatus['appleId'] Writefile(resultfile, data) attrs = { "class": "error-message on", "id": "error_message_generalError" } errorMsg = submitpage.get_tag_text('label', attrs=attrs) if errorMsg: taskStatus['cmdStatus'] = 'NOK' taskStatus['taskCmd'] = None taskStatus['prompInfo'] = errorMsg page = submitpage debug.error(errorMsg) Writefile('tmp/submiterr.html', page.get_data()) continue else: # success for submit # get the time slots ret, maxrow = self.buildTimeSlotsTable(submitpage) taskStatus['cmdStatus'] = 'OK' taskStatus['timeSlots'] = (ret, maxrow) taskStatus['taskCmd'] = None page = submitpage continue if taskCmd == 'timeslot': # post timeslots debug.debug('get timeslot cmd %s' % taskStatus['appleId']) postData = self.buildPostTimeSlotsData(page) postData['clientTimezone'] = taskStatus['clientTimezone'] postData['id'] = taskStatus['id'] tlsUrl = self.timeslotFormat % GeniusbarPage.storeNumber debug.debug('tls ulr %s' % tlsUrl) headers = {} headers[ 'Accept-Language'] = 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3' headers[ 'User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" headers[ 'Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' headers["Connection"] = 'keep-alive' headers["Host"] = 'concierge.apple.com' tlspage = GeniusbarPage(tlsUrl, data=urllib.urlencode(postData), headers=headers) data = tlspage.get_data() Writefile('tmp/posttimeslotsresult.html', data) text = self.getConfirmMsg(tlspage) taskStatus['prompInfo'] = text.replace(' ', '') Writefile('tmp/reserv-%s' % taskStatus['appleId'], taskStatus['prompInfo']) taskStatus['taskCmd'] = None taskStatus['cmdStatus'] = 'OK' break if taskCmd == 'end': taskStatus['taskCmd'] = None break #debug.debug('waiting cmd') time.sleep(1) runtime -= 1 debug.info('End task %s' % taskStatus['appleId'])