def Reserver(applyTask, taskStatus, geniusbar=True): name = multiprocessing.current_process().name debug.debug(name) if geniusbar: return applyTask.applyGeniusbar(taskStatus) else: return applyTask.applyWorkshops(taskStatus)
def accept(self): confhelper = ConfHelper() appleid = str(self.ui.lEAccount.text()) accounts = confhelper.getAccounts(self.accountfile) account = {} account['id'] = str(len(accounts) + 1) account['appleid'] = appleid account['passwd'] = str(self.ui.lEPasswd.text()) account['governmentid'] = str(self.ui.lEGovId.text()) account['phonenumber'] = str(self.ui.lEPhoneNumber.text()) accounts[account['id']] = account isOk = True for key, val in account.items(): if not val: isOk = False debug.debug('Please type %s' % key) QtGui.QMessageBox.warning(self, "Info", "Please input %s" % key, QtGui.QMessageBox.Yes) break if isOk: confhelper.addAccounts(self.accountfile, accounts) super(AddAccountDLG, self).accept() else: debug.error('empty field')
def fillResultView(self, appleId): currentTaskName = self.appContext.getCurrentTaskName() results = self.reserverResult.getData(currentTaskName) if not results: debug.info('Can not find %s' % currentTaskName) return findResult = None for result in results: if appleId in result.values(): findResult = result if not findResult: debug.error('can not found verifyData %s,%s' % (appleId, currentTaskName)) return verifyData = findResult['verifyCodeData'] if verifyData: self.fillVerifyCodePic(verifyData) else: debug.debug('can not get verfiy pic') smsMsg = findResult['smsMsg'] if smsMsg: self.pTSmsChallengeTip.setPlainText(smsMsg) else: debug.error('Can not found smsMsg %s %s' % (appleId, currentTaskName))
def get_verification_code_pic(self): try: getData = {} getData['key'] = self.get_tag_value("input", {'id': 'captchaKey'}) getData['format'] = self.get_tag_value("input", {'id': "captchaFormat"}) timeStamp = str(time.time()).replace('.', '') getData['t'] = timeStamp if not self.geniusbarUrl: self.geniusbarUrl = self.get_geniusbar_url() url = "%s/captcha?&%s" % (self.geniusbarUrl, urllib.urlencode(getData)) if not self.pageHeader: self.pageHeader = GeniusbarPage.headers headers = self.pageHeader headers['Accept'] = 'image/png,image/*;q=0.8,*/*;q=0.5' headers['Accept-Encoding'] = 'gzip, deflate' request = urllib2.Request(url, headers=headers) try: data = urllib2.urlopen(request).read() except: debug.debug('read pic err') return (data, timeStamp) except Exception as e: debug.error(str(e)) return (None, None)
def accept(self): confhelper = ConfHelper() appleid = str(self.ui.lEAccount.text()) accounts = confhelper.getAccounts(self.accountfile) account = {} account['id'] = str(len(accounts)+1) account['appleid'] = appleid account['passwd'] = str(self.ui.lEPasswd.text()) account['governmentid'] = str(self.ui.lEGovId.text()) account['phonenumber'] = str(self.ui.lEPhoneNumber.text()) accounts[account['id']] = account isOk = True for key, val in account.items(): if not val: isOk = False debug.debug('Please type %s' % key) QtGui.QMessageBox.warning(self, "Info", "Please input %s" % key, QtGui.QMessageBox.Yes) break if isOk: confhelper.addAccounts(self.accountfile, accounts) super(AddAccountDLG, self).accept() else: debug.error('empty field')
def fillResultView(self, appleId): currentTaskName = self.appContext.getCurrentTaskName() results = self.reserverResult.getData(currentTaskName) if not results: debug.info('Can not find %s' % currentTaskName) return findResult = None for result in results: if appleId in result.values(): findResult = result if not findResult: debug.error('can not found verifyData %s,%s' % (appleId, currentTaskName)) return verifyData = findResult['verifyCodeData'] if verifyData: self.fillVerifyCodePic(verifyData) else: debug.debug('can not get verfiy pic') smsMsg = findResult['smsMsg'] if smsMsg: self.pTSmsChallengeTip.setPlainText(smsMsg) else: debug.error('Can not found smsMsg %s %s' % (appleId, currentTaskName))
def Reserver(applyTask, taskStatus, geniusbar=True): name = multiprocessing.current_process().name debug.debug(name) if geniusbar: return applyTask.applyGeniusbar(taskStatus) else: return applyTask.applyWorkshops(taskStatus)
def get_verification_code_pic(self): try: getData = {} getData['key'] = self.get_tag_value("input", {'id': 'captchaKey'}) getData['format'] = self.get_tag_value("input", {'id': "captchaFormat"}) timeStamp = str(time.time()).replace('.', '') getData['t'] = timeStamp if not self.geniusbarUrl: self.geniusbarUrl = self.get_geniusbar_url() url = "%s/captcha?&%s" % (self.geniusbarUrl, urllib.urlencode(getData)) if not self.pageHeader: self.pageHeader = GeniusbarPage.headers headers = self.pageHeader headers['Accept'] = 'image/png,image/*;q=0.8,*/*;q=0.5' headers['Accept-Encoding'] = 'gzip, deflate' request = urllib2.Request(url, headers=headers) try: data = urllib2.urlopen(request).read() except: debug.debug('read pic err') return (data, timeStamp) except Exception as e: debug.error(str(e)) return (None, None)
def demo (net, imagePathName, scoreThreshold): """Detect object classes in an image using pre-computed object proposals.""" # Load the demo image im = cv2.imread(imagePathName) # Detect all object classes and regress object bounds timer = Timer() timer.tic() scores, boxes = im_detect(net, im) timer.toc() debug('Object detection took {:.3f}s for {:d} object proposals'.format(timer.total_time, boxes.shape[0])) # Visualize detections for each class path, imageFilename = os.path.split(imagePathName) catDir = os.path.split(path)[-1] imageName = catDir + '/' + imageFilename for i, cls in enumerate(CLASSES[1:]): i += 1 # because we skipped background cls_boxes = boxes[:, 4 * i:4 * (i + 1)] cls_scores = scores[:, i] dets = np.hstack((cls_boxes, cls_scores[:, np.newaxis])).astype(np.float32) keep = nms(dets, NMS_THRESHOLD) dets = dets[keep, :] vis_detections(im, cls, imageName, dets, scoreThreshold)
def parse_date(post_id): results = fetch_token_post_with_date(post_id) row = results.fetchall()[0] tokens = row[1].split(',') best_date, all_date = find_dates(tokens, row[2]) debug(best_date, all_date) formated_all_date = format_all_date(all_date) return best_date, formated_all_date
def handle(update): for handler in handler_funcs: try: result = handler(update) if result: break except Exception as e: debug(handler.__module__ + '\n' + repr(e))
def select(self, sql): try: cursor = self.db.cursor() cursor.execute(sql) debug.debug(sql) return cursor.fetchall() except sqlite3.OperationalError as e: debug.error(str(e)) return []
def storeResult(self, appleId): debug.debug('store result') curTask = self.appContext.getCurrentTaskName() for status in self.finishedAppleId: if status['appleId'] == appleId: debug.debug('save task %s %s' % (curTask, appleId)) result = { 'appleId': appleId, 'smsMsg': status['prompInfo'], 'verifyCodeData': status['verifyCodeData']} self.reserverResult.add(curTask, result)
def _deleteTaskList(self, taskName): del self.tasks[taskName] self.updateTaskTableWidget() #del taskfile filedir = self.appContext.getTaskStoreDir() filedir = os.path.join(filedir, self.mkTaskListName(taskName)) try: debug.debug('delete %s' % filedir) os.remove(filedir) except Exception as e: debug.error('Can not del %s %s' % (filedir, str(e)))
def saveTask(self, tasks): for task in tasks: fileName = self.mkTaskListName(task.taskName) debug.debug('save task %s' % fileName) taskdir = self.appContext.getTaskStoreDir() taskfile = os.path.join(taskdir, fileName) try: with open(taskfile, 'wb') as f: pickle.dump(task, f) except Exception as e: debug.error('Error write %s %s' % (taskfile, str(e)))
def getTasksFromdisk(self, taskfiles): debug.debug('read taskfiles %s' % taskfiles) tasks = {} for taskfile in taskfiles: try: with open(taskfile, 'rb') as f: task = pickle.load(f) tasks[task.taskName] = task except Exception as e: debug.error('can not found %s %s' % (taskfile, str(e))) return tasks
def saveTask(self, tasks): for task in tasks: fileName = self.mkTaskListName(task.taskName) debug.debug('save task %s' % fileName) taskdir = self.appContext.getTaskStoreDir() taskfile = os.path.join(taskdir, fileName) try: with open(taskfile, 'wb') as f: pickle.dump(task, f) except Exception as e: debug.error('Error write %s %s' % (taskfile, str(e)))
def getTasksFromdisk(self, taskfiles): debug.debug('read taskfiles %s' % taskfiles) tasks = {} for taskfile in taskfiles: try: with open(taskfile, 'rb') as f: task = pickle.load(f) tasks[task.taskName] = task except Exception as e: debug.error('can not found %s %s' % (taskfile, str(e))) return tasks
def _deleteTaskList(self, taskName): del self.tasks[taskName] self.updateTaskTableWidget() #del taskfile filedir = self.appContext.getTaskStoreDir() filedir = os.path.join(filedir, self.mkTaskListName(taskName)) try: debug.debug('delete %s' % filedir) os.remove(filedir) except Exception as e: debug.error('Can not del %s %s' % (filedir, str(e)))
def storeResult(self, appleId): debug.debug('store result') curTask = self.appContext.getCurrentTaskName() for status in self.finishedAppleId: if status['appleId'] == appleId: debug.debug('save task %s %s' % (curTask, appleId)) result = { 'appleId': appleId, 'smsMsg': status['prompInfo'], 'verifyCodeData': status['verifyCodeData'] } self.reserverResult.add(curTask, result)
def Get_suppport_url(self, storeUrl): debug.debug('get storeurl') page = GeniusbarPage(storeUrl) attrs = {'class': "nav hero-nav selfclear"} page_soup = page.get_soup() navtag = page_soup.find('nav', attrs=attrs) hrefs = navtag.findAll('a') support_url = None for href in hrefs: target = href.find('img', {'alt': 'Genius Bar'}) if target: support_url = href.get('href') break return support_url
def Get_suppport_url(self, storeUrl): debug.debug('get storeurl') page = GeniusbarPage(storeUrl) attrs = {'class': "nav hero-nav selfclear"} page_soup = page.get_soup() navtag = page_soup.find('nav', attrs=attrs) hrefs = navtag.findAll('a') support_url = None for href in hrefs: target = href.find('img', {'alt': 'Genius Bar'}) if target: support_url = href.get('href') break return support_url
def process_dates(results, tokens, postdate): debug(results) dates = remove_invalid(results, postdate) if len(dates) == 0: return None, [] d = defaultdict(list) for indice, date in dates: d[(date.year, date.month, date.day)].append(indiceToToken(indice, tokens)) counter = Counter({date: len(items) for date, items in d.items()}) most_common = counter.most_common(1)[0][0] return datetuple_to_datetime(most_common), [ (date, d[date]) for date, count in counter.most_common() ]
def addAccount(self): account = {} account['appleid'] = str(self.ui.lEAccount.text()) account['passwd'] = str(self.ui.lEPasswd.text()) account['governmentid'] = str(self.ui.lEGovId.text()) account['phonenumber'] = str(self.ui.lEPhoneNumber.text()) for key, item in account.items(): if len(item) == 0: debug.debug('%s can not empty' % key) return account = Account(account) self.appContext.accountManager.addAccounts(account.getData()) accounts = self.appContext.accountManager.getAccounts() self.updataAccountsTableView(accounts)
def addAccount(self): account = {} account['appleid'] = str(self.ui.lEAccount.text()) account['passwd'] = str(self.ui.lEPasswd.text()) account['governmentid'] = str(self.ui.lEGovId.text()) account['phonenumber'] = str(self.ui.lEPhoneNumber.text()) for key, item in account.items(): if len(item) == 0: debug.debug('%s can not empty' % key) return account = Account(account) self.appContext.accountManager.addAccounts(account.getData()) accounts = self.appContext.accountManager.getAccounts() self.updataAccountsTableView(accounts)
def checking(self, statusTasks, finished): while statusTasks: for index, statusTask in enumerate(statusTasks): progress = str(statusTask['taskProgress']) appleId = statusTask['appleId'] debug.debug('checking %s %s' % (appleId, progress)) if progress == '100': for status in finished: if status['appleId'] == appleId: status = dict(status, **statusTasks[index]) time.sleep(1) self.signalStoreResult.emit(appleId) time.sleep(2) del statusTasks[index] self.signalUpdateProgress.emit(appleId, progress) time.sleep(3) debug.info('Terminal check %s' % self.appContext.getCurrentTaskName()) self.enableStart()
def checking(self, statusTasks, finished): while statusTasks: for index, statusTask in enumerate(statusTasks): progress = str(statusTask['taskProgress']) appleId = statusTask['appleId'] debug.debug('checking %s %s' % (appleId, progress)) if progress == '100': for status in finished: if status['appleId'] == appleId: status = dict(status, **statusTasks[index]) time.sleep(1) self.signalStoreResult.emit(appleId) time.sleep(2) del statusTasks[index] self.signalUpdateProgress.emit(appleId, progress) time.sleep(3) debug.info('Terminal check %s' % self.appContext.getCurrentTaskName()) self.enableStart()
def _read_page(self): self.init_cookie() if self.post_data: debug.debug('post %s' % self.url) else: debug.debug('read %s' % self.url) req = urllib2.Request(self.url, data=self.post_data, headers=self.headers) counter = 3 while counter > 0: try: res = urllib2.urlopen(req, data=None, timeout=self.timeout) data = res.read() return data except Exception as e: debug.info(str(e)) counter -= 1 debug.error('Read failed') return None
def _read_page(self): self.init_cookie() if self.post_data: debug.debug('post %s' % self.url) else: debug.debug('read %s' % self.url) req = urllib2.Request(self.url, data=self.post_data, headers=self.headers) counter = 3 while counter > 0: try: res = urllib2.urlopen(req, data=None, timeout=self.timeout) data = res.read() return data except Exception as e: debug.info(str(e)) counter -= 1 debug.error('Read failed') return None
def open(self, url, post_data=None, headers={}, receiver=None): request = QNetworkRequest(QUrl(url)) if post_data: debug.debug('post %s' % url) postData = QByteArray() for key, var in post_data.items(): postData.append('%s=%s&' % (key, var)) for header, var in headers.items(): request.setRawHeader(header, var) reply = self.netWorkMgr.post(request, postData) else: debug.debug('get %s' % url) for header, var in headers.items(): request.setRawHeader(header, var) reply = self.netWorkMgr.get(request) if receiver: reply.finished.connect(receiver) else: receiver = self.netWorkMgr.parent() reply.finished.connect(receiver.replyFinished)
def startTask(self): self.reserverResult.stopAllTask() self.running = True self.disableStart() geniusBar = True loginDatas = self.getTasksInfo(geniusBar=geniusBar) self.statusTasks = [] self.finishedAppleId = [] pool = self.getTaskPool() for loginData in loginDatas: apy = ApplyTask(loginData) self.applyTasks.append(apy) taskStatus = Manager().dict() taskStatus['prompInfo'] = '' taskStatus['verifyCodeData'] = '' taskStatus['appleId'] = loginData['appleId'] taskStatus['taskProgress'] = '0' taskStatus['taskCmd'] = None taskStatus['cmdStatus'] = None taskStatus['storeUrl'] = loginData['storeUrl'] taskStatus['timeSlots'] = None # timeslot id taskStatus['id'] = None self.statusTasks.append(taskStatus) taskResult = Manager().dict() taskResult['appleId'] = loginData['appleId'] self.finishedAppleId.append(taskStatus) pool.apply_async(Reserver, (apy, taskStatus, geniusBar)) pool.close() debug.debug('have %s task' % len(self.statusTasks)) checking = threading.Thread(target=self.checking, args=(self.statusTasks, self.finishedAppleId)) checking.start() self.twTasklistCellClicked(0, 0)
def startTask(self): self.reserverResult.stopAllTask() self.running = True self.disableStart() geniusBar = True loginDatas = self.getTasksInfo(geniusBar=geniusBar) self.statusTasks = [] self.finishedAppleId = [] pool = self.getTaskPool() for loginData in loginDatas: apy = ApplyTask(loginData) self.applyTasks.append(apy) taskStatus = Manager().dict() taskStatus['prompInfo'] = '' taskStatus['verifyCodeData'] = '' taskStatus['appleId'] = loginData['appleId'] taskStatus['taskProgress'] = '0' taskStatus['taskCmd'] = None taskStatus['cmdStatus'] = None taskStatus['storeUrl'] = loginData['storeUrl'] taskStatus['timeSlots'] = None # timeslot id taskStatus['id'] = None self.statusTasks.append(taskStatus) taskResult = Manager().dict() taskResult['appleId'] = loginData['appleId'] self.finishedAppleId.append(taskStatus) pool.apply_async(Reserver, (apy, taskStatus, geniusBar)) pool.close() debug.debug('have %s task' % len(self.statusTasks)) checking = threading.Thread(target=self.checking, args=(self.statusTasks, self.finishedAppleId)) checking.start() self.twTasklistCellClicked(0, 0)
def classify (net, imagePathName, scoreThreshold): img = cv2.imread(imagePathName) if img is None: debug('Image does not exist: ' + imagePathName) return allScores, allBoxes = im_detect(net, img) # returns scores + boxes for ALL candidate regions, R (where R > 100) # scores: R x K array of object class scores (K includes background category 0) # boxes: R x (4*K) array of predicted bounding boxes tagScoreBoxes = list() for region in filterScoredRegions(allScores, allBoxes, scoreThreshold): tagScoreBoxes.append((region[0], region[1][0])) def formatResult (tagScoreBox): label = tagScoreBox[0] # category name box = ','.join(map(str, tagScoreBox[1][1])) # comma-separated coords (left, top, right, bottom) score = tagScoreBox[1][0] # integral percentage (0-100) return '/'.join(map(str, [label, score, box])) # slash-separated fields cmdOutput = ";".join(map(formatResult, tagScoreBoxes)) # semicolon-separated entries, highest scores first print(cmdOutput) # send to STDOUT
def importFromFile(self): debug.debug('import accounter from file') filter = "All(*)" fileName = QFileDialog.getOpenFileName(self, caption="导入账号", directory='.', filter=filter) if not fileName: return accounts = {} #账号,密码,身份证 with open(fileName, 'r') as f: for line in f.readlines(): account = {} l = line.replace('\n', '').replace(' ', '').split(',') account['appleid'] = l[0] account['passwd'] = l[1] account['governmentid'] = l[2] account['phonenumber'] = '' accounts[l[0]] = account self.appContext.accountManager.addAccounts(accounts) accounts = self.appContext.accountManager.getAccounts() self.updataAccountsTableView(accounts)
def importFromFile(self): debug.debug('import accounter from file') filter = "All(*)" fileName = QFileDialog.getOpenFileName(self, caption="导入账号", directory='.', filter=filter) if not fileName: return accounts = {} #账号,密码,身份证 with open(fileName, 'r') as f: for line in f.readlines(): account = {} l = line.replace('\n', '').replace(' ', '').split(',') account['appleid'] = l[0] account['passwd'] = l[1] account['governmentid'] = l[2] account['phonenumber'] = '' accounts[l[0]] = account self.appContext.accountManager.addAccounts(accounts) accounts = self.appContext.accountManager.getAccounts() self.updataAccountsTableView(accounts)
def Checker(ip): cmd = 'ping -n 2 -w 2 %s' % ip debug.debug(cmd) try: res = subprocess.check_output(cmd) if not -1 == res.find('TTL='): debug.debug('find %s' %ip) return ip except Exception as e: debug.debug(str(e)) return False
def Checker(ip): cmd = 'ping -n 2 -w 2 %s' % ip debug.debug(cmd) try: res = subprocess.check_output(cmd) if not -1 == res.find('TTL='): debug.debug('find %s' % ip) return ip except Exception as e: debug.debug(str(e)) return False
print('Error. Configuration file "{}" does not' ' define setting "{}".' .format(cmd_parameters['config_file'], missing_setting.get('yaml_path'))) sys.exit(ExitCode.CONFIGURATION_ERROR.value) except ConfigParseError as cpe: print('Error. Configuration file "{}" is invalid: {}' .format(cmd_parameters['config_file'], str(cpe))) sys.exit(ExitCode.CONFIGURATION_ERROR.value) except FileNotFoundError: print('Error. Configuration file "{}" was not found.' .format(cmd_parameters['config_file'])) sys.exit(ExitCode.INVOCATION_ERROR.value) debug('Using the following configuration settings: ', config) cw = None # COS wrapper handle w = None # WML wrapper handle training_guid = cmd_parameters.get('training_id', None) if cmd_parameters['command'] == 'package' and training_guid is not None: # monitor status of an existing training run; skip preparation steps try: # instantiate Cloud Object Storage wrapper cw = COSWrapper(os.environ['AWS_ACCESS_KEY_ID'], os.environ['AWS_SECRET_ACCESS_KEY']) except COSWrapperError as cwe: print('Error. Cloud Object Storage preparation failed: {}'.format(cwe)) sys.exit(ExitCode.PRE_PROCESSING_FAILED.value)
def applyGeniusbar(self, taskStatus): debug.debug('start %s' % taskStatus['appleId']) return self.reser.Jump_login_page(self.enterUrl, taskStatus)
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'])
def test_login_page(): baseUrl = "http://www.apple.com" storelist = "http://www.apple.com/cn/retail/storelist/" mainpage = webpage.WebPage(storelist) data = mainpage.get_data() 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["Accept-Encoding"] = "gzip, deflate" #print(headers) #f = open('data/storelist.html', 'w') #f.write(data.encode('utf-8')) Writefile('data/storelist.html', data.encode('utf-8')) data = data.encode('utf-8') soup = mainpage.get_page(data) # find all store #<div id="cnstores" class="listing"> attrs = {"id": "cnstores", "class": "listing"} tag = soup.find('div', attrs=attrs) hrefs = tag.findAll('a') suburl = None storeName = None for href in hrefs: suburl = href.get('href') storeName = href.getString().encode('utf-8', 'ignore') break storeurl = baseUrl + suburl debug.debug('%s: %s' % (storeName, storeurl)) storepage = webpage.WebPage(storeurl) page_soup = storepage.get_page() Writefile('data/%s.html' % storeName.encode('gbk'), data) attrs = {'class': "nav hero-nav selfclear"} navtag = page_soup.find('nav', attrs=attrs) hrefs = navtag.findAll('a') support_url = None for href in hrefs: target = href.find('img', {'alt': 'Genius Bar'}) if target: support_url = href.get('href') break post_data = {} support_page = webpage.WebPage(support_url) data = support_page.get_data() Writefile('data/support_page.html', data.encode('utf-8')) page_soup = support_page.get_page(data) # get form token attrs = {'type': 'hidden', "name": "_formToken"} tokentag = page_soup.find('input', attrs=attrs) post_data["_formToken"] = tokentag.get('value') # get selected store attrs = {'selected': 'selected'} store_tag = page_soup.find('option', attrs=attrs) post_data['storeNumber'] = store_tag.get('value') post_data['store'] = post_data['storeNumber'] store_number = post_data['store'] post_data['ruleType'] = 'TECHSUPPORT' headers['Referer'] = support_url headers['Host'] = 'concierge.apple.com' #headers['POST'] = '/reservation/ HTTP/1.1' url = "http://concierge.apple.com/reservation/" jump_page = webpage.WebPage( url, urllib.urlencode(post_data)) #, headers=headers) data = jump_page.get_data() Writefile('data/jump_page.html', data.encode('utf-8')) base_geniusbar = 'http://concierge.apple.com/geniusbar/' geniusbar_url = 'http://concierge.apple.com/geniusbar/' + post_data['store'] 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['Referer'] = support_url headers['Host'] = 'concierge.apple.com' geniusbar_page = webpage.WebPage(geniusbar_url, None, headers=headers) data = geniusbar_page.get_data() Writefile('data/getr401.html', data.encode('utf-8')) # post geniusbar store headers['Referer'] = geniusbar_url geniusbar_soup = geniusbar_page.get_page(data) attrs = {'type': 'hidden', "name": "_formToken"} tokentag = geniusbar_soup.find('input', attrs=attrs) post_data = {} post_data["_formToken"] = tokentag.get('value') post_data['supportOffered'] = 'true' geniusbar_detail_page = webpage.WebPage(geniusbar_url, urllib.urlencode(post_data), headers=headers) data = geniusbar_detail_page.get_data() Writefile('data/geniusbar_%s.html' % store_number, data) authenticate_url = 'https://idmsa.apple.com/IDMSWebAuth/authenticate' tag_names = [ 'Env', 'appIdKey', 'captchaType', 'captchaToken', 'grpCode', 'language', 'iForgotNewWindowVar', 'paramcode', 'path', 'path2', 'segment' ] post_data = build_post_data(geniusbar_detail_page.get_page(data), tag_names) post_data['accountPassword'] = '******' post_data['appleId'] = '*****@*****.**' authenticate_page = webpage.WebPage(authenticate_url, data=urllib.urlencode(post_data), headers=headers) data = authenticate_page.get_data() Writefile('data/authenticate_page.html', data.encode('utf-8')) # post government id geniusbar_url = "https://concierge.apple.com/geniusbar/%s/governmentID" % store_number post_items = ['clientTimezone', 'FirstName', 'LastName'] page_soup = authenticate_page.get_page(data) post_data = build_post_data(page_soup, post_items) if not post_data['clientTimezone']: post_data['clientTimezone'] = 'Asia/Shanghai' attrs = {'type': 'hidden', "name": "_formToken"} tokentag = page_soup.find('input', attrs=attrs) post_data["_formToken"] = tokentag.get('value') post_data['governmentID'] = '610102196103120670' post_data['governmentIDType'] = 'CN.PRCID' post_geniusbar_governmentid = webpage.WebPage(geniusbar_url, urllib.urlencode(post_data), headers) data = post_geniusbar_governmentid.get_data() page_soup = post_geniusbar_governmentid.get_page(data) Writefile('data/post_government_id.html', data.encode('utf-8')) data, geniusbar_page = get_geniusbar_page(store_number, headers=headers) page_soup = geniusbar_page.get_page(data) post_items = ['clientTimezone'] post_data = build_post_data(page_soup, post_items) if not post_data['clientTimezone']: post_data['clientTimezone'] = 'Asia/Shanghai' attrs = {'type': 'hidden', "name": "_formToken"} tokentag = page_soup.find('input', attrs=attrs) post_data["_formToken"] = tokentag.get('value') attrs = {'class': 'NSCSSStateHidden value', "name": "id"} spantag = page_soup.find('span', attrs=attrs) post_data['id'] = spantag.text postbar = 'http://concierge.apple.com/geniusbar/R401' headers['Referer'] = postbar headers['Accept-Language'] = 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3' reservicepage = webpage.WebPage(postbar, data=urllib.urlencode(post_data), headers=headers) data = reservicepage.get_data() Writefile('data/revers.html', data.encode('utf-8')) page_soup = reservicepage.get_page(data) attrs = {'id': 'captchaKey'} tag_key = page_soup.find("input", attrs=attrs) get_data = {} get_data['key'] = tag_key.get('value') attrs = {'id': "captchaFormat"} tag_format = page_soup.find("input", attrs=attrs) get_data['format'] = tag_format.get('value') import time get_data['t'] = str(time.time()).replace('.', '') url = "https://concierge.apple.com/geniusbar/R401/captcha?&%s" % urllib.urlencode( get_data) headers['Accept'] = 'image/png,image/*;q=0.8,*/*;q=0.5' headers['Accept-Encoding'] = 'gzip, deflate' request = urllib2.Request(url, headers=headers) res = urllib2.urlopen(request) data = res.read() f = open('data/img.jpg', 'wb') f.write(data) f.close
def display_cookie(cookie): for i, txt in enumerate(cookie): debug.debug('[%d],[%s]' % (i, txt))
import json app = Flask(__name__) pkg_path = os.path.dirname(handlers.__file__) handler_func_name = 'handler' handler_funcs = [] for _, module_name, _ in pkgutil.iter_modules([pkg_path]): m = importlib.import_module('handlers.' + module_name) handler_funcs.append(getattr(m, handler_func_name)) @app.route(WEBHOOK_URL, methods=['POST']) def post(): update = Update(request.get_json()) handle(update) return 'ok' def handle(update): for handler in handler_funcs: try: result = handler(update) if result: break except Exception as e: debug(handler.__module__ + '\n' + repr(e)) debug("I'm alive!")
def applyGeniusbar(self, taskStatus): debug.debug('start %s' % taskStatus['appleId']) return self.reser.Jump_login_page(self.enterUrl, taskStatus)
def main (argv=None): cfg.TEST.HAS_RPN = True # Use RPN for proposals args = parse_args() # # Non-Caffe options # if args.labelfile > 0: # return the labels file print "/opt/dev/proj/sony/research/py-faster-rcnn/lib/datasets/pascal_voc_labels.txt" return 0 # # Caffe Setup # prototxt = os.path.join(cfg.ROOT_DIR, 'models', NETS[args.net][0], 'faster_rcnn_alt_opt', 'faster_rcnn_test.pt') caffeModel = os.path.join(cfg.ROOT_DIR, 'data', 'faster_rcnn_models', NETS[args.net][1]) if not os.path.isfile(caffeModel): raise IOError(('{:s} not found.\nDid you run ./data/script/' 'fetch_faster_rcnn_models.sh?').format(caffeModel)) if args.cpu_mode: caffe.set_mode_cpu() else: caffe.set_mode_gpu() caffe.set_device(args.gpu) cfg.GPU_ID = args.gpu net = caffe.Net(prototxt, caffeModel, caffe.TEST) debug('\n\nLoaded network {:s}'.format(caffeModel)) # Warmup on a dummy image im = 128 * np.ones((300, 500, 3), dtype=np.uint8) for i in xrange(2): _, _ = im_detect(net, im) # # Classify # classifyArg = args.classifyArg imageDir = args.testImageDir scoreThreshold = args.threshold if classifyArg is not None and len(classifyArg) > 0: if (classifyArg.endswith('.txt')): with open(classifyArg) as imageNames: for imageFile in imageNames: # debug('Classifying ' + imageFile) classify(net, imageFile.strip(), scoreThreshold) # remove trailing \n else: classify(net, classifyArg, scoreThreshold) # assume single arg is an image elif len(imageDir) > 0: for base, dirs, files in os.walk(imageDir): for imageName in files: if imageName.endswith(".jpg"): imgPathName = os.path.join(base, imageName) demo(net, imgPathName, scoreThreshold) canvas.show() # display windows and wait until all are closed return 0
def test_net(net, imdb, max_per_image=100, thresh=0.05, vis=False): """Test a Fast R-CNN network on an image database.""" num_images = len(imdb.image_index) # all detections are collected into: # all_boxes[cls][image] = N x 5 array of detections in # (x1, y1, x2, y2, score) all_boxes = [[[] for _ in xrange(num_images)] for _ in xrange(imdb.num_classes)] output_dir = get_output_dir(imdb, net) # timers _t = {'im_detect' : Timer(), 'misc' : Timer()} if not cfg.TEST.HAS_RPN: roidb = imdb.roidb for i in xrange(num_images): # filter out any ground truth boxes if cfg.TEST.HAS_RPN: box_proposals = None else: # The roidb may contain ground-truth rois (for example, if the roidb # comes from the training or val split). We only want to evaluate # detection on the *non*-ground-truth rois. We select those the rois # that have the gt_classes field set to 0, which means there's no # ground truth. box_proposals = roidb[i]['boxes'][roidb[i]['gt_classes'] == 0] im = cv2.imread(imdb.image_path_at(i)) _t['im_detect'].tic() scores, boxes = im_detect(net, im, box_proposals) _t['im_detect'].toc() _t['misc'].tic() # skip j = 0, because it's the background class for j in xrange(1, imdb.num_classes): inds = np.where(scores[:, j] > thresh)[0] cls_scores = scores[inds, j] cls_boxes = boxes[inds, j*4:(j+1)*4] cls_dets = np.hstack((cls_boxes, cls_scores[:, np.newaxis])) \ .astype(np.float32, copy=False) keep = nms(cls_dets, cfg.TEST.NMS) cls_dets = cls_dets[keep, :] if vis: vis_detections(im, imdb.classes[j], cls_dets) all_boxes[j][i] = cls_dets # Limit to max_per_image detections *over all classes* if max_per_image > 0: image_scores = np.hstack([all_boxes[j][i][:, -1] for j in xrange(1, imdb.num_classes)]) if len(image_scores) > max_per_image: image_thresh = np.sort(image_scores)[-max_per_image] for j in xrange(1, imdb.num_classes): keep = np.where(all_boxes[j][i][:, -1] >= image_thresh)[0] all_boxes[j][i] = all_boxes[j][i][keep, :] _t['misc'].toc() debug('im_detect: {:d}/{:d} {:.3f}s {:.3f}s' \ .format(i + 1, num_images, _t['im_detect'].average_time, _t['misc'].average_time)) det_file = os.path.join(output_dir, 'detections.pkl') with open(det_file, 'wb') as f: cPickle.dump(all_boxes, f, cPickle.HIGHEST_PROTOCOL) debug('Evaluating detections') imdb.evaluate_detections(all_boxes, output_dir)
def display_cookie(cookie): for i, txt in enumerate(cookie): debug.debug('[%d],[%s]' % (i, txt))
def execute(self, sql): cursor = self.db.cursor() cursor.execute(sql) debug.debug(sql) self.db.commit()
def test_login_page(): baseUrl = "http://www.apple.com" storelist = "http://www.apple.com/cn/retail/storelist/" mainpage = webpage.WebPage(storelist) data = mainpage.get_data() 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["Accept-Encoding"] = "gzip, deflate" #print(headers) #f = open('data/storelist.html', 'w') #f.write(data.encode('utf-8')) Writefile('data/storelist.html', data.encode('utf-8')) data = data.encode('utf-8') soup = mainpage.get_page(data) # find all store #<div id="cnstores" class="listing"> attrs = {"id":"cnstores","class":"listing"} tag = soup.find('div', attrs=attrs) hrefs = tag.findAll('a') suburl = None storeName = None for href in hrefs: suburl = href.get('href') storeName = href.getString().encode('utf-8', 'ignore') break storeurl = baseUrl + suburl debug.debug('%s: %s' % (storeName, storeurl)) storepage = webpage.WebPage(storeurl) page_soup = storepage.get_page() Writefile('data/%s.html' % storeName.encode('gbk'), data) attrs = {'class': "nav hero-nav selfclear"} navtag = page_soup.find('nav', attrs=attrs) hrefs = navtag.findAll('a') support_url = None for href in hrefs: target = href.find('img', {'alt':'Genius Bar'}) if target: support_url = href.get('href') break post_data = {} support_page = webpage.WebPage(support_url) data = support_page.get_data() Writefile('data/support_page.html', data.encode('utf-8')) page_soup = support_page.get_page(data) # get form token attrs = {'type': 'hidden', "name": "_formToken"} tokentag = page_soup.find('input', attrs=attrs) post_data["_formToken"] = tokentag.get('value') # get selected store attrs = {'selected': 'selected'} store_tag = page_soup.find('option', attrs=attrs) post_data['storeNumber'] = store_tag.get('value') post_data['store'] = post_data['storeNumber'] store_number = post_data['store'] post_data['ruleType'] = 'TECHSUPPORT' headers['Referer'] = support_url headers['Host'] = 'concierge.apple.com' #headers['POST'] = '/reservation/ HTTP/1.1' url = "http://concierge.apple.com/reservation/" jump_page = webpage.WebPage(url, urllib.urlencode(post_data))#, headers=headers) data = jump_page.get_data() Writefile('data/jump_page.html', data.encode('utf-8')) base_geniusbar = 'http://concierge.apple.com/geniusbar/' geniusbar_url = 'http://concierge.apple.com/geniusbar/' + post_data['store'] 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['Referer'] = support_url headers['Host'] = 'concierge.apple.com' geniusbar_page = webpage.WebPage(geniusbar_url,None, headers=headers) data = geniusbar_page.get_data() Writefile('data/getr401.html', data.encode('utf-8')) # post geniusbar store headers['Referer'] = geniusbar_url geniusbar_soup = geniusbar_page.get_page(data) attrs = {'type': 'hidden', "name": "_formToken"} tokentag = geniusbar_soup.find('input', attrs=attrs) post_data = {} post_data["_formToken"] = tokentag.get('value') post_data['supportOffered'] = 'true' geniusbar_detail_page = webpage.WebPage(geniusbar_url, urllib.urlencode(post_data), headers=headers) data = geniusbar_detail_page.get_data() Writefile('data/geniusbar_%s.html' % store_number, data) authenticate_url = 'https://idmsa.apple.com/IDMSWebAuth/authenticate' tag_names = ['Env', 'appIdKey', 'captchaType', 'captchaToken', 'grpCode', 'language', 'iForgotNewWindowVar', 'paramcode', 'path', 'path2', 'segment'] post_data = build_post_data(geniusbar_detail_page.get_page(data), tag_names) post_data['accountPassword'] = '******' post_data['appleId'] = '*****@*****.**' authenticate_page = webpage.WebPage(authenticate_url, data=urllib.urlencode(post_data), headers=headers) data = authenticate_page.get_data() Writefile('data/authenticate_page.html',data.encode('utf-8')) # post government id geniusbar_url ="https://concierge.apple.com/geniusbar/%s/governmentID" % store_number post_items =[ 'clientTimezone', 'FirstName', 'LastName' ] page_soup = authenticate_page.get_page(data) post_data = build_post_data(page_soup, post_items) if not post_data['clientTimezone']: post_data['clientTimezone'] = 'Asia/Shanghai' attrs = {'type': 'hidden', "name": "_formToken"} tokentag = page_soup.find('input', attrs=attrs) post_data["_formToken"] = tokentag.get('value') post_data['governmentID'] = '610102196103120670' post_data['governmentIDType'] = 'CN.PRCID' post_geniusbar_governmentid = webpage.WebPage(geniusbar_url, urllib.urlencode(post_data), headers) data = post_geniusbar_governmentid.get_data() page_soup = post_geniusbar_governmentid.get_page(data) Writefile('data/post_government_id.html', data.encode('utf-8')) data, geniusbar_page = get_geniusbar_page(store_number, headers=headers) page_soup = geniusbar_page.get_page(data) post_items = ['clientTimezone'] post_data = build_post_data(page_soup, post_items) if not post_data['clientTimezone']: post_data['clientTimezone'] = 'Asia/Shanghai' attrs = {'type': 'hidden', "name": "_formToken"} tokentag = page_soup.find('input', attrs=attrs) post_data["_formToken"] = tokentag.get('value') attrs = {'class': 'NSCSSStateHidden value', "name": "id"} spantag = page_soup.find('span', attrs=attrs) post_data['id'] = spantag.text postbar = 'http://concierge.apple.com/geniusbar/R401' headers['Referer'] = postbar headers['Accept-Language'] = 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3' reservicepage = webpage.WebPage(postbar, data=urllib.urlencode(post_data), headers=headers) data = reservicepage.get_data() Writefile('data/revers.html', data.encode('utf-8')) page_soup = reservicepage.get_page(data) attrs = {'id':'captchaKey'} tag_key = page_soup.find("input", attrs=attrs) get_data ={} get_data['key'] = tag_key.get('value') attrs= {'id':"captchaFormat"} tag_format = page_soup.find("input", attrs=attrs) get_data['format'] = tag_format.get('value') import time get_data['t'] = str(time.time()).replace('.', '') url = "https://concierge.apple.com/geniusbar/R401/captcha?&%s" % urllib.urlencode(get_data) headers['Accept'] = 'image/png,image/*;q=0.8,*/*;q=0.5' headers['Accept-Encoding']='gzip, deflate' request = urllib2.Request(url, headers=headers) res = urllib2.urlopen(request) data = res.read() f= open('data/img.jpg', 'wb') f.write(data) f.close