123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # Author renyupeng
- # coding=utf-8
- # @Time : 2022/2/9 6:01 下午
- # @Site :
- # @File : BytedanceMaterialRequest.py
- # @Software: PyCharm
- # @contact: renyupeng@c-top.com.cn
- # @Tel 1501435553
- import json
- import logging
- import random
- import requests
- from Apietl.conn.TidbConn import TidbConn
- from Apietl.utlis.Utils import Utils
- class BytedanceMaterialRequest:
- def __init__(self):
- self.conn = TidbConn.get_connection()
- self.parm = Utils.get_args()
- self.start_time = self.parm[0]
- self.end_time = self.parm[1]
- """随机获取一个服务器ip"""
- def range_hosts(self):
- numList = [201, 204]
- num = random.sample(numList, 1)[0]
- url = """http://192.168.0.{num}:8085/bytedance/bytedanceController/getBytedanceVideoByAccountId""".format(
- num=num)
- return url
- """切割数组长度"""
- @staticmethod
- def list_split(items, n):
- return [items[i:i + n] for i in range(0, len(items), n)]
- def getMaterialAdvertiser(self):
- try:
- sql = """
- SET GLOBAL group_concat_max_len=102400;
- select account_id,group_concat(distinct material_id) from application.bytedance_material_video_report_daily_dw
- where stat_datetime >= {start_time} and stat_datetime<={end_time}
- and signature is null
- group by account_id
- """.format(start_time=self.start_time, end_time=self.end_time)
- results = TidbConn.exec_sql(self.conn, sql)
- return results
- except Exception as e:
- logging.error("getBytedanceVideoByAccountId Exception:{}.".format(e))
- return None
- def handler(self):
- results = self.getMaterialAdvertiser()
- headers = {
- 'Content-Type': 'application/json'
- }
- for result in results:
- url = self.range_hosts()
- account_id = result[0]
- # print(account_id)
- material_id = result[1]
- material_ids = material_id.split(',')
- if len(material_ids) >= 100:
- material_list = BytedanceMaterialRequest.list_split(material_ids, 50)
- for info in material_list:
- info = list(map(int, info))
- req_data = {"accountId": account_id, "materialIds": info}
- data = json.dumps(req_data)
- try:
- repo = requests.post(url=url, data=data, headers=headers)
- logging.info("post getBytedanceVideoByAccountId response:{}".format(repo))
- except Exception as e:
- logging.error("""post getBytedanceVideoByAccountId error {e}""".format(e=e))
- else:
- try:
- req_datas = {"accountId": account_id, "materialIds": list(map(int, material_ids))}
- datas = json.dumps(req_datas)
- repo = requests.post(url=url, data=datas, headers=headers)
- logging.info("post getBytedanceVideoByAccountId response:{}".format(repo))
- except Exception as e:
- logging.error("""post getBytedanceVideoByAccountId error {e}""".format(e=e))
- if __name__ == '__main__':
- BytedanceMaterialRequest().handler()
|