This commit is contained in:
pengtao 2019-11-22 11:26:33 +08:00
parent 9840f0ac64
commit b04ac14e8c
2 changed files with 54 additions and 34 deletions

View File

@ -108,7 +108,7 @@ def send_tapweekly():
recipients = ["pengtao@kingsome.cn"] recipients = ["pengtao@kingsome.cn"]
msg = Message(title, sender=sender, recipients=recipients) msg = Message(title, sender=sender, recipients=recipients)
twr = TapWeeklyReport(day) twr = TapWeeklyReport(day)
data = twr.build() data = twr.run()
#print(data) #print(data)
# data[day] = day # data[day] = day
msg.subject = f"TAPTAP_{day}_游戏周报" msg.subject = f"TAPTAP_{day}_游戏周报"
@ -507,20 +507,48 @@ class TapWeeklyReport:
self.db_conn = MysqlBase(**db_conf) self.db_conn = MysqlBase(**db_conf)
self.limit = 20 self.limit = 20
# def get_weekly_days(self): self.all_type = {"download": {"name": "热门榜", "row": ["download"]}, "new": {"name": "新品榜", "row": ["download"]},
# weekly_days = [] "reserve": {"name": "预约榜", "row": ["reserve"]}, "sell": {"name": "热卖榜", "row": ["sell"]},
# for i in range(0, 7): "played": {"name": "热玩榜", "row": ["download"]}}
# current_day = (datetime.datetime.strptime(self.day, '%Y-%m-%d') - datetime.timedelta(days=i)).strftime(
# '%Y-%m-%d') self.base_head = ["gameid", "title", "order", "min_order", "max_order", "diff_order"]
# weekly_days.append(current_day) self.base_end = ["watch", "review", "topic", "score", "tags"]
# return weekly_days self.row_cn = {"gameid": "游戏ID", "tile": "游戏名称", "order": "当前排名", "min_order": "最高排名", "max_order": "最低排名",
"diff_order": "排名变动", "download": "下载数", "reserve": "预约数", "sell": "购买数", "watch": "关注数",
"review": "评论数", "topic": "话题", "score": "评分", "tags": "游戏标签"}
def struct_data(self, data):
r_data = list
for key in self.all_type.keys():
try:
data_key = data.get(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
temp["row_name"] = []
for k in rows:
temp["row_name"].append(self.row_cn.get(k))
temp["row_data"] = []
for line in data_key:
tt = {}
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
for item in tt.keys():
if item not in rows:
tt.pop(item)
temp["row_data"].append(tt)
except Exception:
log.error(f"struct data with {line} Failed", exc_info=True)
return r_data
def build(self): def build(self):
# weekly_day = json.dumps(self.get_weekly_days()).strip('[]') # weekly_day = json.dumps(self.get_weekly_days()).strip('[]')
tap_types = ("new", "download", "reserve", "sell", "played") # tap_types = ("new", "download", "reserve", "sell", "played")
all_data = defaultdict(list) all_data = defaultdict(list)
for tap_type in tap_types: for tap_type in self.all_type.keys():
sql = f"""select sql = f"""select
gameid, gameid,
title as "名称", title as "名称",
@ -540,9 +568,10 @@ class TapWeeklyReport:
tap_weekly tap_weekly
where where
catename='{tap_type}' catename='{tap_type}'
and date = '{self.day}' and date = '{self.day}'
and order_posi = 1
order by order by
`order` limit {self.limit};""" `diff_order` limit {self.limit};"""
data = self.db_conn.query(sql) data = self.db_conn.query(sql)
log.info(f"sql={sql}") log.info(f"sql={sql}")
@ -552,7 +581,9 @@ class TapWeeklyReport:
def run(self): def run(self):
data = self.build() data = self.build()
print(data) r_data = self.struct_data(data)
print(r_data)
return r_data
def main(): def main():
day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')

View File

@ -7,42 +7,31 @@
<body> <body>
<h1 class="title">金蚕游戏日报 · OPS</h1> <h1 class="title">金蚕游戏日报 · OPS</h1>
<p class="date">{{ day }}</p> <p class="date">{{ day }}</p>
{% for key in data.keys() %} {% for key in data %}
<div class="section"> <div class="section">
<div class="info"> <div class="info">
<span <span
>报表类型:<span class="gameid">{{ key }}</span></span >报表类型:<span class="gameid">{{ key.get('name') }}</span></span
> >
</div> </div>
<div class="panel"> <div class="panel">
<h2>总表</h2>
<table> <table>
<thead> <thead>
{% for row_name_one in key.get('row_name') %}
<tr> <tr>
<th>游戏ID</th> <th>{{ row_name_one }}</th>
<th>游戏名称</th> {% endfor %}
<th>排名</th>
<th>最高排名</th>
<th>最低排名</th>
<th>排名变动</th>
<th>评分</th>
<th>游戏标签</th>
<th>关注数</th>
<th>下载数</th>
<th>购买数</th>
<th>预约数</th>
<th>评论数</th>
<th>话题</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
{% for item in data.get(key) %} {% for one_data in key.get('row_data') %}
{% for one in item %} {% for line in one_data %}
<tr> <tr>
{% for one_1 in one %} {% for item in one_data %}
<td>{{ one_1 }}</td> <td>{{ item }}</td>
{% endfor %} {% endfor %}
{% endfor %} {% endfor %}
{% endfor %} {% endfor %}