# -*- coding: utf-8 -*- from ops.mmysql import MysqlBase from ops.plog import define_logger import logging import datetime import json define_logger("/data/logs/ops/tap_weekly.log") db_conf = {'user': 'mytga', 'pswd': 'gzVwh4HGR68G', 'host': '10.10.3.5', 'db': 'external_data'} class TapWeeklyReport: def __init__(self, day): self.day = day self.db_conn = MysqlBase(**db_conf) self.limit = 20 def get_weekly_days(self): weekly_days = [] for i in range(0, 7): current_day = (datetime.datetime.strptime(self.day, '%Y-%m-%d') - datetime.timedelta(days=i)).strftime( '%Y-%m-%d') weekly_days.append(current_day) return weekly_days def build(self): weekly_day = json.dumps(self.get_weekly_days()).strip('[]') tap_types = ("new", "download", "reserve", "sell", "played") for tap_type in tap_types: sql = f"""select gameid, title, min(`order`), sum(diff_order), sum(diff_watch), sum(diff_download), sum(diff_reserve), score from taptap_collect where catename='{tap_type}' and date in ({weekly_day}) group by gameid order by sum(diff_order) desc limit {self.limit};""" data = self.db_conn.query(sql) if data: print(f"{tap_type}\t{data}") return True def run(self): data = self.build() print(data) def main(): day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') twr = TapWeeklyReport(day) twr.run() if __name__ == "__main__": main()