154 lines
5.3 KiB
Python
154 lines
5.3 KiB
Python
# -*- 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/ops/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/ops/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/ops/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()
|