mirror of
https://github.com/Sheldan/Sissi.git
synced 2026-01-26 19:21:43 +00:00
[SIS-xxx] refactoring rest api to use a common code base
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
echo "Starting python server..."
|
echo "Starting python server..."
|
||||||
cd python && python3 -u main.py
|
cd python
|
||||||
|
python3 -u main.py
|
||||||
2
pom.xml
2
pom.xml
@@ -18,7 +18,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.target>17</maven.compiler.target>
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
<maven.compiler.source>17</maven.compiler.source>
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
<abstracto.version>1.5.14</abstracto.version>
|
<abstracto.version>1.5.15-SNAPSHOT</abstracto.version>
|
||||||
<abstracto.templates.version>1.4.25</abstracto.templates.version>
|
<abstracto.templates.version>1.4.25</abstracto.templates.version>
|
||||||
<apache-jena.version>4.9.0</apache-jena.version>
|
<apache-jena.version>4.9.0</apache-jena.version>
|
||||||
<rssreader.version>3.5.0</rssreader.version>
|
<rssreader.version>3.5.0</rssreader.version>
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
from __main__ import app
|
|
||||||
|
|
||||||
from PIL import Image, ImageDraw, ImageFont
|
|
||||||
from flask import request
|
|
||||||
|
|
||||||
from utils import serve_pil_image
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/memes/doge/orangeSun/')
|
|
||||||
def image_gen():
|
|
||||||
text = request.args.get('text')
|
|
||||||
with Image.open('res/img/semf_template.jpg') as im:
|
|
||||||
d1 = ImageDraw.Draw(im)
|
|
||||||
text_box_size = (300, 240)
|
|
||||||
W, H = text_box_size
|
|
||||||
font = ImageFont.truetype(f'Impact.ttf', 60)
|
|
||||||
_, _, w, h = d1.textbbox((0, 0), text, font=font)
|
|
||||||
d1.text(((W-w)/2 + 320, (H-h)/2 + 120), text, font=font, fill=(255, 255, 255))
|
|
||||||
return serve_pil_image(im)
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
import logging
|
|
||||||
import os
|
|
||||||
|
|
||||||
from flask import Flask
|
|
||||||
|
|
||||||
FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
||||||
logging.basicConfig(encoding='utf-8', level=logging.INFO, format=FORMAT)
|
|
||||||
template_dir = os.path.abspath('res/templates')
|
|
||||||
app = Flask(__name__, template_folder=template_dir)
|
|
||||||
|
|
||||||
# loads the api end points
|
|
||||||
import debra
|
|
||||||
import image_gen
|
|
||||||
|
|
||||||
@app.route('/')
|
|
||||||
def hello():
|
|
||||||
return 'Hello, World?'
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
from waitress import serve
|
|
||||||
|
|
||||||
serve(app, host="0.0.0.0", port=8080)
|
|
||||||
@@ -6,7 +6,7 @@ import json
|
|||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
from __main__ import app
|
from __main__ import app
|
||||||
from utils import serve_pil_image
|
from utils import flask_utils
|
||||||
from datetime import timezone, datetime
|
from datetime import timezone, datetime
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ def total_donations_image():
|
|||||||
d1 = ImageDraw.Draw(img)
|
d1 = ImageDraw.Draw(img)
|
||||||
font = ImageFont.truetype(f'{parameters.font_name}.ttf', parameters.font_size)
|
font = ImageFont.truetype(f'{parameters.font_name}.ttf', parameters.font_size)
|
||||||
d1.text((0, 0), f"{campaign_info['collected']}/{campaign_info['target']}€", fill=parameters.color, font=font)
|
d1.text((0, 0), f"{campaign_info['collected']}/{campaign_info['target']}€", fill=parameters.color, font=font)
|
||||||
return serve_pil_image(img)
|
return flask_utils.serve_pil_image(img)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/debra/image/endlessStream/end')
|
@app.route('/debra/image/endlessStream/end')
|
||||||
@@ -148,7 +148,7 @@ def endless_stream_image():
|
|||||||
tz = pytz.timezone('Europe/Vienna')
|
tz = pytz.timezone('Europe/Vienna')
|
||||||
end_time_formatted = end_time.astimezone(tz).strftime('%d.%m %H:%M')
|
end_time_formatted = end_time.astimezone(tz).strftime('%d.%m %H:%M')
|
||||||
d1.text((0, 0), f"{end_time_formatted}", fill=parameters.color, font=font)
|
d1.text((0, 0), f"{end_time_formatted}", fill=parameters.color, font=font)
|
||||||
return serve_pil_image(img)
|
return flask_utils.serve_pil_image(img)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/debra/image/endlessStream/end/html')
|
@app.route('/debra/image/endlessStream/end/html')
|
||||||
@@ -176,7 +176,7 @@ def endless_stream_remaining():
|
|||||||
total_seconds = remaining_time.total_seconds()
|
total_seconds = remaining_time.total_seconds()
|
||||||
remaining_time_formatted = f'{int(total_seconds // 3600):02d}:{int((total_seconds % 3600) // 60):02d}:{int(total_seconds % 60):02d}'
|
remaining_time_formatted = f'{int(total_seconds // 3600):02d}:{int((total_seconds % 3600) // 60):02d}:{int(total_seconds % 60):02d}'
|
||||||
d1.text((0, 0), f"{remaining_time_formatted}", fill=parameters.color, font=font)
|
d1.text((0, 0), f"{remaining_time_formatted}", fill=parameters.color, font=font)
|
||||||
return serve_pil_image(img)
|
return flask_utils.serve_pil_image(img)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/debra/image/endlessStream/remaining/html')
|
@app.route('/debra/image/endlessStream/remaining/html')
|
||||||
@@ -242,7 +242,7 @@ def rendering_donation_image(donation_stats, parameters):
|
|||||||
name = donation['firstName'] if not donation['anonymous'] else 'anonym'
|
name = donation['firstName'] if not donation['anonymous'] else 'anonym'
|
||||||
d1.text((0, height * it), f"{donation['donationAmount']}€ von {name}", fill=parameters.color, font=font)
|
d1.text((0, height * it), f"{donation['donationAmount']}€ von {name}", fill=parameters.color, font=font)
|
||||||
it += 1
|
it += 1
|
||||||
return serve_pil_image(img)
|
return flask_utils.serve_pil_image(img)
|
||||||
|
|
||||||
|
|
||||||
def parse_image_parameters() -> DonationImageGenerationParameters:
|
def parse_image_parameters() -> DonationImageGenerationParameters:
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB |
@@ -1,7 +0,0 @@
|
|||||||
<meta http-equiv="refresh" content="{{ refreshInterval }}">
|
|
||||||
<html>
|
|
||||||
<head></head>
|
|
||||||
<body>
|
|
||||||
<img src="{{ imagePath }}">
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="refresh" content="{{ refreshInterval }}">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="{{ imagePath }}">
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from io import BytesIO
|
|
||||||
|
|
||||||
from flask import send_file
|
|
||||||
|
|
||||||
|
|
||||||
def serve_pil_image(pil_img):
|
|
||||||
img_io = BytesIO()
|
|
||||||
pil_img.save(img_io, 'PNG')
|
|
||||||
img_io.seek(0)
|
|
||||||
return send_file(img_io, mimetype='image/png')
|
|
||||||
|
|
||||||
|
|
||||||
class ValidationException(Exception):
|
|
||||||
def __init__(self, provided_value, message):
|
|
||||||
self.provided_value = provided_value
|
|
||||||
self.message = message
|
|
||||||
super().__init__(f'{self.message}: provided value: {provided_value}')
|
|
||||||
Reference in New Issue
Block a user