CommonFunction.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import requests
  2. from utils.UrlConfig import headers
  3. import json
  4. import pandas as pd
  5. from utils.DataBaseConfig import *
  6. def get_lower_case_name(name):
  7. lst = []
  8. for index, char in enumerate(name):
  9. if char.isupper() and index != 0:
  10. lst.append("_")
  11. lst.append(char)
  12. return "".join(lst).lower()
  13. def get_app_detail(account_id, url, app_id):
  14. """
  15. 获取应用详情
  16. url:http://localhost:8080/jeecg-boot/ai/aiKuaiShouAppInfo/getAppDetail
  17. 请求方式:post
  18. 入参:accountId 账户id
  19. appId 应用id
  20. 返回参数:
  21. {
  22. "code": 0,
  23. "data": {
  24. "id": 413,
  25. "accountId": 9864909,
  26. "appVersion": "ksjyrlyn-人类一脑涂地大败",
  27. "appName": "233乐园",
  28. "packageName": "com.meta.box",
  29. "platform": 1,
  30. "url": "https://www.233leyuan.com/apiserv/api/deliveryTest/ABTest?id=ksjyrlyn",
  31. "useSdk": 0,
  32. "appPrivacyUrl": "https://webcdn.233leyuan.com/app/useragreement/metax/privacyagreement.html",
  33. "trackUrl": "https://lnk0.com/kYZxds?chn=451&imei_md5=__IMEI2__&androidid_md5_1=__ANDROIDID2__&oaid=__OAID__&adcampaign=__DNAME__&adcreative=__CID__&adgroup=__AID__&did=__DID__&accountid=__ACCOUNTID__&platform=__OS__&clicktime=__TS__&ip=__IP__&useragent=__UA__&channelapp=__CSITE__&callback_url=__CALLBACK__&action=none",
  34. "appMd5": "0b2314c738956dc159ed38dc584ef214",
  35. "imageToken": "marketb3e98f5f68a74870b8d8d814499d6189.jpg",
  36. "status": 2,
  37. "remark": "创建应用成功",
  38. "appId": 3543665,
  39. "createTime": "2021-02-03 16:40:53",
  40. "updateTime": "2021-02-03 16:42:52"},
  41. "message": "success"
  42. }
  43. """
  44. request_data = {"accountId": account_id, "appId": app_id}
  45. request = requests.post(url=url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
  46. request = json.loads(request)
  47. return request
  48. def get_history_video_info(account_id, url, start_time, end_time, video_cnt, related_creative_max_cnt):
  49. """
  50. url:http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryVideoList
  51. 请求方式:POST
  52. remark: 见入参
  53. 入参:accountId 账户id
  54. startDate 开始时间 --(视频的upload_time)
  55. endDate 结束时间 --(视频的upload_time)
  56. createCount 关联创意数 (小于该值)
  57. num 获取数量 (随机num个)
  58. """
  59. request_data = {"accountId": account_id,
  60. "startDate": start_time,
  61. "endDate": end_time,
  62. "num": video_cnt,
  63. "createCount": related_creative_max_cnt}
  64. request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
  65. request = json.loads(request)
  66. return request
  67. def get_new_video_info(account_id, url):
  68. """
  69. url:http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getNewVideoList
  70. 请求方式:POST
  71. remark: 返回 upload_time 在上次调用时间到本次调用时间内的素材(第一次调用返回5分钟前到本次调用时间的素材)
  72. 入参:accountId
  73. """
  74. request_data = {"accountId": account_id}
  75. request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
  76. request = json.loads(request)
  77. return request
  78. def get_missing_video_info(account_id, cnt, url, start_time, end_time, app_version=None):
  79. """
  80. url:"http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getCreateZeroVideoList"
  81. 请求方式:POST
  82. remark: 视频的upload_time 在startTime 和 endTime 之间,创意关联个数为0,order by upload_time asc limit videoCnt
  83. 入参:
  84. accountId: 账户id
  85. videoCnt: 查询数量
  86. startTime: 开始时间
  87. endTime: 结束时间
  88. """
  89. if not app_version:
  90. request_data = {"accountId": account_id, "videoCnt": cnt, "startTime": start_time, "endTime": end_time}
  91. else:
  92. request_data = {"accountId": account_id, "videoCnt": cnt, "startTime": start_time, "endTime": end_time,
  93. 'appVersion': app_version}
  94. request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
  95. request = json.loads(request)
  96. return request
  97. def get_top_video_info(account_id, cnt, start_time, end_time, url):
  98. """
  99. url:http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryTopVideoList
  100. 请求方式:POST
  101. remark: ctop_kuaishou_report_daily_material
  102. 整个项目维度 stat_date 在 startTime 和 endTime, order by sum(charge) desc limit num
  103. 入参:
  104. accountId: 账户id
  105. startTime: 开始时间
  106. endTime: 结束时间
  107. num: 查询数量
  108. 返回:
  109. {
  110. "code": 0,
  111. "data": [
  112. {
  113. "charge": 40871.123,
  114. "video_url": "&di=811c96e5&bp=13890",
  115. "photo_id": "5254011957394409468",
  116. "signature": "4af22090cddc32773c7707de3c652f77",
  117. "channel_type": 0,
  118. "material_type":1, --1:竖版 2:横版
  119. "imageList": ["09f61ca7174160c12d9a68306049ca82","46996bea84287692b3884686a52903ed"]
  120. }
  121. ],
  122. "message": "SUCCESS"
  123. """
  124. request_data = {"accountId": account_id, "num": cnt, "startTime": start_time, "endTime": end_time}
  125. request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
  126. request = json.loads(request)
  127. return request
  128. def get_campaign_and_group_name_rule(account_id):
  129. sql = """select campaign_name, group_name
  130. from ctop_ai_kuaishou_advertiser_strategy
  131. where account_id = %s
  132. and status = 1
  133. limit 1
  134. """ % account_id
  135. df = pd.read_sql(sql, engine)
  136. if df.empty:
  137. return None, None
  138. campaign_name = df['campaign_name'].values[0]
  139. group_name = df['group_name'].values[0]
  140. return campaign_name, group_name