游戏日报 grafana->png sendmail

This commit is contained in:
pengtao 2019-10-31 15:57:58 +08:00
parent 69358808f5
commit d659787e77
4 changed files with 136 additions and 0 deletions

View File

@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
import requests
import pdb
# Head = {"Accept": "application/json",
# "Authorization": "Bearer eyJrIjoiczVHc2lpWkw1a2Jsb0RxeXNKaEhPczQ3QzNtSUtRNHIiLCJuIjoibWlsZXMiLCJpZCI6MX0="}
# url = "http://grafana.kingsome.cn/d/oN5uGwEik/kingsomeren-shu-qu-xian?orgId=1&from=1572226084591&to=1572247684591"
import os, stat
import urllib.request
from datetime import datetime, date, time, timedelta
import time as Time
# 获取七日前0点与今日0点的时间戳
def last_seven_day():
midnight = datetime.combine(date.today(), time.min)
yesterday_mid = midnight - timedelta(days=7) # 想要此前几天的,就改这个参数
epoch = datetime.utcfromtimestamp(0)
midnight = midnight - timedelta(seconds=1)
midnight = int((midnight - epoch).total_seconds() * 1000.0)
yesterday_mid = int((yesterday_mid - epoch).total_seconds() * 1000.0)
return str(yesterday_mid), str(midnight)
# 下载指定的dashboard
def download_db():
# 组装url跑代码之前现在浏览器试试
dbuid = "p5aRo00Wz"
# dbuid = "mI5F3QnWk"
grafana_server = "https://grafana-test.kingsome.cn"
# grafana_server = "http://grafana.kingsome.cn"
# url = f"""{grafana_server}/render/d/{dbuid}?from{last_seven_day()[0]}&to={last_seven_day()[
# 1]}&&var-datasource=xxx&width=1500&height=700&tz=UTC%2B08%3A00"""
url="http://grafana.kingsome.cn/render/d-solo/hzR9LcoZk/taptappai-ming-fen-xi?orgId=1&from=1572413361151&to=1572434961151&var-gameid=10056&var-date=All&var-catename=download&panelId=2&width=1000&height=1500&tz=Asia%2FShanghai"
# url="http://grafana.kingsome.cn/d/e2zRV1emk/shu-ju-yan-shi?orgId=1&from=1571715151698&to=1572319951698&var-name=All&var-date=All"
# header = {"Accept": "application/json", "Content-Type": "application/json",
# "Authorization": "Bearer eyJrIjoiczVHc2lpWkw1a2Jsb0RxeXNKaEhPczQ3QzNtSUtRNHIiLCJuIjoibWlsZXMiLCJpZCI6MX0="}
keys="eyJrIjoiczVHc2lpWkw1a2Jsb0RxeXNKaEhPczQ3QzNtSUtRNHIiLCJuIjoibWlsZXMiLCJpZCI6MX0="
#keys = "eyJrIjoiWGFFMXp4YTlaODFHUFpVQmxBcHVDWUZNSUFvb2doNDEiLCJuIjoidGVzdCIsImlkIjoyfQ=="
header = {"Accept": "application/json", "Content-Type": "application/json", "Authorization": f"Bearer {keys}"}
print(url)
request = urllib.request.Request(url, headers=header)
#pdb.set_trace()
try:
# 访问并下载面板图
response = urllib.request.urlopen(request)
time_now = int(Time.time())
time_local = Time.localtime(time_now)
dt = Time.strftime("%Y-%m-%d", time_local)
img_name = f"img{dt}.png"
filename = img_name
# print(response.getcode())
if (int(response.getcode()) == 200):
with open(filename, "wb") as f:
f.write(response.read())
return filename
else:
return "failed"
except:
return "failed"
if __name__ == "__main__":
download_db()

View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<img src="{{ user_image }}" alt="test Image">
</body>
</html>

11
daily_report/test01.html Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<iframe src="http://grafana.kingsome.cn/d/hzR9LcoZk/taptappai-ming-fen-xi?from=1572224823823&to=1572246423823&orgId=1&var-gameid=10491&var-gameid=10498&var-gameid=12492&var-date=2019-10-27&var-date=2019-10-26&var-date=2019-10-25&var-date=2019-10-24&var-date=2019-10-23&var-date=2019-10-22&var-date=2019-10-21&var-catename=download"
width="650" height="300" frameborder="0"></iframe>
</body>
</html>

View File

@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
from flask import Flask, render_template, jsonify
from flask_mail import Mail, Message
import os
from threading import Thread
PEOPLE_FOLDER = os.path.abspath('.')
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = PEOPLE_FOLDER
sender = "ops@kingsome.cn"
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.exmail.qq.com'
app.config['MAIL_PORT'] = '465'
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USE_TLS'] = False ## 默认就是 false, 加上警示自己
app.config['MAIL_USERNAME'] = sender
app.config['MAIL_PASSWORD'] = 'bX8cfBAyj9MBqH22'
mail = Mail(app)
recipients = ['pengtao@kingsome.cn']
def send_async_email(app, msg):
with app.app_context():
mail.send(msg)
@app.route('/')
def show_index():
title = "test报表"
# day = request.args.get('day')
# project = request.args.get('project') or 'mini_games'
msg = Message(title, sender=sender, recipients=recipients)
msg.subject = f"test_游戏日报"
full_filename = os.path.join(app.config['UPLOAD_FOLDER'], 'img2019-10-31.png')
msg.html = render_template('index.html', user_image=full_filename)
thread = Thread(target=send_async_email, args=[app, msg])
thread.start()
return jsonify("邮件发送成功")
if __name__ == "__main__":
# main()
app.run(host='0.0.0.0', port=6700, debug=False)