2.3.2 ā¢ Published 2 months ago
@philippdormann/mensamax-api v2.3.2
MensaMax-API
Scraper for MensaMax products (like mensadigital.de
/ mensamax.de
/ mensapoint.de
)
š§ Usage
General Note: Please use your own caching strategy, MensaMax servers might be quite slow
API usage
see https://mensa.vercel.app/institutions-ui for API URLs
npm package usage
Install package
yarn add @philippdormann/mensamax-api
ts/ module imports
import { fetcher, parser } from '@philippdormann/mensamax-api';
const html = await fetcher({ p: 'FO111', e: 'herz' });
const parsed = await parser(html);
console.log(parsed);
CommonJS imports
const { fetcher, parser } = require('@philippdormann/mensamax-api');
(async function() {
try {
const html = await fetcher({ p: 'FO111', e: 'herz' });
const parsed = await parser(html);
console.log(parsed);
} catch (e) {
console.log(e);
}
})();
š Deployment
This project is deployed as a serverless function on the url https://mensa.vercel.app with Vercel āļø
š³ Docker Deployment
This project can be deployed as a docker container. To do so, just run this code:
docker-compose up -d --build
š» Local Development
Either develop on your machine directly or use the provided devcontainer for VSCode
yarn && yarn dev
š” How this works
- Fetch data from url (fetcher.js)
- fetch
VIEWSTATE
+VIEWSTATEGENERATOR
from .NET with axios- hit login endpoint with a GET request
- request method: POST
- enable followAllRedirects
- set login headers
- setup request (these settings are important)
- enable cookies
- request method: POST
- enable followAllRedirects
- set login headers
- fetch
- Parsing the data (parser.js)
- get relevant elements with cheerio
- timePeriod
- categories
- day cards with food items
- minify html
- Regex
- Replace unreadable markup such as internal MensaMax IDs
- Build JSON from custom markup
- get relevant elements with cheerio
- Serve via Express/ Vercel Serverless Function
š« Known/ tested institutions
- For a nice GUI version, see https://mensa.vercel.app/institutions-ui
- For the raw data, see institutions.json
- Please feel free to suggest new institutions by opening a PR/ Issue
š§ General Knowledge
- For some reason, MensaMax IT department decided to have many URLs
- you can find a list of all known MensaMax URLS @mensamax-urls.txt
- These URLs are not interchangeable and seem to be different MensaMax versions (as of 25.06.2021)
- There is a private/ internal GraphQL API for MensaMax which needs authentication
šš° Support this project
You like this project and would like to give something back? Thanks! Have a look at my profile for more information & options.
3.0.1
2 months ago
3.0.0
1 year ago
2.3.3
1 year ago
2.3.2
1 year ago
2.3.1
1 year ago
2.3.0
2 years ago
2.1.0-beta.1
2 years ago
2.2.0
2 years ago
2.1.0
3 years ago
2.0.1
3 years ago
2.0.0
3 years ago
2.0.0-rc.4
3 years ago
2.0.0-rc.3
3 years ago