游戏日报 grafana->png sendmail
This commit is contained in:
parent
69358808f5
commit
d659787e77
66
daily_report/get_grafana.py
Normal file
66
daily_report/get_grafana.py
Normal 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()
|
9
daily_report/templates/index.html
Normal file
9
daily_report/templates/index.html
Normal 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
11
daily_report/test01.html
Normal 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>
|
50
daily_report/test_report.py
Normal file
50
daily_report/test_report.py
Normal 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)
|
Loading…
x
Reference in New Issue
Block a user