def cal_wrapper(ret): force_update = ret.force_update today = ret.today save = not ret.no_save runner = ScriptRunner() if ret.download_cover: cover = runner.get_download_cover() else: cover = None weekly_list = website.bangumi_calendar(force_update=force_update, save=save, cover=cover) patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i['update_time'].lower()].append(i) def shift(seq, n): n %= len(seq) return seq[n:] + seq[:n] if today: weekday_order = (Bangumi.week[datetime.datetime.today().weekday()], ) else: weekday_order = shift(Bangumi.week, datetime.datetime.today().weekday()) env_columns = 42 if os.environ.get('TRAVIS_CI', False) else get_terminal_col() col = 42 if env_columns < col: print_warning('terminal window is too small.') env_columns = col row = int(env_columns / col if env_columns / col <= 3 else 3) def print_line(): num = col - 3 split = '-' * num + ' ' print(split * row) for index, weekday in enumerate(weekday_order): if weekly_list[weekday.lower()]: print('%s%s. %s' % (GREEN, weekday if not today else 'Bangumi Schedule for Today (%s)' % weekday, COLOR_END), end='') print() print_line() for i, bangumi in enumerate(weekly_list[weekday.lower()]): if bangumi['status'] in (STATUS_UPDATED, STATUS_FOLLOWED ) and 'episode' in bangumi: bangumi['name'] = '%s(%d)' % (bangumi['name'], bangumi['episode']) half = len( re.findall('[%s]' % string.printable, bangumi['name'])) full = (len(bangumi['name']) - half) space_count = col - 2 - (full * 2 + half) for s in SPACIAL_APPEND_CHARS: if s in bangumi['name']: space_count += bangumi['name'].count(s) for s in SPACIAL_REMOVE_CHARS: if s in bangumi['name']: space_count -= bangumi['name'].count(s) if bangumi['status'] == STATUS_FOLLOWED: bangumi['name'] = '%s%s%s' % (YELLOW, bangumi['name'], COLOR_END) if bangumi['status'] == STATUS_UPDATED: bangumi['name'] = '%s%s%s' % (GREEN, bangumi['name'], COLOR_END) print(' ' + bangumi['name'], ' ' * space_count, end='') if (i + 1) % row == 0 or i + 1 == len( weekly_list[weekday.lower()]): print() print()
def cal_wrapper(ret): force_update = ret.force_update today = ret.today save = not ret.no_save runner = ScriptRunner() if ret.download_cover: cover = runner.get_download_cover() else: cover = None weekly_list = website.bangumi_calendar( force_update=force_update, save=save, cover=cover) patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i['update_time'].lower()].append(i) def shift(seq, n): n %= len(seq) return seq[n:] + seq[:n] if today: weekday_order = (Bangumi.week[datetime.datetime.today().weekday()],) else: weekday_order = shift(Bangumi.week, datetime.datetime.today().weekday()) env_columns = 42 if os.environ.get('TRAVIS_CI', False) else get_terminal_col() col = 42 if env_columns < col: print_warning('terminal window is too small.') env_columns = col row = int(env_columns / col if env_columns / col <= 3 else 3) def print_line(): num = col - 3 split = '-' * num + ' ' print(split * row) for index, weekday in enumerate(weekday_order): if weekly_list[weekday.lower()]: print( '%s%s. %s' % ( GREEN, weekday if not today else 'Bangumi Schedule for Today (%s)' % weekday, COLOR_END), end='') print() print_line() for i, bangumi in enumerate(weekly_list[weekday.lower()]): if bangumi['status'] in (STATUS_UPDATED, STATUS_FOLLOWED) and 'episode' in bangumi: bangumi['name'] = '%s(%d)' % ( bangumi['name'], bangumi['episode']) half = len(re.findall('[%s]' % string.printable, bangumi['name'])) full = (len(bangumi['name']) - half) space_count = col - 2 - (full * 2 + half) for s in SPACIAL_APPEND_CHARS: if s in bangumi['name']: space_count += bangumi['name'].count(s) for s in SPACIAL_REMOVE_CHARS: if s in bangumi['name']: space_count -= bangumi['name'].count(s) if bangumi['status'] == STATUS_FOLLOWED: bangumi['name'] = '%s%s%s' % ( YELLOW, bangumi['name'], COLOR_END) if bangumi['status'] == STATUS_UPDATED: bangumi['name'] = '%s%s%s' % ( GREEN, bangumi['name'], COLOR_END) try: print(' ' + bangumi['name'], ' ' * space_count, end='') except UnicodeEncodeError: continue if (i + 1) % row == 0 or i + 1 == len(weekly_list[weekday.lower()]): print() print()
def cal_wrapper(ret): force_update = ret.force_update today = ret.today save = not ret.no_save runner = ScriptRunner() if ret.download_cover: cover = runner.get_download_cover() else: cover = None weekly_list = website.bangumi_calendar(force_update=force_update, save=save, cover=cover) patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i["update_time"].lower()].append(i) def shift(seq, n): n %= len(seq) return seq[n:] + seq[:n] if today: weekday_order = (Bangumi.week[datetime.datetime.today().weekday()], ) else: weekday_order = shift(Bangumi.week, datetime.datetime.today().weekday()) env_columns = 42 if os.environ.get("TRAVIS_CI", False) else get_terminal_col() col = 42 if env_columns < col: print_warning("terminal window is too small.") env_columns = col row = int(env_columns / col if env_columns / col <= 3 else 3) def print_line(): num = col - 3 split = "-" * num + " " print(split * row) for index, weekday in enumerate(weekday_order): if weekly_list[weekday.lower()]: print( "{}{}. {}".format( GREEN, weekday if not today else "Bangumi Schedule for Today (%s)" % weekday, COLOR_END, ), end="", ) print() print_line() for i, bangumi in enumerate(weekly_list[weekday.lower()]): if (bangumi["status"] in (STATUS_UPDATED, STATUS_FOLLOWED) and "episode" in bangumi): bangumi["name"] = "%s(%d)" % (bangumi["name"], bangumi["episode"]) half = len( re.findall("[%s]" % string.printable, bangumi["name"])) full = len(bangumi["name"]) - half space_count = col - 2 - (full * 2 + half) for s in SPACIAL_APPEND_CHARS: if s in bangumi["name"]: space_count += bangumi["name"].count(s) for s in SPACIAL_REMOVE_CHARS: if s in bangumi["name"]: space_count -= bangumi["name"].count(s) if bangumi["status"] == STATUS_FOLLOWED: bangumi["name"] = "{}{}{}".format(YELLOW, bangumi["name"], COLOR_END) if bangumi["status"] == STATUS_UPDATED: bangumi["name"] = "{}{}{}".format(GREEN, bangumi["name"], COLOR_END) try: print(" " + bangumi["name"], " " * space_count, end="") except UnicodeEncodeError: continue if (i + 1) % row == 0 or i + 1 == len( weekly_list[weekday.lower()]): print() print()
def cal_wrapper(ret: Any) -> None: force_update = ret.force_update today = ret.today save = not ret.no_save runner = ScriptRunner() cover = None # type: Optional[List[str]] if ret.download_cover: cover = runner.get_download_cover() weekly_list = cal(force_update=force_update, save=save, cover=cover) def shift(seq: Tuple[str, ...], n: int) -> Tuple[str, ...]: n %= len(seq) return seq[n:] + seq[:n] order_without_unknown = BANGUMI_UPDATE_TIME[:-1] if today: weekday_order = ( order_without_unknown[datetime.datetime.today().weekday()], ) # type: Tuple[str, ...] else: weekday_order = shift(order_without_unknown, datetime.datetime.today().weekday()) col = max( wcwidth.wcswidth(bangumi["name"]) for value in weekly_list.values() for bangumi in value) env_columns = col if os.environ.get("TRAVIS_CI", False) else get_terminal_col() if env_columns < col: print_warning("terminal window is too small.") env_columns = col row = int(env_columns / col if env_columns / col <= 3 else 3) def print_line() -> None: num = col - 3 split = "-" * num + " " print(split * row) for weekday in weekday_order + ("Unknown", ): if weekly_list[weekday.lower()]: print( "{}{}. {}".format( GREEN, weekday if not today else f"Bangumi Schedule for Today ({weekday})", COLOR_END, ), end="", ) print() print_line() for i, bangumi in enumerate(weekly_list[weekday.lower()]): if (bangumi["status"] in (STATUS_UPDATED, STATUS_FOLLOWED) and "episode" in bangumi): bangumi["name"] = "{}({:d})".format( bangumi["name"], bangumi["episode"]) width = wcwidth.wcswidth(bangumi["name"]) space_count = col - 2 - width for s in SPACIAL_APPEND_CHARS: if s in bangumi["name"]: space_count += bangumi["name"].count(s) for s in SPACIAL_REMOVE_CHARS: if s in bangumi["name"]: space_count -= bangumi["name"].count(s) if bangumi["status"] == STATUS_FOLLOWED: bangumi["name"] = "{}{}{}".format(YELLOW, bangumi["name"], COLOR_END) if bangumi["status"] == STATUS_UPDATED: bangumi["name"] = "{}{}{}".format(GREEN, bangumi["name"], COLOR_END) try: print(" " + bangumi["name"], " " * space_count, end="") except UnicodeEncodeError: continue if (i + 1) % row == 0 or i + 1 == len( weekly_list[weekday.lower()]): print() print()