食亨菜单导出浆_yun.py 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. # Author:Clown
  2. # -*- codeing = utf-8 -*-
  3. # @Time :2022/3/16 14:17
  4. # @File: 食亨菜单导出.py
  5. import requests
  6. import pandas as pd
  7. import time
  8. import xlrd
  9. from datetime import date, timedelta
  10. import os
  11. import shutil
  12. import pymysql
  13. import sys
  14. def submit(startTime,endTime,headers,brandId):
  15. url_submit = "https://bi.shihengtech.com/api/excel/order/detail/export/submit"
  16. params_submit = {
  17. "brandId":brandId,
  18. "endTime":endTime,
  19. "labelIds":[],
  20. "orderStatusEnum":"VALID",
  21. "startTime":startTime,
  22. "platforms":[0,1],
  23. "provinces":None,
  24. "cities":None,
  25. "shopIds":None,
  26. "taskBizTypeEnum":"ORDER_DETAIL_DETAIL"}
  27. resp_submit = requests.post(url_submit,json = params_submit,headers = headers)
  28. if resp_submit.json()['code'] == 200:
  29. submit_result = 1
  30. print("成功提交请求")
  31. return submit_result
  32. else:
  33. submit_result = 0
  34. print("请求失败")
  35. return submit_result
  36. def queryTasks(headers):
  37. url_queryTasks = "https://bi.shihengtech.com/api/shtask/queryTasks"
  38. params_queryTasks = {
  39. "pageNo":1,
  40. "pageSize":20
  41. }
  42. resp_queryTasks = requests.post(url_queryTasks,json = params_queryTasks,headers = headers)
  43. data_queryTasks = resp_queryTasks.json()['result']['result']
  44. df_link = data_queryTasks[0]["resultUrl"]
  45. df_name = data_queryTasks[0]["name"]
  46. return df_link,df_name
  47. def excel2parts(excel_file,save_path_forms,save_path_goods):
  48. # 打开excel文件
  49. for a,b,files in os.walk(excel_file,topdown = False):
  50. for file in files:
  51. path = str(excel_file)+'/'+str(file)
  52. workbook=xlrd.open_workbook(r'%s'%str(path))
  53. sheet_names=workbook.sheet_names()
  54. print(file, '正在拆分')
  55. for worksheet_name in sheet_names:
  56. if worksheet_name == '订单明细':
  57. data_xls=pd.read_excel(path,worksheet_name,dtype=str)
  58. data_xls.to_excel(save_path_forms + '/' +str(file)[:-5] + worksheet_name + '.xlsx', index=0,encoding='utf-8-sig')
  59. print(file, worksheet_name, '已拆出')
  60. else:
  61. data_xls = pd.read_excel(path, worksheet_name, dtype=str)
  62. data_xls.to_excel(save_path_goods + '/' + str(file)[:-5] + worksheet_name + '.xlsx', index=0,encoding='utf-8-sig')
  63. print(file, worksheet_name, '已拆出')
  64. def linkTomySql(host,passwd,db_name):
  65. try:
  66. #本地连接为:localhost 服务器连接为:124.222.188.59
  67. db = pymysql.connect(
  68. host=host, user="root",
  69. passwd=passwd,
  70. db=db_name,
  71. charset='utf8mb4')
  72. print('connect to mysql server 成功')
  73. print('------------------------------------')
  74. return db
  75. except:
  76. print("could not connect to mysql server")
  77. db = "连接失败"
  78. return db
  79. def update_scriptrunninglogs(log_date,running_Time,operation_results,table_name,db):
  80. try:
  81. sql = "INSERT INTO scriptrunninglogs VALUES (%s,%s,%s,%s,%s)"#date,running_Time,script_name,operation_results,table_name
  82. script_name = os.path.basename(sys.argv[0])
  83. value = (log_date,running_Time,script_name,operation_results,table_name)
  84. cursor = db.cursor()
  85. cursor.execute(sql, value) # 执行sql语句
  86. db.commit()
  87. cursor.close()
  88. except:
  89. result = "数据库连接失败"
  90. print(result)
  91. if __name__ == '__main__':
  92. log_date = (date.today()).strftime("%Y-%m-%d")
  93. start_run = time.time()
  94. startTime = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")
  95. endTime = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")
  96. # save_path = r'C:\Users\浆小白_何\Desktop\订单详情'
  97. # out_path = r'C:\Users\浆小白_何\Desktop\订单明细拆分'
  98. brandId = '102073'#浆小白
  99. user_token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJ1c2VySWRcIjoyNDYyfSIsImV4cCI6MTY0ODAxNjI5MH0.jTbLT1MrLzyBleTp5jZjnvJzXG7NqSgo5ve_csbXohofdpXyvdxIpZE4POl3jp80T4wqHDwMHGglzfcvze4Byg"
  100. save_path = r'/home/python_flies/orderForms_jxb'
  101. out_path_forms = r'/home/python_flies/orderFormsSplit_forms_jxb'
  102. out_path_goods = r'/home/python_flies/orderFormsSplit_goods_jxb'
  103. # brandId = '105541'#粥小鲜
  104. # user_token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJ1c2VySWRcIjo1MDAyfSIsImV4cCI6MTY0ODA4NzY1NX0.BgZuyoVkZU5y732blbRKmx9oswPUBnNqZJPk_34VxbFEJJlpyzEvoReaVMcXx-H0qJP8_Ry52CaE6uRscNzGhg"
  105. Cookie = "_ga=GA1.2.725502531.1618630729; " \
  106. "Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1625040492,1625123277,1625293351,1625448933; " \
  107. "_gid=GA1.2.296614433.1647229990; " \
  108. "acw_tc=76b20f6a16474114899837204e57f03f3766bf1b4d60819fca83da136ed7e6; " \
  109. "user-token=%s; " % str(user_token) + "_gat_gtag_UA_127759150_3=1"
  110. headers = {
  111. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
  112. "Content-Type": "application/json;charset=UTF-8",
  113. "Accept": "application/json",
  114. "Accept-Encoding": "gzip, deflate, br",
  115. "user-token": user_token,
  116. "Cookie": Cookie}
  117. shutil.rmtree(save_path)
  118. shutil.rmtree(out_path_forms)
  119. shutil.rmtree(out_path_goods)
  120. os.mkdir(save_path)
  121. os.mkdir(out_path_forms)
  122. os.mkdir(out_path_goods)
  123. print('已清空文件夹')
  124. if submit(startTime, endTime, headers,brandId) == 1 :#提交请求成功执信
  125. s = 2
  126. df_link,df_name = queryTasks(headers)
  127. while df_link == None:
  128. time.sleep(2)
  129. print("\rloading %d"%(s),end='')
  130. s += 2
  131. df_link, df_name = queryTasks(headers)
  132. df_data = requests.get(df_link).content
  133. with open(save_path+r'/%s.xlsx' % str(df_name),mode='wb') as f:
  134. f.write(df_data)
  135. print("\n",df_name,'下载成功')
  136. excel2parts(save_path, out_path_forms, out_path_goods)
  137. operation_results = '执行成功'
  138. else:
  139. operation_results = '有未知错误,请检查'
  140. print("有未知错误,请检查")
  141. end_run = time.time()
  142. running_Time = start_run - end_run
  143. db = linkTomySql('localhost', '111???hxx', 'zuzu_data')
  144. update_scriptrunninglogs(log_date, running_Time, operation_results, "table_name", db)