def getMenu(today): day = today.weekday() is_this_week = lambda date: datetime.strptime( date, '%Y-%m-%dT%H:%M:%S%z').date() > today.date() - timedelta(days=7) is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() ignore_hashtags = lambda post: " ".join(word.lower() for word in post.split() if word[0] != "#") daily_menu_filter = lambda post: is_today(post['created_time']) \ and "menü" in post['message'].lower() weekly_menu_filter = lambda post: is_this_week(post['created_time']) \ and days_lower[day] in ignore_hashtags(post['message']) weekly_menu = get_filtered_fb_post(FB_ID, weekly_menu_filter) if weekly_menu: menu_post = dropwhile(lambda line: days_lower[day] not in line.lower(), skip_empty_lines(weekly_menu.splitlines())) else: menu_post = get_filtered_fb_post(FB_ID, daily_menu_filter).splitlines() menu_post = list(menu_post) menu = [] for i, line in enumerate(menu_post): if "A:" in line: menu = list((menu_post[i - 1], menu_post[i], menu_post[i + 1])) break if menu == '': skipfilter = lambda l: not any(i in l.lower( ) for i in ["sütiket", "#", "jó étvágyat", "mai menü"]) menu = list(filter(skipfilter, menu_post)) return menu
def get_menu(today): dom = get_dom(URL_ROOT) menu = dom.xpath("/html/body//article//text()") menu = pattern_slice(menu, [days_lower[today.weekday()]], days_lower + ['ára', 'előfizetés', 'ajánlat'], inclusive=False) return list(skip_empty_lines(menu))
def getMenu(today): dom = get_dom(URL) this_year = today.strftime("%Y") menu_date = dom.xpath( f"/html/body//span[contains(text(), '{this_year}')]/text()") menu_date = menu_date[0].split('-')[0] if len(menu_date) > 0 else -1 if menu_date is not -1 and dt.strptime( menu_date, "%Y.%m.%d").date() > today.date() - timedelta(days=6): menu = list( skip_empty_lines([ p.text_content() for p in dom.xpath('/html/body//div[@id="comp-jhonyf7y"]//p') ])) if any(days_lower[today.weekday()] in line for line in menu): menu = list( pattern_slice(menu, [days_lower[today.weekday()]], days_lower, inclusive=False)) else: menu = list(menu) menu = [item.replace('\xa0', ' ') for item in menu] else: menu = [] return menu
def getMenu(today): dom = get_dom(URL) menu = dom.xpath( "/html/body//div[@id='heti-menu']//ul[@class='dotted']/li/text()") menu = list(skip_empty_lines(menu)) return menu
def get_menu(today): dom = get_dom(URL) menus = dom.xpath(f'/html/body//div[@class="_serviceContainer"]') menu = menus[-1].xpath(".//p/text()") menu = list(skip_empty_lines(line for line in menu if "menü" not in line.lower())) return menu
def getMenu(today): day = today.weekday() dom = get_dom(URL) menu = dom.xpath( '//section[@id="hetimenu"]//div[contains(@class, "text_box")]') menu = filter(lambda l: "menü ára" not in l, menu[day].xpath("p/text()")) menu = list(skip_empty_lines(menu)) return menu
def getMenu(today): is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z').date() == today.date() menu_keywords = ["chef", "ajánlat", "1490", "1390", ",-", ".-", "ára"] menu_filter = lambda post: is_today(post['created_time']) and any(word in post['message'].lower() for word in menu_keywords) menu = get_filtered_fb_post(FB_ID, menu_filter) menu = (line for line in menu.splitlines() if not any(word in line.lower() for word in menu_keywords)) return list(skip_empty_lines(menu))
def getMenu(today): day = today.weekday() dom = get_dom(URL) menu = dom.xpath( "/html/body//div[@class='fck']/*[self::h3 or self::p]//text()") menu = dropwhile(lambda line: days_lower[day] not in line.lower(), menu) menu = islice(skip_empty_lines(menu), 1, 3) menu = list(menu) return menu
def getMenu(today): is_this_week = lambda date: datetime.strptime( date, '%Y-%m-%dT%H:%M:%S%z').date() > today.date() - timedelta(days=7) menu_filter = lambda post: is_this_week(post['created_time']) and sum( day in post['message'].lower() for day in days_lower) >= 2 menu = get_filtered_fb_post(FB_ID, menu_filter) menu = pattern_slice(menu.splitlines(), [days_lower[today.weekday()]], days_lower + ["wolt", "ez is budai", "nyitva"], inclusive=False) menu = skip_empty_lines(menu) return list(menu)
def getMenu(today): is_this_week = lambda date: datetime.strptime( date, '%Y-%m-%dT%H:%M:%S%z').date() > today.date() - timedelta(days=6) menu_filter = lambda post: is_this_week(post['created_time']) and sum( day in post['message'].lower() for day in days_lower) >= 2 menu = get_filtered_fb_post(FB_ID, menu_filter) menu = ''.join(char for char in menu if ord(char) < 500) menu = pattern_slice(menu.splitlines(), [days_lower[today.weekday()]], days_lower + ["tel:", "797"]) return list(skip_empty_lines(menu))
def get_menu(today): is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() menu_filter = lambda post: is_today(post[ 'created_time']) and "menü" in post['message'].lower() menu = get_filtered_fb_post(FB_ID, menu_filter).splitlines() menu = list( skip_empty_lines(line.strip() for line in menu if "menü" not in line.lower())) return menu
def get_menu(today): is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() menu_filter = lambda post: is_today(post[ 'created_time']) and "mai menü" in post['message'].lower() menu = get_filtered_fb_post(FB_ID, menu_filter) drop_words = ["mai menünk", "jó étvágyat"] menu = skip_empty_lines( filter(lambda l: not any(word in l.lower() for word in drop_words), menu.splitlines())) return list(menu)
def get_menu(today): is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() menu_filter = lambda post: is_today(post['created_time']) and \ any(word in post['message'].lower() for word in ["ebédmenü", "ebéd menü", "mai menü", "déli menü", "mai ebéd", "ajánlat"]) menu = get_filtered_fb_post(FB_ID, menu_filter) drop_words = ["ajánlat", "tacskó", "ebéd", "menü"] menu = list( skip_empty_lines( filter(lambda l: not any(word in l.lower() for word in drop_words), menu.splitlines()))) return menu
def get_menu(today): is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() menu_heuristic = lambda msg: msg.count(':') + msg.count('+') >= 3 menu_filter = lambda post: is_today(post['created_time'] ) and menu_heuristic(post['message']) menu = get_filtered_fb_post(FB_ID, menu_filter).splitlines() drop = lambda l: l.strip().endswith((':', '!', '.', ',')) for i in (n for n in (0, -1) if menu and drop(menu[n])): menu.pop(i) menu = skip_empty_lines(menu) return list(menu)
def getMenu(today): dom = get_dom(URL) date = today.strftime("%Y-%m-%d") menu = dom.xpath( f'/html/body//div[@id="NapiEbedMenu"]//tr[.//div[contains(text(), "{ date }")]]/td[position()=2 or position()=3]//text()' ) if menu: menu = list(skip_empty_lines(menu)) else: menu = [] return menu
def getMenu(today): is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() menu_keywords = ["napi menü", days_lower[today.weekday()]] menu_filter = lambda post: is_today(post['created_time']) and any( word in post['message'].lower() for word in menu_keywords) menu = get_filtered_fb_post(FB_ID, menu_filter) menu = ''.join(char for char in menu if ord(char) < 500) drop_words = [ "mindenkit", "minden menü", "étlapunk", "csodás", days_lower[today.weekday()] ] menu = (line for line in menu.splitlines() if not any(word in line.lower() for word in drop_words)) return list(skip_empty_lines(menu))
def getMenu(today): is_this_week = lambda date: datetime.strptime( date, '%Y-%m-%dT%H:%M:%S%z').date() > today.date() - timedelta(days=7) menu_filter = lambda post: is_this_week(post['created_time']) and \ any(word in post['message'].lower() for word in ["lunch menü ", "business lunch", "előételek", "déli menü", "heti menü", "menünk"]) menu = get_filtered_fb_post(FB_ID, menu_filter) drop_words = [ "előételek", "főételek", "desszer", "étvágy", "menü", "lunch" ] menu = skip_empty_lines( filter(lambda l: not any(word in l.lower() for word in drop_words), menu.splitlines())) remove_emoji = lambda text: ''.join(char for char in text if ord(char) < 500) menu = [remove_emoji(m) for m in menu] return menu
def getMenu(today): is_this_week = lambda date: datetime.strptime( date, '%Y-%m-%dT%H:%M:%S%z').date() > today.date() - timedelta(days=7) is_today = lambda date: datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z' ).date() == today.date() menu_filter = lambda post: (is_this_week(post['created_time']) and days_lower[today.weekday()] in post['message'].lower()) \ or ("menü" in post['message'].lower() and is_today(post['created_time'])) menu = get_filtered_fb_post(FB_ID, menu_filter) menu = pattern_slice(menu.splitlines(), [days_lower[today.weekday()], "mai", "menü"], days_lower + ["ár:"]) remove_emoji = lambda text: ''.join(char for char in text if ord(char) < 500) menu = [remove_emoji(m) for m in skip_empty_lines(menu)] return menu
def get_menu(today): is_this_week = lambda date: datetime.strptime( date, '%Y-%m-%dT%H:%M:%S%z').date() >= today.date() - timedelta(days=7) menu_filter = lambda post: is_this_week(post[ 'created_time']) and "heti menü" in post['message'].lower() image = get_fb_post_attached_image(FB_ID, menu_filter) if image: image = Image.open(BytesIO(image)).convert('L') f = BytesIO() image.save(f, format="png", optimize=True) menu = ocr_image(f).splitlines() if not menu: return [] menu = pattern_slice(menu, [days_lower[today.weekday()]], days_lower + ['desszert', "890"], inclusive=False) menu = list(skip_empty_lines(menu)) else: return [] return menu