Flask
Gestern Abend wollte ich schnell einen Rezepte-Import in meine Re-Implementierung vom Speiseplaner packen. Ich hatte in den letzten Monaten öfter Github-Repositories gesehen, die sowas anbieten. recipe-scrapers sah ziemlich umfassend aus, ist aber leider in Python geschrieben.
Nun hätte ich sicher Python in mein Docker-Image ziehen können, das alles installieren und per exec
drauf zugreifen können, doch ich dachte mir, warum machst du das nicht kurz in sauber und baute eine Flask-App darum. Wobei, bauen kann man das nun wirklich nicht nennen, ich änderte ungefähr eine Zeile aus der Hello World-Beispielapp:
from flask import Flask
from flask import request
from recipe_scrapers import scrape_me
app = Flask(__name__)
@app.route("/")
def hello_world():
url = request.args.get('url', '')
scraper = scrape_me(url, wild_mode=True)
return scraper.to_json()
Dazu diese kurze Dockerfile und fertig ist die Rezepte-Scraping-API.
FROM python:3-alpine
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py ./
CMD [ "flask", "--app", "app", "run", "--host=0.0.0.0"]
Jetzt war es ein leichtes, das Import-Feature in den Speiseplaner zu implementieren, quasi nur noch ein API-Aufruf und fertig. Da freut man sich doch, wie leicht mittlerweile vieles geworden ist.