Simple static API for the canteens of the Studentenwerk München as well as some other canteens. By now, the following canteens are supported:
Name | API-key | Address |
---|---|---|
Mensa Arcisstraße | mensa-arcisstr | Arcisstraße 17, München |
Mensa Garching | mensa-garching | Boltzmannstraße 19, Garching |
Mensa Leopoldstraße | mensa-leopoldstr | Leopoldstraße 13a, München |
Mensa Lothstraße | mensa-lothstr | Lothstraße 13d, München |
Mensa Martinsried | mensa-martinsried | Großhaderner Straße 6, Planegg-Martinsried |
Mensa Pasing | mensa-pasing | Am Stadtpark 20, München |
Mensa Weihenstephan | mensa-weihenstephan | Maximus-von-Imhof-Forum 5, Freising |
StuBistro Arcisstraße | stubistro-arcisstr | Arcisstraße 12, München |
StuBistro Goethestraße | stubistro-goethestr | Goethestraße 70, München |
StuBistro Großhadern | stubistro-großhadern | Butenandtstraße 13, Gebäude F, München |
StuBistro Rosenheim | stubistro-rosenheim | Hochschulstraße 1, Rosenheim |
StuBistro Schellingstraße | stubistro-schellingstr | Schellingstraße 3, München |
StuCafé Adalbertstraße | stucafe-adalbertstr | Adalbertstraße 5, München |
StuCafé Akademie Weihenstephan | stucafe-akademie-weihenstephan | Alte Akademie 1, Freising |
StuCafé Boltzmannstraße | stucafe-boltzmannstr | Boltzmannstraße 15, Garching |
StuCafé in der Mensa Garching | stucafe-garching | Boltzmannstraße 19, Garching |
StuCafé Karlstraße | stucafe-karlstr | Karlstraße 6, München |
StuCafé Pasing | stucafe-pasing | Am Stadtpark 20, München |
FMI Bistro Garching | fmi-bistro | Boltzmannstraße 3, Garching |
IPP Bistro Garching | ipp-bistro | Boltzmannstraße 2, Garching |
See here.
The actual API is provided by static JSON files, which can be found in the gh-pages branch of this repository. These files are created through automatic travis builds. The documentation can be found at: https://tum-dev.github.io/eat-api/docs
Basically, you need to structure a link as follows in order to access the API:
https://tum-dev.github.io/eat-api/<canteen>/<year>/<week-number>.json
The following link would give you the menu of Mensa Garching for week 20 in 2019:
https://tum-dev.github.io/eat-api/mensa-garching/2019/20.json
The JSON files are produced by the tool shown in this repository. Hence, it is either possible to access the API or use the tool itself to obtain the desired menu data. The CLI needs to be used as follows:
$ src/python3 main.py --help
usage: main.py [-h] [-p CANTEEN] [-d DATE] [-j PATH] [-c] [--openmensa PATH]
[--canteens] [--language LANGUAGE]
options:
-h, --help show this help message and exit
-p CANTEEN, --parse CANTEEN
the canteen you want to eat at
-d DATE, --date DATE date (DD.MM.YYYY) of the day of which you want to get
the menu
-c, --combine creates a "combined.json" file containing all dishes
for the canteen specified
--openmensa PATH directory for OpenMensa XML output (date parameter
will be ignored if this argument is used)
--canteens prints all available canteens formated as JSON
--language LANGUAGE The language to translate the dish titles to, needs an
DeepL API-Key in the environment variable
DEEPL_API_KEY_EAT_API
It is mandatory to specify the canteen (e.g. mensa-garching). Furthermore, you can specify a date, for which you would like to get the menu. If no date is provided, all the dishes for the current week will be printed to the command line. the --jsonify
option is used for the API and produces some JSON files containing the menu data.
Here are some sample calls:
# Get the menus for the whole current week at mensa-garching
$ python src/main.py -p mensa-garching
# Get the menu for April 2 at mensa-arcisstrasse
$ python src/main.py -p mensa-arcisstrasse -d 02.04.2019
Dish titles are provided only in german by the Studentenwerk.
We offer the possibility to translate them using the DeepL API.
In order to use the API, there needs to be an API key provided in the environment variable DEEPL_API_KEY_EAT_API
.
The target language can be specified using the --language
option using one of the languages supported by DeepL e.g. EN-US
.
The canteens.json
and label.json
are generated from the Canteen
and Label
enum. To generate them, run enum_json_creator.py [<path/to/directory>]
. This will also generate a languages.json
file, which contains the languages supported by the Label
enum. If no path is specified, the Python script stores them in ./dist/enums
.
- Parser for OpenMensa (GitHub)
- Hunger | TUM.sexy (Github)
FMeat.php
SDK (GitHub)- Telegram bot for Channel t.me/lunchgfz (GitLab)
- UWP-TUM-Campus-App (Github)
- Fork and clone this repository
- Install the python dependencies (Python 3.9+ required):
sudo apt install libxml2 libxml2-dev libxslt1-dev
pip3 install poetry
poetry install
Code quality is ensured via various tools bundled in pre-commit
.
You can install pre-commit
, so it will automatically run on every commit:
pre-commit install
This will check all files modified by your commit and will prevent the commit if a hook fails. To check all files, you can run
pre-commit run --all-files
This will also be run by CI if you push to the repository.
- All the tests:
PYTHONPATH=src/ pytest
- A specific test class:
PYTHONPATH=src/ pytest src/test/test_menu_parser.py::MenuParserTest