summaryrefslogtreecommitdiffstats
path: root/day.py
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2018-03-28 09:39:20 +0200
committermakefu <github@syntax-fehler.de>2018-03-28 09:59:51 +0200
commit21899089a86fb9ca2bfac42622ac0c3777059c0b (patch)
tree33ee17a46ed44a82bd9d8e91459c977ff4eadfaa /day.py
parent6bf07c52ec56377c2a29512086e4dc7bf6a563f6 (diff)
init default.py, setup.py
Diffstat (limited to 'day.py')
-rwxr-xr-xday.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/day.py b/day.py
deleted file mode 100755
index 4364762..0000000
--- a/day.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env python3
-""" usage: fetchday [options]
-
-Options:
- --db FILE path to db [Default: db.json]
- --cantine NAME name of the cantine (matches mein.aramark.de/NAME/) [Default: thales-deutschland]
-"""
-import sys
-from docopt import docopt
-import requests
-from bs4 import BeautifulSoup
-import logging
-
-import json
-from datetime import datetime
-logging.basicConfig(level=logging.DEBUG)
-log = logging.getLogger()
-from itertools import tee
-cantinedb = {
- 'thales-deutschland': 'aramark_menu2-2',
- 'buerocampus-wangen': 'aramark_menu2-3',
- 'ibm-boeblingen': 'aramark_menu2-3',
- 'metabo-nuertingen': 'aramark_menu2-3',
- 'vodafone-campus': 'aramark_menu2-2',
- 'continental-villingen': 'aramark_menu2-3'
- }
-def get_data(cantine):
- headers = {
- 'User-Agent': 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0',
- 'Referer': f'http://mein.aramark.de/{cantine}/menuplan/',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Cache-Control': 'max-age=0'
- }
- data = {
- 'action': 'aramark_menu2_content',
- 'id': cantinedb[cantine]
- }
- ret = requests.post(f'http://mein.aramark.de/{cantine}/wp-admin/admin-ajax.php',data=data)
- if ret.status_code != 200:
- log.error(ret)
- raise ValueError('Return code is not 200')
- return ret.content.decode()
-
-def get_data_test():
- return open("./test.html").read()
-
-def get_things(row):
- for item in row.select('.aramark_menu2-counter'):
- try:
- thing = {
- "allergies": {},
- "additives": {},
- "type" : item.select_one('.aramark_menu2-countertitletop').find(text=True),
- "description" : item.select_one('.aramark_menu2-menutext > p').find(text=True),
-
- }
- try:
- price = float(item.select_one('.aramark_menu2-menuprice > .aramark_menu2-menuprice').find(text=True).replace(',','.').replace('EUR','').strip())
- except:
- price = float(thing['description'])
- thing['price'] = price
- try:
- thing['title'] = item.select_one('.aramark_menu2-countermenu h4').find(text=True)
- except:
- thing['title'] = thing['type']
-
- entries = item.select('.aramark_menu2-menuinfoallergenes li span')
- for i in range(0,len(entries),2):
- thing['allergies'] = { entries[i].find(text=True): entries[i+1].find(text=True) }
-
- additives = { }
- entries = item.select('.aramark_menu2-menuinfoadditives li span')
- for i in range(0,len(entries),2):
- thing['additives'] = { entries[i].find(text=True): entries[i+1].find(text=True) }
- yield thing
- except Exception as e:
- log.error(f"problem with {e}")
- log.debug(item.prettify())
-def main():
- args = docopt(__doc__)
- dbname = args['--db']
- cantine = args['--cantine']
- try:
- with open(dbname,'r+') as f:
- db = json.load(f)
- except:
- log.info('creating new db')
- db = {}
-
- updated = datetime.now().isoformat().split('T')[0]
- soup = BeautifulSoup(get_data(cantine), 'html.parser')
- # soup = BeautifulSoup(get_data_test(), 'html.parser')
- for row in soup.select('.aramark_menu2-menus > div'):
- day = row.get('data-aramark_menu2-day')
- things = list(get_things(row))
- db[day] = things
-
- log.info(f'writing db {dbname}')
- with sys.stdout if dbname == '-' else open(dbname,'w+') as f:
- json.dump(db,f,indent=2,sort_keys=True)
-
-
-if __name__ == '__main__':
- main()
[cgit] Unable to lock slot /tmp/cgit/6c000000.lock: No such file or directory (2)