# -*- coding: utf-8 -*- import requests import logging import json log = logging.getLogger(__name__) import pdb from urllib.parse import unquote, quote, urlencode def my_quote(data): if isinstance(data, dict): return urlencode(data) elif isinstance(data, str): return quote(data) class SS_Virtual_command: def __init__(self): self.ss_virtual_url = "http://10.10.3.14:8993/v1/ta/meta/prop/virtual/dict/create" self.method = "post" self.loginName = "root" self.password = "kingsome2016" def run_cmd(self, cmd): import subprocess msg = "Starting run: %s " % cmd print("run_cmd {0}".format(msg)) cmdref = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) output, error_info = cmdref.communicate() if cmdref.returncode != 0: if isinstance(error_info, list) or isinstance(error_info, tuple): error_info = error_info[0] msg = "RUN %s ERROR,error info: %s" % (cmd, error_info) print(f"{msg},error output={output}") return False else: print(f"Run Success,output was {output}") return True def upload_gameid(self): filename = "/data/git/ops_interface/myops/csv/gameid.csv" projectId = int(19) createParam = {"commonHeader": {"projectId": 19}, "mainColumn": {"property": {"columnName": "gameid", "tableType": 0}}, "columns": [{"property": {"columnName": "gameid", "columnDesc": "主键ID", "selectType": "string"}}, {"property": {"columnName": "gameid_china", "columnDesc": "游戏名称", "selectType": "string"}}]} body = {"projectId": projectId, "createParam": createParam, "loginName": self.loginName, "password": self.password} quote_body = my_quote(body) cmd = f"curl --header 'Accept: application/json' --form 'file=@{filename}' '{self.ss_virtual_url}?{quote_body}'" print(cmd) if self.run_cmd(cmd): return True else: return False def upload_2001_b_n(self): filename = "/data/git/ops_interface/myops/csv/2001_b_n.csv" projectId = int(22) createParam = {"commonHeader": {"projectId": 22}, "mainColumn": {"property": {"columnName": "#vp@b_n", "tableType": 0, "subTableType": "vprop_sql"}}, "columns": [{"property": {"columnName": "b_n", "columnDesc": "跳转appid", "selectType": "string"}}, {"property": {"columnName": "b_n_china", "columnDesc": "跳转中文名", "selectType": "string"}}]} body = {"projectId": projectId, "createParam": createParam, "loginName": self.loginName, "password": self.password} quote_body = my_quote(body) cmd = f"curl --header 'Accept: application/json' --form 'file=@{filename}' '{self.ss_virtual_url}?{quote_body}'" print(cmd) if self.run_cmd(cmd): return True else: return False def upload_1004_button_name(self): filename = "/data/git/ops_interface/myops/csv/1004_button_name.csv" projectId = int(19) createParam = {"commonHeader": {"projectId": 19}, "mainColumn": {"property": {"columnName": "#vp@button_name", "tableType": 0, "subTableType": "vprop_sql"}}, "columns": [{"property": {"columnName": "button_name", "columnDesc": "点击按钮属性", "selectType": "string"}}, {"property": {"columnName": "button_name_cn", "columnDesc": "点击按钮属性(中文)", "selectType": "string"}}]} body = {"projectId": projectId, "createParam": createParam, "loginName": self.loginName, "password": self.password} quote_body = my_quote(body) cmd = f"curl --header 'Accept: application/json' --form 'file=@{filename}' '{self.ss_virtual_url}?{quote_body}'" print(cmd) if self.run_cmd(cmd): return True else: return False class Mp2shushu(): def __init__(self, gameid, channel): self.mp_url = f"http://10.10.5.4:2333/api/open/promotion/co-list?channelid={channel}&gameid={gameid}" self.filename = "/data/git/ops_interface/myops/csv/2001_b_n.csv" def get_ad_list(self): r = requests.get(self.mp_url) if r.status_code == requests.codes.ok: return self.split_data(r.json()) else: return None def split_data(self, data): log.info(f"2 {data['result']}") try: result = data['result'] begin = "b_n,b_n_china" text = "" for key in result.keys(): text += f"{key},{result[key]}\n" result_new = f"{begin}\n{text}" except Exception: log.error(f"split {data} failed!", exc_info=True) result_new = None return result_new def write2csv(self, data): with open(self.filename, 'w') as f: f.write(data) def upload2ss(self): ss = SS_Virtual_command() ss.upload_2001_b_n() def run(self): try: data = self.get_ad_list() self.write2csv(data) self.upload2ss() except Exception: log.error("mp2ss failed", exc_info=True) def main(): mp = Mp2shushu(2001, 6001) mp.run() if __name__ == "__main__": main()