diff --git a/daily_report/dreport.py b/daily_report/dreport.py index 42b3edb..adff05e 100644 --- a/daily_report/dreport.py +++ b/daily_report/dreport.py @@ -14,7 +14,7 @@ import requests from ops.mmysql import MysqlBase import copy import json - +from collections import defaultdict db_conf = {'user': 'mytga', 'pswd': 'gzVwh4HGR68G', 'host': '10.10.3.5', 'db': 'external_data'} @@ -109,12 +109,12 @@ def send_tapweekly(): recipients = ["pengtao@kingsome.cn"] msg = Message(title, sender=sender, recipients=recipients) twr = TapWeeklyReport(day) - data = twr.run() - print(data) + data, tags = twr.run() + # print(data) # data[day] = day msg.subject = f"TAPTAP_{day}_游戏周报" if data: - msg.html = render_template('tap_weekly.html', data=data, day=day) + msg.html = render_template('tap_weekly.html', data=data, day=day, tags=tags) thread = Thread(target=send_async_email, args=[app, msg]) thread.start() @@ -524,7 +524,6 @@ class TapWeeklyReport: for key in self.all_type.keys(): try: data_key = data.get(key, []) - #print(f"data_key={data_key}") temp = {} temp["name"] = self.all_type.get(key).get("name") rows = self.base_head + self.all_type.get(key).get("row") + self.base_end @@ -533,7 +532,6 @@ class TapWeeklyReport: temp["row_name"].append(self.row_cn.get(k)) temp["row_data"] = [] for line in data_key[0]: - #print(f"line={line}") tt = {} # (30802, '死战骑士团', 56, 56, 56, 0, 5.1, '付费,策略,单机', 8984, 0, 7794, 0, 272, 34) tt['gameid'], tt['title'], tt['order'], tt['min_order'], tt['max_order'], tt['diff_order'],tt['score'], tt['tags'], tt['watch'], tt['download'], tt['sell'], tt['reserve'], tt['review'],tt['topic'] = line @@ -549,8 +547,23 @@ class TapWeeklyReport: r_data.append(temp) except Exception: log.error(f"struct data with {line} Failed", exc_info=True) - return r_data + new_tags = dict() + if r_data: + new_tags = self.collect_tags(r_data) + return r_data, new_tags + def collect_tags(self, data): + row_tags = dict() + for line in data: + try: + data_type = line.get("name") + for items in line.get("row_data"): + for one_row in items: + for tag in one_row.split(',')[-1]: + row_tags[data_type][tag] += row_tags[data_type].get(tag, 0) + 1 + except Exception: + log.error(f"collect tags failed with {line}", exc_info=True) + return row_tags def build(self): # weekly_day = json.dumps(self.get_weekly_days()).strip('[]') @@ -584,14 +597,14 @@ class TapWeeklyReport: data = self.db_conn.query(sql) #log.info(f"sql={sql}") if data: - all_data[tap_type].append(data) # print(f"{tap_type}\t{data}") + all_data[tap_type].append(data) return all_data def run(self): data = self.build() - r_data = self.struct_data(data) - print(r_data) - return r_data + r_data, tags = self.struct_data(data) + print(f"rr={r_data},tags={tags}") + return r_data, tags def main(): day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')