114 lines
3.6 KiB
Python
114 lines
3.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# http://mp.kingsome.cn/api/open/ad-uid?gameid=8002&channelid=6001
|
|
from ops.mtga import FromTga, GetTgaConfig
|
|
from ops.mmysql import MysqlBase
|
|
from ops.plog import define_logger
|
|
import logging
|
|
import datetime
|
|
import json
|
|
import pdb
|
|
import sys
|
|
|
|
define_logger("/data/logs/ops/jc_show_collect.log")
|
|
log = logging.getLogger(__name__)
|
|
|
|
DB = {'user': 'mytga', 'pswd': 'gzVwh4HGR68G', 'host': '10.10.3.5', 'db': 'ad'}
|
|
|
|
|
|
class JcShow:
|
|
def __init__(self, kwargs):
|
|
self.time = kwargs.get('time')
|
|
self.gameid = kwargs.get('gameid')
|
|
self.channelid = kwargs.get('channelid')
|
|
self.event_type = "jcshow_data"
|
|
g = GetTgaConfig()
|
|
item = g.get_api_key(self.gameid)
|
|
self.url = item['url']
|
|
#self.tgaid = 99
|
|
self.tgaid = item['tgaid']
|
|
self.suffix = item.get('suffix', 0)
|
|
self.api_key = item.get('api_key', None)
|
|
self.tga = FromTga(self.url, self.api_key)
|
|
self.tga.init_tga_write(self.tgaid)
|
|
|
|
|
|
def write_tga_files(self, data):
|
|
try:
|
|
tga_data = {}
|
|
tga_data['ad_channel'] = data['ad_channel']
|
|
tga_data['amount'] = data['nums']
|
|
tga_data['gameid'] = self.gameid
|
|
tga_data['account_id'] = data['account_id']
|
|
tga_data['#time'] = datetime.datetime.strptime(self.time, "%Y-%m-%d")
|
|
tga_data['channelid'] = self.channelid
|
|
#tga_data['show_time'] = data['show_time']
|
|
self.tga.put_event_data(tga_data, f'rep_{self.event_type}')
|
|
except Exception:
|
|
log.error(f"write 2 tga failed!,context={data}", exc_info=True)
|
|
|
|
def get_data(self):
|
|
sql = f"""SELECT
|
|
button_param
|
|
FROM
|
|
v_event_{self.suffix}
|
|
where
|
|
gameid='{self.gameid}'
|
|
and channel='{self.channelid}'
|
|
and "$part_event"='event_11_31'
|
|
and "button_name" ='jc_show'
|
|
and "$part_date"='{self.time}'
|
|
"""
|
|
data = self.tga.get_data(sql)
|
|
all = list()
|
|
if data:
|
|
for line in data:
|
|
if line:
|
|
all.append(line)
|
|
|
|
all_data = {}
|
|
for line in data:
|
|
data_all = line[0]
|
|
data_dict = json.loads(data_all)
|
|
|
|
if data_dict['ad_channel']:
|
|
for ad_channel in data_dict['ad_channel']:
|
|
all_data[ad_channel] = all_data.get(ad_channel, 0) + 1
|
|
|
|
return all_data
|
|
|
|
|
|
def split_event19(self, data):
|
|
"""6001_1004_oQmL74ij2oq3SyvO6QriuD0EJSjE
|
|
{"ad_id":["1039","1035","1037","1036","1038","1040"],"pos":"1,0,5,0,0","ad_channel":["wxdb103a128e118619","wxf4b70c770560c2fe","wx7d84fae7fe8796d7","wx1dd2f605f4f8496b","wx2f6ebc0586e24d61","wx0e14c9f4c4a06870"]}"""
|
|
for key in data.keys():
|
|
item = {}
|
|
item['ad_channel'] = key
|
|
item['nums'] = data[key]
|
|
item['account_id'] = self.gameid
|
|
#item['show_time'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
self.write_tga_files(item)
|
|
|
|
|
|
def run(self):
|
|
data = self.get_data()
|
|
if data:
|
|
log.info(f"get data from tga gameid={self.gameid},time={self.time},len={len(data)}")
|
|
self.split_event19(data)
|
|
|
|
|
|
def main():
|
|
for gameid in (1001, 1004, 1011, 1013):
|
|
kwargs = {}
|
|
if len(sys.argv) == 2:
|
|
kwargs['time'] = sys.argv[1]
|
|
else:
|
|
kwargs['time'] = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
|
|
kwargs['gameid'] = gameid
|
|
kwargs['channelid'] = 6001
|
|
jc = JcShow(kwargs)
|
|
jc.run()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|