pengtao 974c3c394e a
2020-01-10 22:37:30 +08:00

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()