# -*- coding: utf-8 -*- from ops.mtga import FromTga from ops.plog import define_logger from ops.mmysql import MysqlBase import logging import datetime import pdb import sys from bson.objectid import ObjectId import json define_logger("/data/logs/ops/taptap_report.log") log = logging.getLogger(__name__) import sys class TapTapReport: def __init__(self, day): self.db_conf = {'user': 'mytga', 'pswd': 'gzVwh4HGR68G', 'host': '10.10.3.5', 'db': 'external_data'} self.url = "http://10.10.3.17:8992/querySql" self.api_secret = "n9H4R32ZcjtSeN89ljCY6ESzTmOlnwwnOB3r4YsggnP5M1AXLtKtiS4sS1KKLOEQ" self.tga = FromTga(url=self.url, token=self.api_secret) self.day = day self.bday = (datetime.datetime.strptime(self.day, "%Y-%m-%d") - datetime.timedelta(days=1)).strftime('%Y-%m-%d') def build_report(self): all = dict() gameid_order = dict() gameid_info = dict() for item in (self.day, self.bday): b_d = self.split_order_data(item) for key in b_d: gameid_order.setdefault(key, {}).update(b_d[key]) for key in gameid_order: all.setdefault(key, {})['gameid'] = key.split("#")[0] all.setdefault(key, {})['catename'] = key.split('#')[1] all.setdefault(key, {})['diff_order'] = gameid_order[key].get(self.day, 301) - gameid_order[key].get( self.bday, 301) print(all) def split_order_data(self, day): all_data = dict() mydb = MysqlBase(**self.db_conf) sql = f"select gameid,catename,`order`,date from taptap_order WHERE date='{day}'" data = mydb.query(sql) if data: for line in data: try: gameid, catename, order, date = line key = f"{str(gameid)}#{catename}" temp = {} temp[date] = order all_data[key] = temp except Exception: log.error(f"split line failed,values={line}", exc_info=True) return all_data def get_order(self): sql = f""" SELECT gameid, catename, "order" FROM v_event_25 WHERE "$part_date"='{self.day}' """ data = self.tga.get_data(sql) if data: self.order2mysql(data) return True else: return False def order2mysql(self, data): mydb = MysqlBase(**self.db_conf) table_name = "taptap_order" for line in data: temp = {} try: temp["gameid"], temp["catename"], temp["order"] = line temp["date"] = self.day mydb.insert(table_name, temp) except Exception: log.error(f"instert {line} 2 db failed", exc_info=True) def main(): if len(sys.argv) == 2: day = sys.argv[1] else: day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') tap = TapTapReport(day) #tap.get_order() tap.build_report() if __name__ == "__main__": main()