def passedOrFailExcel(self,excelSheetName,workSheet=[],mainMasterList={}): #print workSheet k=2 for sheet in workSheet: passedOrFailed=[] sheet=re.sub('.py', '', sheet) masterList=self.scriptCallData(excelSheetName+'.xlsx', sheet) #print "masterList",masterList for keys in masterList.keys(): result=masterList[keys]['result'] passedOrFailed.append(result) ExcelLib.writeCells(sheet, "L2", passedOrFailed.count('PASSED')) ExcelLib.writeCells(sheet, "L3", passedOrFailed.count('FAILED')) ExcelLib.writeCells('FinalResult', "K"+str(k), sheet) ExcelLib.writeCells('FinalResult', "L"+str(k), passedOrFailed.count('FAILED')+passedOrFailed.count('PASSED')) ExcelLib.writeCells('FinalResult', "M"+str(k), passedOrFailed.count('PASSED')) ExcelLib.writeCells('FinalResult', "N"+str(k), passedOrFailed.count('FAILED')) k = k + 1 ExcelLib.excelSheetName=excelSheetName+'.xlsx' totalPassed=totalFailed=0 for sheet in workSheet: sheet=re.sub('.py', '', sheet) passed=str(ExcelLib.cellValues(sheet, 2, 12)).strip() totalPassed = totalPassed + int(passed) failed=str(ExcelLib.cellValues(sheet, 3, 12)).strip() totalFailed = totalFailed +int(failed) ExcelLib.writeCells('FinalResult', "B2", totalPassed) ExcelLib.writeCells('FinalResult', "B3", totalFailed) ExcelLib.writeCells('FinalResult', "B4", totalPassed + totalFailed ) ExcelLib.drawPieChart('FinalResult') sheetName=mainMasterList[excelSheetName]['sheetName'] toEmail=mainMasterList[excelSheetName]['email'] fromEmail = mainMasterList[excelSheetName]['fromEmail'] send_mail(sheetName, fromEmail, toEmail, sheetName+'.xlsx')
def DataFliter(host, port, name, password, database, collection, Limit_Number, lag, stopwords_set, content_column, time_column, SendMailConfig=[]): print "......TextFilter System by LiNing......" print "filter_status equals 1 means OK, otherwise 0" posts = MongoDBIO(host, port, name, password, database, collection).Connection() #------------------------------------------------------------------------------- # 以下几行根据实际情况修改 #### 查询操作 id_dict = {"0":[], "1":[]} # 1-表示通过,0-表示不通过 starttime = datetime.datetime(2015, 1, 1) endtime = datetime.datetime.now() for post in posts.find({ time_column:{"$gte":starttime, "$lte":endtime}, content_column:{"$exists":1}, # "filter_status":{"$nin":[0, 1]} # 此处可注释 },).sort(time_column, pymongo.DESCENDING).limit(Limit_Number): # print post if post[content_column] is not None: # print post[content_column] textseg_list = TextSeg(post[content_column], lag) testseg_set = set(textseg_list) if stopwords_set & testseg_set: # id_dict["0"].append(post["_id"]) id_dict["0"].append((post["_id"], post[content_column])) else: id_dict["1"].append(post["_id"]) else: print '{"_id":ObjectId("%s")} None' % post["_id"] #### 更新操作 text = '' for id_content in id_dict["0"]: posts.update({"_id":id_content[0]}, {"$set":{"filter_status":0}}) id_content_string = '{"_id":ObjectId("%s")} 0\n%s\n' % (id_content[0], id_content[1]) print id_content_string, text += id_content_string # text = text.join(id_content_string) # 错误!join是循环用text连接id_content_string的字符 if len(SendMailConfig) == 5: smtp_server, from_addr, passwd, to_addr, SendMailFlag = SendMailConfig #------------------------------------------------------------------------------- # smtp_server = 'smtp.163.com' # from_addr = '*****@*****.**' # passwd = 'xxxx' # to_addr = ['*****@*****.**'] if SendMailFlag == 'Yes' and text != '': #------------------------------------------------------------------------------- subject = 'Waring...' files = [] send_mail(smtp_server, from_addr, passwd, to_addr, subject, text, files) for id in id_dict["1"]: posts.update({"_id":id}, {"$set":{"filter_status":1}}) print '{"_id":ObjectId("%s")} 1' % id
def learn(self, steps=99000, BATCH_SIZE=600, gd_steps=[2, 5], totalcol=None, data=None, OneHotdata=None, missing_data=None, control_variables=None, ModelResultPath=None, ResultPath=None, LogPath="iitp_target_1.txt", per=1000): log = logging.getLogger('iitp') log.setLevel(logging.DEBUG) fileHandler = logging.FileHandler(os.path.join(os.getcwd(), LogPath), mode="w") log.addHandler(fileHandler) merged = tf.summary.merge_all() config = tf.ConfigProto(log_device_placement=True) config.gpu_options.allow_growth = True sess = tf.Session(config=config) train_writer = tf.summary.FileWriter(ModelResultPath, sess.graph) saver = tf.train.Saver() init = tf.global_variables_initializer() sess.run(init) ng_steps, nd_steps = gd_steps global_distance = 0 epochs = [] gen_loss_store = [] gmiss_loss_store = [] disc_loss_store = [] miss_disc_loss_store = [] total_distance_store = [] totalN = data.shape[1] epoch = 0 for epoch in range(epoch, steps): if epoch > 0: msg = f"Epoch: {epoch:05d}/{steps}, gloss : {n_gloss:.3f} , dloss : {n_dloss:.3f} , missloss : {n_missloss:.3f} , gmissloss : {n_gmissloss:.3f}" print(msg, end='\r') batch_idx = np.random.choice(len(data), BATCH_SIZE) batch_noise = generate_noise(BATCH_SIZE, self.g_dim) batch_onehot_X = OneHotdata.iloc[batch_idx, :].values batch_miss_data = missing_data[batch_idx, :] Conds = control_variables.values[batch_idx, :] feed_dict = { self.global_step: epoch, self.X: batch_onehot_X, self.Z: batch_noise, self.Conditions: Conds, self.missX: batch_miss_data, self.batch_size: BATCH_SIZE, self.is_training: True, } n_gloss, n_dloss, n_missloss, n_gmissloss = 0, 0, 0, 0 for _ in range(ng_steps): # , miss_gen_step , miss_gen_loss _, gloss = sess.run([self.gen_step, self.gen_loss], feed_dict=feed_dict) n_gloss += gloss # + mgloss for _ in range(ng_steps): _, gmissloss = sess.run( [self.miss_gen_step, self.miss_gen_loss], feed_dict=feed_dict) n_gmissloss += gmissloss for _ in range(nd_steps): _, dloss = sess.run([self.disc_step, self.disc_loss], feed_dict=feed_dict) n_dloss += dloss for _ in range(nd_steps): _, missloss = sess.run( [self.miss_disc_step, self.miss_disc_loss], feed_dict=feed_dict) n_missloss += missloss n_gloss /= ng_steps n_gmissloss /= ng_steps n_dloss /= nd_steps n_missloss /= nd_steps # print(f"{n_gloss} {n_dloss} {n_missloss}", end='\n') if math.isnan(n_gloss) | math.isnan(n_dloss) | math.isnan( n_missloss) | math.isnan(n_gmissloss): msg = f"nan issue gloss : {n_gloss} , dloss : {n_dloss} , missloss : {n_missloss} , gmissloss : {n_gmissloss}" log.error(f"[{epoch}] Error : {msg}") send_mail(subject="IITP GAN Train Error!!", txt=msg) sys.exit(0) """ ########################################## #### Visualization ###################### ########################################## """ if (epoch % per == 0) & (epoch > 0): epochs.append(epoch) gen_loss_store.append(n_gloss) gmiss_loss_store.append(n_gmissloss) disc_loss_store.append(n_dloss) miss_disc_loss_store.append(n_missloss) fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 8)) ax = axes.flatten() plt.subplots_adjust(left=0.05, bottom=0.2, right=0.85, top=0.95, wspace=None, hspace=0.0) ax[0].plot(epochs, gen_loss_store, label="Generator") ax[0].plot(epochs, gmiss_loss_store, label="MissGenerator") ax[0].plot(epochs, disc_loss_store, label="Discriminator") ax[0].plot(epochs, miss_disc_loss_store, label="MissDiscriminator") ax[0].set_title( f"Epoch : {epoch} GLoss : {n_gloss:.3f} DLoss : {n_dloss:.3f} MissDloss : {n_missloss:.3f} MissGloss : {n_gmissloss:.3f}" ) ax[0].legend(loc=1) # plt.ylim(0,3) store = [] Total_SIZE = len(data) Total_noise = generate_noise(Total_SIZE, self.g_dim) Total_onehot_X = OneHotdata.values Total_miss_data = missing_data Total_Conds = control_variables.values feed_dict = { self.global_step: epoch, self.X: Total_onehot_X, self.Z: Total_noise, self.Conditions: Total_Conds, self.missX: Total_miss_data, self.batch_size: Total_SIZE, self.is_training: True, } # miss_g , miss_indic ,miss_sigmoid,miss_x = sess.run([miss_G_sample_eval,miss_indicator2, # G_miss,G_sample] , feed_dict = feed_dict) miss_g, miss_indic = sess.run( [self.miss_G_sample_eval, self.miss_indicator2], feed_dict=feed_dict) # miss_g = np.where(miss_g==1.5, np.nan, miss_g) total_msg = f"STEP : {epoch} \n" miss_g = missing_handling(miss_g, self.overall_where) print(pd.DataFrame(miss_g[[0], :], columns=totalcol)) msg = f'{"=" * 10} Epoch : {epoch} {"=" * 10}' log.info(msg) log.info(miss_indic[[0], :]) log.info(miss_g[[0], :]) for i, _column_ in enumerate(data.columns.tolist()): r = data.iloc[:, i].values.astype(float) g = miss_g[:, i] r = r[~np.isnan(r)] g = g[~np.isnan(g)] try: dist = np.round(wdist(g, r), 6) except Exception as e: print(f"{_column_} : {e}") dist = 0 pass store.append(dist) msg = r"[{}.{:.3f}]".format(i, dist) if int(data.shape[1] / 2) == i: total_msg = total_msg + " \n" total_msg = total_msg + msg total_distance = sum(store) total_distance_store.append(total_distance) try: summary = sess.run(merged, feed_dict=feed_dict) train_writer.add_summary(summary, epoch) except Exception as e: # log.error(f"[{epoch}] Error : {e}") pass if len(total_distance_store) == 1: global_distance = total_distance if total_distance <= global_distance: msg = f"[{epoch}] distnace : {global_distance} -> {total_distance}" log.info(msg) global_distance = total_distance meta_graph_bool = True saver.save(sess, os.path.join(ModelResultPath, "model.ckpt"), global_step=epoch, write_meta_graph=meta_graph_bool) total_msg = f"STEP : {epoch} \n" total_msg += f"Total Distance : {total_distance:.3f}[{min(total_distance_store):.3f}]" ax[1].plot(epochs, total_distance_store, label="TotalDistance") ax[1].set_title(total_msg, fontsize=12) ax[1].legend(loc=1) plt.tight_layout() plt.savefig(os.path.join(ResultPath, f'{epoch:05d}.png')) if epoch % 200 == 0: clear_output() else: plt.show() """ ########################################## #### Visualization ###################### ########################################## """ log.info("Terminate") os.system('convert -delay 15 -loop 0 {0}/*.png {0}/gan.gif'.format( ResultPath)) ModelResultPath = os.path.join(ResultPath, ModelResult) send_mail(subject="IITP GAN Train Target 0 Complete", txt=f"결과물 경로 : {ResultPath}", gifpath=os.path.join(ResultPath, "gan.gif"))
def DataFliter(host, port, name, password, database, collection, Limit_Number, lag, stopwords_set, content_column, time_column, SendMailConfig=[]): print "......TextFilter System by LiNing......" print "filter_status equals 1 means OK, otherwise 0" posts = MongoDBIO(host, port, name, password, database, collection).Connection() #------------------------------------------------------------------------------- # 以下几行根据实际情况修改 #### 查询操作 id_dict = {"0": [], "1": []} # 1-表示通过,0-表示不通过 starttime = datetime.datetime(2015, 1, 1) endtime = datetime.datetime.now() for post in posts.find( { time_column: { "$gte": starttime, "$lte": endtime }, content_column: { "$exists": 1 }, # "filter_status":{"$nin":[0, 1]} # 此处可注释 }, ).sort(time_column, pymongo.DESCENDING).limit(Limit_Number): # print post if post[content_column] is not None: # print post[content_column] textseg_list = TextSeg(post[content_column], lag) testseg_set = set(textseg_list) if stopwords_set & testseg_set: # id_dict["0"].append(post["_id"]) id_dict["0"].append((post["_id"], post[content_column])) else: id_dict["1"].append(post["_id"]) else: print '{"_id":ObjectId("%s")} None' % post["_id"] #### 更新操作 text = '' for id_content in id_dict["0"]: posts.update({"_id": id_content[0]}, {"$set": {"filter_status": 0}}) id_content_string = '{"_id":ObjectId("%s")} 0\n%s\n' % (id_content[0], id_content[1]) print id_content_string, text += id_content_string # text = text.join(id_content_string) # 错误!join是循环用text连接id_content_string的字符 if len(SendMailConfig) == 5: smtp_server, from_addr, passwd, to_addr, SendMailFlag = SendMailConfig #------------------------------------------------------------------------------- # smtp_server = 'smtp.163.com' # from_addr = '*****@*****.**' # passwd = 'xxxx' # to_addr = ['*****@*****.**'] if SendMailFlag == 'Yes' and text != '': #------------------------------------------------------------------------------- subject = 'Waring...' files = [] send_mail(smtp_server, from_addr, passwd, to_addr, subject, text, files) for id in id_dict["1"]: posts.update({"_id": id}, {"$set": {"filter_status": 1}}) print '{"_id":ObjectId("%s")} 1' % id
def getTodaySoccer(gameType): # type == 3 竞彩 # type == 1 精简 # type == 2 十四场 # http://119.29.29.29/d?ttl=1&dn=txt.city007.net httpHomeStr = get_resultstr_with_url( 'http://119.29.29.29/d?ttl=1&dn=txt.city007.net') httpHomeList = httpHomeStr.split(';') host = httpHomeList[0] gameType = int(gameType) url = '' resultStr = '' try: # url = "http://%s:8071/phone/schedule_0_%s.txt?an=iosQiuTan&av=6.2&from=2&r=%s" % (host,str(gameType),str(int(time.time()))) # http://61.143.224.156:8071/phone/schedule_0_0.txt?an=iosQiuTan&av=7.1&from=24&r=1535452669 url = "http://61.143.224.156:8071/phone/schedule_0_" + str( gameType) + ".txt?an=iosQiuTan&av=7.1&from=24&r=" + str( int(time.time())) print url except Exception as e: print '请求接口出错' + url print e if url != '': resultStr = get_resultstr_with_url(url) global AllGames global AllBeginTimes if resultStr != '': # print resultStr allArray = resultStr.split('$$') if gameType == 1: leagueStr = allArray[0] else: leagueStr = allArray[1] allLeague = leagueStr.split('!') dic = {} for league in allLeague: oneLeague = league.split('^') dic[oneLeague[1]] = oneLeague[0].encode('utf-8') if gameType == 1: gameStr = allArray[1] else: gameStr = allArray[2] games = gameStr.split('!') # 获取当前时间戳 nowTimestamp = time.time() contentStr = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>初盘预测</title></head><body>" for game in games: onegame = FootballGame() oneGameArray = game.split('^') oneGameArray.remove('') onegame.soccerID = int(oneGameArray[0]) onegame.leauge = dic.get(oneGameArray[1]) beginTime = oneGameArray[3].encode('utf-8') onegame.beginTime = beginTime[0:4] + '-' + beginTime[ 4:6] + '-' + beginTime[6:8] + ' ' + beginTime[ 8:10] + ':' + beginTime[10:12] + ':' + beginTime[12:14] beginTime_datetime = datetime.datetime.strptime( onegame.beginTime, '%Y-%m-%d %H:%M:%S') beginTime_timestamp = time.mktime(beginTime_datetime.timetuple()) delta = nowTimestamp - beginTime_timestamp # 比赛已经开始或者已经结束 if delta >= 0: continue briefTimeStr = beginTime[0:4] + '-' + beginTime[ 4:6] + '-' + beginTime[6:8] + ' ' + beginTime[ 8:10] + ':' + beginTime[10:12] if briefTimeStr not in AllBeginTimes: AllBeginTimes.append(briefTimeStr) if oneGameArray[4].isdigit() or oneGameArray[4] == '': onegame.homeTeam = oneGameArray[5].encode('utf-8') onegame.friendTeam = oneGameArray[6].encode('utf-8') else: onegame.homeTeam = oneGameArray[4].encode('utf-8') onegame.friendTeam = oneGameArray[5].encode('utf-8') AllGames.append(onegame) # 获取欧赔,亚盘数据 onegame.oddCompanies = getOneGameODD(host, onegame) onegame.handiCompanies = getOneGameHandi(host, onegame) titlestr = ''.join([ str(onegame.beginTime), ':', onegame.leauge, ':', onegame.homeTeam, 'vs', onegame.friendTeam, ' id: ', str(onegame.soccerID), '澳盘: ', str(onegame.orignal_aomenHandi), ' -> ', str(onegame.now_aomenHandi) ]) contentStr += "<h3 style=\"color:red;\">%s</h3>" % (titlestr, ) # 获取开盘时间 flag = SoccerOrignalPanTime.gethandiTime(onegame.soccerID) if flag: # contentStr += '澳盘开盘早\n'.join([str(onegame.beginTime), ':', onegame.leauge, ':', onegame.homeTeam, 'vs', onegame.friendTeam]) contentStr += "<h4 style=\"color:red;\" align=\"center\">澳盘开盘早</h4>" # 获取初始盘口数量 if len(onegame.orignalHandiList) > 2: contentStr += "<h4 style=\"color:red;\" align=\"center\">初盘混乱</h4>" # contentStr += '初盘混乱\n' # contentStr += ''.join( # [str(onegame.beginTime), ':', onegame.leauge, ':', onegame.homeTeam, 'vs', onegame.friendTeam]) contentStr += "<table bgcolor=\"black\"cellspacing=\"1px\"width=\"375px\" align=\"center\">" \ "<caption style=\"color:red;\"><h5>亚盘</h5></caption><tr bgcolor=#663399><th>博彩公司</th><th>盘口</th><th>数量</th><th>赢盘</th><th>走盘</th><th>输盘</th><th>胜</th><th>平</th><th>负</th></tr> " tempHandistr = getHandiProbability(onegame) if tempHandistr is not None: contentStr += tempHandistr # contentStr += '\n' tempNowHandistr = getnowHandiProbability(onegame) if tempNowHandistr is not None: contentStr += "<tr bgcolor=#888888><th>即时盘口</th><th>%s</th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr> " % ( str(len(onegame.nowHandiList))) contentStr += tempNowHandistr contentStr += '</table>' else: contentStr += '</table>' contentStr += '</table>' contentStr += "<table bgcolor=\"black\"cellspacing=\"1px\"width=\"375px\" align=\"center\"><caption style=\"color:red;\"><h5>欧赔</h5></caption>" \ "<tr bgcolor=\"white\" ><td>博彩公司</td> <td>数量</td><td>胜</td><td>平</td><td>负</td><td>胜率</td><td>平率</td><td>负率</td>" tempOddstr = getOrignalODDProbability(onegame) if tempOddstr is not None: contentStr += tempOddstr # contentStr += '\n' tempNowOddstr = getnowODDProbability(onegame) if tempNowOddstr is not None: contentStr += "<tr bgcolor=#888888 ><td>即时欧赔</td> <td></td><td></td><td></td><td></td><td></td><td></td><td></td>" contentStr += tempNowOddstr contentStr += '</table>' else: contentStr += '</table>' time.sleep(3) i = datetime.datetime.now() if gameType == 1: subjectstr = '精简足球分析' elif gameType == 2: subjectstr = '十四场足球分析' else: subjectstr = '初盘分析' send_mail("%s %s/%s/%s" % (subjectstr, i.year, i.month, i.day), contentStr, 'html')
def SendResultsEmail(self,query): sAttachment = self.XSLTransform('email.xml','email.xsl') file = open('results.html','w') file.write(sAttachment) file.close() sFilename = self._sConfigFile # Get the various values that we need sServer = Config.GetValue( sFilename, 'SMTPServer', self._Out ) if ( sServer <> '' ): sMyName = Config.GetValue( sFilename, 'MyName', self._Out ) sTo = Config.GetValue( sFilename, 'SMTPTo', self._Out ) sFrom = Config.GetValue( sFilename, 'SMTPFrom', self._Out ) sCC = Config.GetValue( sFilename, 'SMTPCC', self._Out ) sBody = Config.GetValue( sFilename, 'SMTPBody', self._Out ) sSubject= Config.GetValue( sFilename, 'SMTPSubject', self._Out ) sSMTPUser = Config.GetValue( sFilename, 'SMTPUser', self._Out ) sSMTPPassword = Config.GetValue ( sFilename, 'SMTPPass', self._Out) # Info messages self._Out.OutputInfo( 'Sending e-mail to: ' + sTo + '...' ) if (sCC <> ''): self._Out.OutputInfo( '... cc: ' + sCC + '...' ) self._Out.OutputInfo( '... regarding ' + sSubject + '...' ) sErrorMsg = self._Out.GetErrorMessage( ) # Build the body of the message dtNow = datetime.datetime.now( ) sMessageBody = dtNow.strftime( "%a, %d %b %Y %H:%M" ) + '\n\n' if ( sMyName <> '' ): sMessageBody += 'Name: ' + sMyName + '\n\n' sMessageBody += 'Query Name: ' + query + '\n\n' sMessageBody += 'SQL: ' + Config.GetValue( sFilename, str(query + 'SQL'), self._Out ) + '\n\n' sMessageBody += 'Unique Key: ' + Config.GetValue( sFilename, str(query + 'UniqueKey'), self._Out ) + '\n\n' sMessageBody += 'Destination Table: ' + Config.GetValue( sFilename, str(query + 'DestTable'), self._Out ) + '\n\n' sMessageBody += 'DataWatcher comparison results are attached' if ( sBody <> '' and sBody <> ' ' ): sMessageBody += sBody + '\n\n' if ( sErrorMsg <> '' ): sMessageBody += sErrorMsg + '\n\nPlease see the log for more details.' # Make the lists if ( len( sTo ) > 0 and sTo <> '' ): lTo = sTo.split( ',' ) else: lTo = [] if ( len( sCC ) > 0 and sCC <> '' ): lCC = sCC.split( ',' ) else: lCC = [] # Do the mail thang send_mail( send_to = lTo, send_cc = lCC, message_subject = sSubject, message_text = sMessageBody, send_from = sFrom, mail_server = sServer, Out = self._Out, files = ["results.html"], smtp_user = sSMTPUser, smtp_password = sSMTPPassword) else: # Indicate we couldn't send self._Out.OutputInfo( 'No configuration for SendMail' ) return
time.sleep(1) content.click() time.sleep(1) self.browser.save_screenshot(self.my_path + 'login.png') assert "Indexadores" in self.browser.page_source def test_login_busca_doc_store(self): self.browser.get("http://srvprtapp001d.tokiomarine.com.br:85/docstore-viewer/") content = self.browser.find_element_by_css_selector('a.btn.show-filter') time.sleep(1) content.click() select = Select(self.browser.find_element_by_id('tipoFiltro')) time.sleep(1) select.select_by_visible_text("Sinistro") element = self.browser.find_element_by_id("txtFiltro") element.send_keys("E1053017488") element.send_keys(Keys.RETURN) time.sleep(3) self.browser.save_screenshot(self.my_path + 'busca.png') assert "Registro(s) encontrado(s):" in self.browser.page_source def tearDown(self): self.browser.close() if __name__ == "__main__": unittest.main() files = DocStoreTest.wrap_files() send_mail(files)
for op in ops: if op.state != 0: allToFollow += 1 else: continue logger.debug("unfollow %d state %d %s" % (op.opUid, op.state, op.actionTime)) try: if not op.srcUid in followResult: followResult[op.srcUid] = [0, 0] followResult[op.srcUid][0] += 1 if FriendShip.CheckFollow(client, op.opUid, BGApp.dev_uid): logger.debug("%d follow us" % op.opUid) followResult[op.srcUid][1] += 1 allFollowers += 1 else: logger.debug("%d not follow" % op.opUid) except: logger.debug(traceback.format_exc()) time.sleep(1) mailContent += "昨日一共求关注了%d个人,%d个人回粉\n" % (allToFollow, allFollowers) mailContent += "其中:\n" for (k, v) in followResult.items(): com = Competitor.objects.get(uid=k) mailContent += "%s" % com.screenName.encode('utf_8') mailContent += "一共收听了%d个人,回粉了%d个人\n" % (v[0], v[1]) print mailContent send_mail(['*****@*****.**',], "增粉日报", mailContent)
from SendMail import send_mail from Operation import Operation from FriendShip import FriendShip import time, sys if __name__ == '__main__': if len(sys.argv) == 2: num = int(sys.argv[1]) else: num = 0 ops = Operation.FetchSomeDayOps(Operation.FollowType, num) print "all number %d" % len(ops) followNum = 0 client = APIClient(BGApp.wdj_app_key, BGApp.wdj_app_secret) client.set_access_token(BGApp.wdj_me_token, time.time() + 90 * 24 *3600) for op in ops: try: if FriendShip.CheckFollow(client, op.uid, BGApp.dev_uid): print op.uid, op.ts followNum += 1 else: print "not follow:", op.uid, op.ts except: pass time.sleep(1) print "follow num %d" % followNum content = "昨天收听了%d个人,%d个人回粉" % (len(ops), followNum) send_mail(['*****@*****.**',], "增粉日报", content)
def getTodaySoccer(gameType): # type == 3 竞彩 # type == 1 精简 # type == 2 十四场 url = '' resultStr = '' gameType = int(gameType) try: url = "http://61.143.225.85:8072/phone/schedule_0_" + str( gameType) + ".txt?an=iosQiuTan&av=2.4&from=2&r=" + str( int(time.time())) print url except Exception as e: print '请求接口出错' + url print e if url != '': resultStr = get_resultstr_with_url(url) global AllGames global AllBeginTimes if resultStr != '': # print resultStr allArray = resultStr.split('$$') if gameType == 1: leagueStr = allArray[0] else: leagueStr = allArray[1] allLeague = leagueStr.split('!') dic = {} for league in allLeague: oneLeague = league.split('^') dic[oneLeague[1]] = oneLeague[0].encode('utf-8') if gameType == 1: gameStr = allArray[1] else: gameStr = allArray[2] games = gameStr.split('!') contentStr = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>初盘预测</title></head><body>" for game in games: onegame = FootballGame() oneGameArray = game.split('^') oneGameArray.remove('') onegame.soccerID = int(oneGameArray[0]) onegame.leauge = dic.get(oneGameArray[1]) beginTime = oneGameArray[3].encode('utf-8') onegame.beginTime = beginTime[0:4] + '-' + beginTime[ 4:6] + '-' + beginTime[6:8] + ' ' + beginTime[ 8:10] + ':' + beginTime[10:12] briefTimeStr = beginTime[0:4] + '-' + beginTime[ 4:6] + '-' + beginTime[6:8] + ' ' + beginTime[ 8:10] + ':' + beginTime[10:12] if briefTimeStr not in AllBeginTimes: AllBeginTimes.append(briefTimeStr) if oneGameArray[4].isdigit() or oneGameArray[4] == '': onegame.homeTeam = oneGameArray[5].encode('utf-8') onegame.friendTeam = oneGameArray[6].encode('utf-8') else: onegame.homeTeam = oneGameArray[4].encode('utf-8') onegame.friendTeam = oneGameArray[5].encode('utf-8') AllGames.append(onegame) # 获取欧赔,亚盘数据 onegame.oddCompanies = getOneGameODD(oneGameListHost, onegame) onegame.handiCompanies = getOneGameHandi(oneGameListHost, onegame) titlestr = ''.join([ str(onegame.beginTime), ':', onegame.leauge, ':', onegame.homeTeam, 'vs', onegame.friendTeam, ' id: ', str(onegame.soccerID), '澳盘: ', str(onegame.orignal_aomenHandi), ' -> ', str(onegame.now_aomenHandi) ]) contentStr += "<h3 style=\"color:red;\">%s</h3>" % (titlestr, ) if len(onegame.nowHandiList) > 1: getHandiDisunion(onegame) time.sleep(3) i = datetime.datetime.now() if gameType == 1: subjectstr = '精简足球分析' elif gameType == 2: subjectstr = '十四场足球分析' else: subjectstr = '初盘分析' subjectstr += ' 盘口不一致' send_mail("%s %s/%s/%s" % (subjectstr, i.year, i.month, i.day), contentStr, 'html')