123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # encoding: UTF-8
- import pnalib
- import datetime
- import re
- import json
-
- # Last three columns are Kitchen Info ID, Menu Type ID and Concept ID. There may be multiple concepts in a single restauranta.
- # Juvenes API defines also Restaurant ID but that is not used.
- restaurant_info = [
- [ "(TaY) Yliopiston Ravintola",
- "https://www.juvenes.fi/yoravintola",
- "M", "left", 13, 60, []],
- [ "(TaY) Yliopiston Ravintola / VegeBar",
- "https://www.juvenes.fi/yoravintola",
- "", "left", 13, 5, []],
- [ "(TaY) Café Alakuppila (Paniini & Combosalaatti)",
- "https://www.juvenes.fi/alakuppila",
- "", "left", 130018, 58, []],
- [ "(TaY) Café Pinni",
- "https://www.juvenes.fi/pinni",
- "M", "middle", 130016, 60, []],
- [ "(TAYS) Arvo",
- "https://www.juvenes.fi/arvo",
- "M", "left", 5, 60, []],
- [ "(TAYS) Café Lea (Fusion Kitchen)",
- "https://www.juvenes.fi/lea",
- "M", "left", 50026, 3, []],
- # [ "(TAYS) Café Lea (My Salad)",
- # "https://www.juvenes.fi/lea",
- # "M", "left", 50026, 76, []],
- [ "(TTY) Newton",
- "https://www.juvenes.fi/newton",
- "", "left", 6, 60, [1149]],
- [ "(TTY) Café Konehuone / Såås bar",
- "https://www.juvenes.fi/konehuone",
- "", "left", 60038, 77, [3663]],
- [ "(TTY) Café Konehuone / Fusion Kitchen",
- "https://www.juvenes.fi/konehuone",
- "", "middle", 60038, 3, [1674]],
- [ "(TAMK) Ziberia (Koto my plate)",
- "https://www.juvenes.fi/ziberia",
- "", "middle", 11, 82, []],
- [ "(TAMK) Ziberia (Koto)",
- "https://www.juvenes.fi/ziberia",
- "", "middle", 11, 79, []],
- [ "(TAMK) Ziberia (My Salad)",
- "https://www.juvenes.fi/ziberia",
- "", "middle", 11, 76, []],
- [ "(TAMK) Frenckell / Koto",
- "https://www.juvenes.fi/frenckell",
- "", "middle", 33, 60, []],
- [ "(TAMK) Frenckell / Iltapäivälounas",
- "https://www.juvenes.fi/frenckell",
- "", "middle", 33, 85, []]
- ]
-
-
- def get_restaurants(use_old, week):
- restaurants = []
- for count, info in enumerate(restaurant_info):
- kitchen = info[4]
- menutype = info[5]
- concepts = info[6]
- title = info[0]
- cur_title = title
- open_hours = ""
- exception = None
- week_foods = {}
- for weekday in range(1,7):
- url = "http://www.juvenes.fi/DesktopModules/Talents.LunchMenu/LunchMenuServices.asmx/GetMenuByWeekday?KitchenId={kitchen}&MenuTypeId={menutype}&Week={week}&Weekday={weekday}&lang='fi'&format=json".format(kitchen=kitchen, menutype=menutype, week=week, weekday=weekday)
- temp_fname = "juvenes_{count}-{weekday}.temp.js".format(count=count, weekday=weekday)
- data = pnalib.get_json_file(url, temp_fname, use_old, allow_old=False)
- if not data:
- # Try to find problem
- for concept in concepts:
- url = "http://www.juvenes.fi/DesktopModules/Talents.Restaurants/RestaurantsService.svc/GetConcept?menuId={concept}&lang=fi".format(concept=concept)
- temp_fname = "juvenes_{count}-{weekday}-{concept}.temp.js".format(count=count, weekday=weekday, concept=concept)
- data = pnalib.get_json_file(url, temp_fname, use_old, allow_old=False)
- if data and data["d"]:
- exception = data["d"]["OpenInfo"]["Exeption1InfoText"]
- elif data and data["d"] != "null":
- data = json.loads(data["d"])
- cur_day_foods = []
- mealoptions = data["MealOptions"]
- for meal_info in mealoptions:
- cur_food = []
- if "ForceMajoure" in meal_info and meal_info["ForceMajoure"] != "":
- cur_food = [meal_info["ForceMajoure"]]
- else:
- menuitems = meal_info["MenuItems"]
- for food_info in menuitems:
- name = food_info["Name"]
- name = re.sub(r"^\*", "", name)
- if food_info["Diets"]:
- cur_food.append("{name} ({diets})".format(name=name, diets=food_info["Diets"]))
- elif name:
- cur_food.append(name)
- if cur_food != ["-"]:
- cur_day_foods.append("\n".join(cur_food))
- week_foods[weekday-1] = cur_day_foods
- restaurants.append([title, open_hours, week, week_foods, info, exception])
- return restaurants
|