#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Jun 4 15:06:05 2020 @author: chencong """ import requests import hashlib import time from urllib import parse import datetime import json import math import pymysql import random from apscheduler.schedulers.blocking import BlockingScheduler import account_list as al import token_list as tl import smtplib from email.mime.text import MIMEText def md5value(s): md5 = hashlib.md5() md5.update(s.encode("utf-8")) return md5.hexdigest() def get_yuewen_order(st, et): t = () time1 = time.time() url = 'https://open.yuewen.com/cpapi/wxRecharge/querychargelog' version = 1 secert_list = al.yuewen_account_list for secert in secert_list: start_time = st end_time = et email = secert[0] appsecert = secert[1] for i in range((et - st) // 86400 + 1): timestamp = int(time.time()) s = '' page = 1 order_status = 2 data = { 'email': email, 'version': version, 'timestamp': timestamp, 'start_time': start_time, 'end_time': end_time, 'page': page, 'order_status': order_status } # 'last_min_id':last_min_id, # 'last_max_id':last_max_id, # 'total_count':total_count, # 'last_page':last_page} sorted_data = sorted(data.items()) for k, v in sorted_data: s = s + str(k) + str(v) sign = md5value(appsecert + s).upper() data1 = { 'email': email, 'version': version, 'timestamp': timestamp, 'start_time': start_time, 'end_time': end_time, 'page': page, 'order_status': order_status, 'sign': sign } list1 = requests.get(url=url, params=data1) total_count = list1.json()['data']['total_count'] last_min_id = list1.json()['data']['min_id'] last_max_id = list1.json()['data']['max_id'] last_page = list1.json()['data']['page'] if total_count > 0: for x in list1.json()['data']['list']: y = {} dtime = datetime.datetime.strptime(x['order_time'], "%Y-%m-%d %H:%M:%S") y['date'] = ((int(time.mktime(dtime.timetuple())) + 8 * 3600) // 86400) * 86400 - 8 * 3600 y['platform'] = '阅文' y['channel'] = x['app_name'] y['from_novel'] = x['book_name'] y['user_id'] = x['openid'] y['stage'] = '' y['channel_id'] = 0 y['order_time'] = x['order_time'] y['amount'] = x['amount'] y['reg_time'] = x['reg_time'] y['order_id'] = x['order_id'] """ del x['app_name'] del x['order_status'] del x['order_type'] del x['openid'] del x['user_name'] del x['sex'] del x['channel_name'] del x['book_id'] del x['book_name'] del x['report_status'] if y['order_time'] != time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(et)): """ y = sorted(y.items(), key=lambda item: item[0]) y = dict(y) y = tuple(y.values()) t = t + ((y),) if total_count > 100: for page in range(2, math.ceil(total_count / 100) + 1): data = { 'email': email, 'version': version, 'timestamp': timestamp, 'start_time': start_time, 'end_time': end_time, 'page': page, 'last_min_id': last_min_id, 'last_max_id': last_max_id, 'total_count': total_count, 'last_page': last_page, 'order_status': order_status } sorted_data = sorted(data.items()) s1 = '' for k, v in sorted_data: s1 = s1 + str(k) + str(v) sign = md5value(appsecert + s1).upper() data2 = { 'email': email, 'version': version, 'timestamp': timestamp, 'start_time': start_time, 'end_time': end_time, 'page': page, 'last_min_id': last_min_id, 'last_max_id': last_max_id, 'total_count': total_count, 'last_page': last_page, 'order_status': order_status, 'sign': sign } list2 = requests.get(url=url, params=data2) for x in list2.json()['data']['list']: y = {} dtime = datetime.datetime.strptime(x['order_time'], "%Y-%m-%d %H:%M:%S") y['date'] = ((int(time.mktime(dtime.timetuple())) + 8 * 3600) // 86400) * 86400 - 8 * 3600 y['platform'] = '阅文' y['channel'] = x['app_name'] y['from_novel'] = x['book_name'] y['user_id'] = x['openid'] y['stage'] = '' y['channel_id'] = 0 y['order_time'] = x['order_time'] y['amount'] = x['amount'] y['reg_time'] = x['reg_time'] y['order_id'] = x['order_id'] """ del x['report_status'] del x['app_name'] del x['order_status'] del x['order_type'] del x['openid'] del x['user_name'] del x['sex'] del x['channel_name'] del x['book_id'] del x['book_name'] if y['order_time'] != time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(et)): """ y = sorted(y.items(), key=lambda item: item[0]) y = dict(y) y = tuple(y.values()) t = t + ((y),) total_count = list2.json()['data']['total_count'] last_min_id = list2.json()['data']['min_id'] last_max_id = list2.json()['data']['max_id'] last_page = list2.json()['data']['page'] cost_time = round((time.time() - time1) / 60, 1) print('get_yuewen_order:', len(t), 'cost_minutes:', cost_time) return t def get_zhangdu_order(st, et): time1 = time.time() secert_list = al.zhangdu_account_list t = () url = 'https://api.zhangdu520.com/channel/getorder' for item in secert_list: # 分渠道 uid = item[0] appsecert = item[1] channel = item[2] timestamp = int(time.time()) sign = md5value(str(uid) + '&' + appsecert + '&' + str(timestamp)) page = 1 starttime = st endtime = et for x in range((et - st) // 86400 + 1): # 分时段 Params = {'uid': uid, 'timestamp': timestamp, 'sign': sign, 'starttime': starttime, 'endtime': endtime } list1 = requests.get(url=url, params=Params) pageCount = list1.json()['data']['pageCount'] if pageCount > 0: for a in range(1, pageCount + 1): # 分页 page = a Params = { 'uid': uid, 'timestamp': timestamp, 'sign': sign, 'starttime': starttime, 'endtime': endtime, 'page': page } list2 = requests.get(url=url, params=Params).json()['data']['list'] for b in list2: c = {} c['channel_id'] = uid c['order_id'] = str(b['orderno']) c['order_time'] = b['ctime'] c['user_id'] = b['openid'] c['platform'] = '掌读' c['channel'] = channel c['stage'] = '' c['from_novel'] = '' c['reg_time'] = b['regtime'] c['date'] = ((int(b['ctime']) + 8 * 3600) // 86400) * 86400 - 8 * 3600 c['amount'] = b['amount'] """ del b['openid'] del b['regtime'] del b['ip'] del b['ua'] del b['id'] del b['ctime'] del b['userid'] del b['orderno'] del b['source'] del b['sourceid'] """ if b['status'] == '1' and int(c['order_time']) < et: del b['status'] x = sorted(c.items(), key=lambda item: item[0]) x = dict(x) x = tuple(x.values()) t = t + ((x),) cost_time = round((time.time() - time1) / 60, 1) print('get_zhangdu_order:', len(t), 'cost_minutes:', cost_time) return t def get_huasheng_order(st, et): time1 = time.time() apikey_list = al.huasheng_account_list url = 'https://vip.rlcps.cn/api/getMerchants' t = () for key in apikey_list: # 获取每个vip账号下的channel_id apiKEY = key[0] apiSecurity = key[1] stage = key[2] timestamp = str(int(time.time())) sign = md5value(apiKEY + timestamp + apiSecurity).upper() data = {'apiKey': apiKEY, 'apiSecurity': apiSecurity, 'timestamp': timestamp, 'sign': sign } list0 = requests.post(url, data).json() for merchant in list0['data']: merchant_id = merchant['merchant_id'] merchant_name = merchant['merchant_name'] url1 = 'https://vip.rlcps.cn/api/orderList' start_time = st for i in range((et - st) // 86400 + 1): date = time.strftime("%Y-%m-%d", time.localtime(start_time)) sign = md5value(apiKEY + date + str(merchant_id) + timestamp + apiSecurity).upper() page = 1 data1 = { 'apiKey': apiKEY, 'apiSecurity': apiSecurity, 'timestamp': timestamp, 'date': date, 'merchant_id': merchant_id, 'sign': sign, 'page': page } list1 = requests.post(url1, data1).json() if 'data' in list1.keys() and len(list1['data']) > 0: for i in range(int(math.ceil(list1['count'] / 500))): data2 = { 'apiKey': apiKEY, 'apiSecurity': apiSecurity, 'timestamp': timestamp, 'date': date, 'merchant_id': merchant_id, 'sign': sign, 'page': page } list2 = requests.post(url1, data2).json() for x in list2['data']: if x['order_status'] == 1: t1 = time.strptime(x['pay_at'], "%Y-%m-%d %H:%M:%S") ts = int(time.mktime(t1)) if ts >= st and ts < et: y = {} # dtime = datetime.datetime.strptime(x['pay_at'],"%Y-%m-%d") # y['date']= ((int(time.mktime(dtime.timetuple()))+8*3600)//86400)*86400-8*3600 y['order_id'] = x['trans_id'] y['order_time'] = x['pay_at'] y['reg_time'] = x['join_at'] y['date'] = (start_time + 8 * 3600) // 86400 * 86400 - 8 * 3600 y['channel'] = merchant_name y['channel_id'] = merchant_id y['from_novel'] = x['book_name'] y['platform'] = '花生' y['stage'] = stage y['user_id'] = x['openid'] y['amount'] = x['amount'] """ del x['order_num'] del x['book_name'] del x['trans_id'] del x['pay_at'] del x['join_at'] del x['subscribe_at'] del x['openid'] del x['charge_count'] del x['book_id'] del x['order_status'] del x['user_name'] del x['spread_name'] del x['request_at'] if y['order_time'] != time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(et)): """ y = sorted(y.items(), key=lambda item: item[0]) y = dict(y) y = tuple(y.values()) t = t + ((y),) page = page + 1 cost_time = round((time.time() - time1) / 60, 1) print('get_huasheng_order:', len(t), 'cost_minutes:', cost_time) return t def get_zzy_order(st, et): time1 = time.time() API_list = al.zzy_account_list r = () for x in API_list: my_key = x[0] secert = x[1] stage = x[2] my_sign = md5value(secert + 'key=' + my_key) url = 'https://openapi.818tu.com/partners/channel/channels/list?' parameter = 'key=' + my_key + '&sign=' + my_sign channel_list = requests.get(url + parameter) # 获取子渠道列表 if 'data' in channel_list.json().keys(): items = channel_list.json()['data']['items'] elif len(x) > 3: my_key = x[3] secert = x[4] my_sign = md5value(secert + 'key=' + my_key) url = 'https://openapi.818tu.com/partners/channel/channels/list?' parameter = 'key=' + my_key + '&sign=' + my_sign channel_list = requests.get(url + parameter) items = channel_list.json()['data']['items'] else: print(channel_list.json()) items = [] if items != []: for item in items: # 获取channel_id 后逐个拉取历史orders channel_id = item['id'] channel = item['nickname'] status = str(1) per_page = str(1000) limit_time = et get_time = st lt = parse.urlencode({'created_at[lt]': limit_time}) gt = parse.urlencode({'created_at[gte]': get_time}) url_1 = 'https://openapi.818tu.com/partners/channel/orders/list?' my_sign_1 = md5value(secert + 'channel_id=' + str( channel_id) + '&created_at[gte]=' + get_time + '&created_at[lt]=' + limit_time + '&key=' + my_key + '&per_page=' + per_page + '&status=' + status) parameter_1 = 'channel_id=' + str( channel_id) + '&' + gt + '&' + lt + '&per_page=' + per_page + '&status=' + status + '&key=' + my_key + '&sign=' + my_sign_1 orders = requests.get(url_1 + parameter_1) t = orders.json()['data']['count'] // int(per_page) + 1 for page in range(1, t + 1): my_sign_2 = md5value(secert + 'channel_id=' + str( channel_id) + '&created_at[gte]=' + get_time + '&created_at[lt]=' + limit_time + '&key=' + my_key + '&page=' + str( page) + '&per_page=' + per_page + '&status=' + status) parameter_2 = 'channel_id=' + str(channel_id) + '&' + gt + '&' + lt + '&page=' + str( page) + '&per_page=' + per_page + '&status=' + status + '&key=' + my_key + '&sign=' + my_sign_2 orders_1 = requests.get(url_1 + parameter_2) b = orders_1.json()['data']['items'] for a in b: c = {} c['user_id'] = str(a['member']['openid']) c['channel'] = channel c['reg_time'] = a['member']['created_at'] c['channel_id'] = channel_id c['amount'] = round(a['price'] / 100, 2) c['order_id'] = str(a['id']) c['order_time'] = a['created_at'] c['platform'] = '掌中云' dtime = datetime.datetime.strptime(a['created_at'][0:10], "%Y-%m-%d") c['date'] = ((int(time.mktime(dtime.timetuple())) + 8 * 3600) // 86400) * 86400 - 8 * 3600 c['stage'] = stage if str(a['from_novel_id']) != 'None': c['from_novel'] = a['from_novel']['title'] else: c['from_novel'] = 'None' """ del[a['member']] del[a['referral_link_id']] del[a['id']] del[a['created_at']] del[a['paid_at']] del a['border_id'] del a['from_novel_id'] del a['status'] del a['price'] del a['agent_uid'] """ x = sorted(c.items(), key=lambda item: item[0]) x = dict(x) x = tuple(x.values()) r = r + ((x),) cost_time = round((time.time() - time1) / 60, 1) print('get_zzy_order:', len(r), 'cost_minutes:', cost_time) return r def get_ysg_order(st, et): time1 = time.time() key_list = al.ysg_account_list url = 'https://novel.youshuge.com/v2/open/orders' o = () for key in key_list: host_name = key[0] channel_id = key[1] secert_key = key[2] channel = key[3] stage = key[4] timestamp = int(time.time()) start_date = time.strftime("%Y-%m-%d", time.localtime(st)) end_date = time.strftime("%Y-%m-%d", time.localtime(et + 86400)) page = 1 str1 = 'channel_id=' + str(channel_id) + '&end_date=' + end_date + '&host_name=' + host_name + '&page=' + str( page) + '&pay_status=1' + '&start_date=' + start_date + '&time=' + str(timestamp) + '&key=' + secert_key sign = md5value(str1).upper() data = { 'sign': sign, 'host_name': host_name, 'time': timestamp, 'channel_id': channel_id, 'page': page, 'pay_status': 1, 'start_date': start_date, 'end_date': end_date } r = requests.post(url, data).json() if 'data' in r.keys(): if len(r['data']) > 0: for i in range((r['data'][0]['count'] - 1) // 100 + 1): timestamp = int(time.time()) str1 = 'channel_id=' + str( channel_id) + '&end_date=' + end_date + '&host_name=' + host_name + '&page=' + str( page) + '&pay_status=1' + '&start_date=' + start_date + '&time=' + str( timestamp) + '&key=' + secert_key sign = md5value(str1).upper() data2 = { 'sign': sign, 'host_name': host_name, 'time': timestamp, 'channel_id': channel_id, 'page': page, 'pay_status': 1, 'start_date': start_date, 'end_date': end_date } r2 = requests.post(url, data2).json() if 'data' in r2.keys(): if len(r2['data']) > 0: for x in r2['data']: t1 = time.strptime(x['create_time'], "%Y-%m-%d %H:%M:%S") ts = int(time.mktime(t1)) if ts >= st and ts < et: y = {} y['order_id'] = x['order_num'] y['amount'] = round(int(x['price']) / 100, 2) y['order_time'] = x['create_time'] y['channel'] = channel y['from_novel'] = x['book_name'] y['stage'] = stage y['user_id'] = x['openid'] y['channel_id'] = channel_id dtime = datetime.datetime.strptime(x['create_time'][0:10], "%Y-%m-%d") y['date'] = ((int( time.mktime(dtime.timetuple())) + 8 * 3600) // 86400) * 86400 - 8 * 3600 y['platform'] = '悠书阁' y['reg_time'] = x['reg_time'] y = sorted(y.items(), key=lambda item: item[0]) y = dict(y) y = tuple(y.values()) o = o + ((y),) page = page + 1 cost_time = round((time.time() - time1) / 60, 1) print('get_ysg_order:', len(o), 'cost_minutes:', cost_time) return o def daily_reports_get(access_token, account_id, level, fields): interface = 'daily_reports/get' url = 'https://api.e.qq.com/v1.1/' + interface common_parameters = { 'access_token': access_token, 'timestamp': int(time.time()), 'nonce': str(time.time()) + str(random.randint(0, 999999)), } parameters = { "account_id": account_id, "level": level, "date_range": { "start_date": time.strftime("%Y-%m-%d", time.localtime()), "end_date": time.strftime("%Y-%m-%d", time.localtime()) }, "page": 1, "page_size": 1000, "fields": fields } parameters.update(common_parameters) for k in parameters: if type(parameters[k]) is not str: parameters[k] = json.dumps(parameters[k]) r = requests.get(url, params=parameters) return r.json() def get_daily_vx(): token_list_v = tl.token_list_vx t = () time1 = time.time() for y in token_list_v: c = daily_reports_get(y[2], y[0], "REPORT_LEVEL_ADVERTISER_WECHAT", ( 'date', 'cost', 'view_count', 'valid_click_count', 'ctr', 'official_account_follow_rate', 'order_amount', 'order_roi', 'order_count', 'order_rate', 'order_unit_price', 'web_order_cost', 'first_day_order_amount', 'first_day_order_count')) if 'data' in c.keys(): for d in c['data']['list']: d['account_id'] = y[0] x = tuple(d.values()) t = t + ((x),) cost_time = round((time.time() - time1) / 60, 1) print('get_daily_vx:', len(t), 'cost_minutes:', cost_time) return t def get_daily_qq(): token_list_q = tl.token_list_qq t = () time1 = time.time() for x in token_list_q: a = daily_reports_get(x[2], x[0], "REPORT_LEVEL_ADVERTISER", ( 'date', 'view_count', 'valid_click_count', 'ctr', 'cpc', 'cost', 'web_order_count', 'web_order_rate', 'web_order_cost', 'follow_count', 'order_amount', 'order_roi', 'platform_page_view_count', 'web_commodity_page_view_count', 'from_follow_uv')) for b in a['data']['list']: b['account_id'] = x[0] y = tuple(b.values()) t = t + ((y),) cost_time = round((time.time() - time1) / 60, 1) print('get_qq_order:', len(t), 'cost_minutes:', cost_time) return t def mysql_insert_order(data): db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com', 'superc', 'Cc719199895', 'quchen_text') cursor = db.cursor() time1 = time.time() # sql = 'insert ignore into quchen_text.order (amount,channel,channel_id,date,from_novel,order_id,order_time,platform,reg_time,stage,user_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);' sql = 'replace into quchen_text.order(amount,channel,channel_id,date,from_novel,order_id,order_time,platform,reg_time,stage,user_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);' try: cursor.executemany(sql, data) db.commit() cost_time = round((time.time() - time1) / 60, 1) print('insert_order access', len(data), 'cost_minutes:', cost_time) except: db.rollback() print('insert_order defeat') def mysql_insert_daily_vx(data): db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com', 'superc', 'Cc719199895', 'quchen_text') cursor = db.cursor() time1 = time.time() sql1 = 'delete from daily_vx where date = %s' sql2 = 'insert ignore into daily_vx (date,cost,view_count,valid_click_count,ctr,official_account_follow_rate,order_amount,order_roi,order_count,order_rate,order_unit_price,web_order_cost,first_day_order_amount,first_day_order_count,account_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);' try: cursor.execute(sql1, str(time.strftime("%Y-%m-%d", time.localtime()))) db.commit() print('clear_daily_vx access') except: print('clear_daily_vx defeat') try: cursor.executemany(sql2, data) db.commit() cost_time = round((time.time() - time1) / 60, 1) print('insert_daily_vx access', len(data), 'cost_minutes:', cost_time) except: db.rollback() print('insert_daily_vx defeat') def mysql_insert_daily_qq(data): db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com', 'superc', 'Cc719199895', 'quchen_text') cursor = db.cursor() time1 = time.time() sql1 = 'delete from daily_qq where date = %s' sql2 = 'insert ignore into daily_qq (date,view_count,valid_click_count,ctr,cpc,cost,web_order_count,web_order_rate,web_order_cost,follow_count,order_amount,order_roi,platform_page_view_count,web_commodity_page_view_count,from_follow_uv,account_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);' try: cursor.execute(sql1, str(time.strftime("%Y-%m-%d", time.localtime()))) db.commit() print('clear_daily_qq access') except: print('clear_daily_qq defeat') try: cursor.executemany(sql2, data) db.commit() cost_time = round((time.time() - time1) / 60, 1) print('insert_daily_qq access', len(data), 'cost_minutes:', cost_time) except: db.rollback() print('insert_daily_qq defeat') def send_waring_email(): msg_Sender = '2091961210@qq.cm' # 发送方邮箱 msg_code = 'ylltzynbshmufdeh' # 发送方邮箱的授权码 msg_Receiver = '2091961210@qq.cm' # 收件人邮箱 subject = "数据库未按时更新" # 主题 content = "数据库未按时更新" # 正文 msg = MIMEText(content, _charset="utf-8") msg['Subject'] = subject msg['From'] = msg_Sender msg['To'] = msg_Receiver try: s = smtplib.SMTP_SSL("smtp.qq.com", 465) # 邮件服务器及端口号 s.login(msg_Sender, msg_code) s.sendmail(msg_Sender, msg_Receiver, msg.as_string()) print("发送成功") except Exception as e: print("发送失败", e) finally: s.quit() def update_check(): st_unix = int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600) et_unix = int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600) # et_unix = et_unix - 1 st_dt = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(st_unix)) + '+08:00' et_dt = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(et_unix)) + '+08:00' db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com', 'superc', 'Cc719199895', 'quchen_text') cursor = db.cursor() sql4 = "select platform,round(max(if(platform='掌读',order_time,unix_timestamp(order_time))),0) from quchen_text.order where date=%s and platform not in ('阳光','悠书阁') group by platform " data = (int((time.time() + 8 * 3600) // 86400 * 86400 - 8 * 3600)) try: cursor.execute(sql4, data) db.commit() x = cursor.fetchall() print('access', x) except: db.rollback() print('defeat', x) zzy = x[0][1] // 3600 * 3600 zhangdu = x[1][1] // 3600 * 3600 huasheng = x[2][1] // 3600 * 3600 yuewen = x[3][1] // 3600 * 3600 if zzy < int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600): mysql_insert_order(get_zzy_order(st_dt, et_dt)) if zhangdu < int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600): mysql_insert_order(get_zhangdu_order(st_unix, et_unix)) if huasheng < int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600): mysql_insert_order(get_huasheng_order(st_unix, et_unix)) if yuewen < int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600): mysql_insert_order(get_yuewen_order(st_unix, et_unix - 1)) try: cursor.execute(sql4, data) db.commit() z = cursor.fetchall() print('access', z) except: db.rollback() print('defeat', z) a = [] for k in x: a.append(k[1]) y = min(a) // 3600 * 3600 if y < int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600): send_waring_email() def start_order_job(): st_unix = int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600) et_unix = int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600) # et_unix = et_unix - 1 st_dt = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(st_unix)) + '+08:00' et_dt = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(et_unix)) + '+08:00' print(st_dt, et_dt) mysql_insert_order(get_yuewen_order(st_unix, et_unix - 1)) mysql_insert_order(get_zhangdu_order(st_unix, et_unix)) mysql_insert_order(get_ysg_order(st_unix, et_unix)) mysql_insert_order(get_zzy_order(st_dt, et_dt)) mysql_insert_order(get_huasheng_order(st_unix, et_unix)) update_check() def start_cost_job(): st_unix = int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600 - 3600) et_unix = int((time.time() + 8 * 3600) // 3600 * 3600 - 8 * 3600) # et_unix = et_unix - 1 st_dt = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(st_unix)) + '+08:00' et_dt = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(et_unix)) + '+08:00' print(st_dt, et_dt) mysql_insert_daily_vx(get_daily_vx()) mysql_insert_daily_qq(get_daily_qq()) start_order_time = '2020-09-24 17:05:00' start_cost_time = '2020-09-24 17:35:00' if __name__ == '__main__': scheduler = BlockingScheduler() scheduler.add_job(start_order_job, 'interval', max_instances=10, hours=1, start_date=start_order_time) scheduler.add_job(start_cost_job, 'interval', max_instances=10, hours=1, start_date=start_cost_time) scheduler.start()