improve display of new bosses and lcm mode

This commit is contained in:
Stefan Regnery 2025-02-12 17:24:12 +01:00
parent e22941d335
commit 1ccfb6180e

View File

@ -1,49 +1,115 @@
#!/usr/bin/env python #!/usr/bin/env python3
import os
import textwrap import textwrap
import requests import requests
from flask import Flask, Response, request import datetime
from flask import Flask, Response, request, jsonify
app = Flask(__name__) app = Flask(__name__)
USER_TOKEN = os.getenv('USER_TOKEN')
USER_TOKEN = '' if not USER_TOKEN:
raise EnvironmentError("USER_TOKEN environment variable is not set")
def get_uploads(user_token, page=1): def get_uploads(user_token, page=1):
return requests.get("https://dps.report/getUploads?userToken={}&page={}".format(user_token, page)).json() return requests.get("https://dps.report/getUploads?userToken={}&page={}&perPage={}".format(user_token, page, 100)).json()
@app.route("/") @app.route("/")
def fetch_and_display_my_reports(): def test():
if request.args.get('page', ''): page = request.args.get('page', '1')
uploads = get_uploads(USER_TOKEN, request.args.get('page', '')) uploads = get_uploads(USER_TOKEN, page)
else:
uploads = get_uploads(USER_TOKEN) if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
# print(uploads) return jsonify(uploads)
upload_links_html = "" upload_links_html = ""
for upload in uploads['uploads']: for upload in sorted(uploads['uploads'], key=lambda upload: upload['encounterTime'], reverse=True):
upload_links_html += ' <a href="{url}">{url}</a><br>\n'.format(url=upload['permalink']) encounter_time = datetime.datetime.fromtimestamp(upload['encounterTime']).strftime('%Y%m%d-%H%M%S')
boss_name = upload['encounter']['boss']
bosses = {26712: "Ura",
26774: "Decima",
26725: "Greer"}
if boss_name == "DPS.Report":
boss_name = bosses[upload['encounter']['bossId']]
print(upload['encounter'])
if upload['encounter']['isCm'] and not upload['encounter']['isLegendaryCm']:
boss_name = boss_name + ' CM'
if upload['encounter']['isLegendaryCm']:
boss_name = boss_name + ' LCM'
if upload['encounter']['emboldened']:
boss_name = boss_name + ' (emboldened)'
boss_success = upload['encounter']['success']
success = '&#10060'
if boss_success:
success = '&#9989'
upload_links_html += ' <a href="{url}">{success} {encounter_time} {boss_name}</a><br>\n'.format(url=upload['permalink'],
success=success,
encounter_time=encounter_time,
boss_name=boss_name)
older_reports = "<br>Older reports: " older_reports = "<br>Older reports: "
if uploads['pages'] > 1:
for i in range(uploads['pages']): for i in range(uploads['pages']):
if request.args.get('page', '') == str(i+1): if page == str(i + 1):
older_reports += ' <a href="?page={page_number}"><b>{page_number}</b></a> '.format(page_number=i+1) older_reports += ' <a href="?page={page_number}" style="font-size: 115%;"><b>{page_number}</b></a> '.format(page_number=i + 1)
else: else:
older_reports += ' <a href="?page={page_number}">{page_number}</a> '.format(page_number=i+1) older_reports += ' <a href="?page={page_number}">{page_number}</a> '.format(page_number=i + 1)
else:
older_reports = ""
response_text = textwrap.dedent('''\ response_text = textwrap.dedent('''\
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>lennys dps reports</title> <title>lennys dps reports</title>
<style>
<link href="https://fonts.googleapis.com/css?family=Alegreya+Sans" rel="stylesheet">
body {{
font-family: 'Alegreya Sans', sans-serif;
line-height: 1.25;
font-size: 90%;
background-color: #333333;
}}
</style>
<script>
function loadReports(page) {{
var xhr = new XMLHttpRequest();
xhr.open('GET', '/?page=' + page, true);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onload = function() {{
if (xhr.status === 200) {{
var data = JSON.parse(xhr.responseText);
var uploadLinksHtml = '';
data.uploads.sort((a, b) => b.encounterTime - a.encounterTime).forEach(upload => {{
var encounterTime = new Date(upload.encounterTime * 1000).toISOString().replace('T', ' ').substring(0, 19);
var bossName = upload.encounter.boss;
if (upload.encounter.isCm) {{
bossName += ' CM';
}}
var success = upload.encounter.success ? '&#9989' : '&#10060';
uploadLinksHtml += `<a href="${{upload.permalink}}">${{success}} ${{encounterTime}} ${{bossName}}</a><br>`;
}});
document.getElementById('upload-links').innerHTML = uploadLinksHtml;
}}
}};
xhr.send();
}}
</script>
</head> </head>
<body> <body>
{upload_links}{older_reports} <div id="upload-links">
{upload_links_html}
</div>
<div>
{older_reports}
</div>
</body> </body>
</html>'''.format(upload_links=upload_links_html, older_reports=older_reports)) <footer style="font-size: 50%; font-family: 'Alegreya Sans', sans-serif;">
<br><br>
made with &#9829; by lenny.2437
</footer>
</html>'''.format(upload_links_html=upload_links_html, older_reports=older_reports))
return Response(response_text, mimetype='text/html') return Response(response_text, mimetype='text/html')
def start(): if __name__ == "__main__":
app = Flask(__name__) app.run()