def cal(force_update=False, save=False): logger.debug('cal force_update: {} save: {}'.format(force_update, save)) weekly_list = website.bangumi_calendar(force_update=force_update, save=save) runner = ScriptRunner() patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i['update_time'].lower()].append(i) logger.debug(weekly_list) # for web api, return all subtitle group info r = weekly_list for day, value in weekly_list.items(): for index, bangumi in enumerate(value): bangumi['cover'] = normalize_path(bangumi['cover']) if isinstance(bangumi['subtitle_group'], list): subtitle_group = list(map(lambda x: {'name': x['name'], 'id': x['id']}, Subtitle.get_subtitle_by_id( bangumi['subtitle_group']))) else: subtitle_group = list(map(lambda x: {'name': x['name'], 'id': x['id']}, Subtitle.get_subtitle_by_id( bangumi['subtitle_group'].split(', ' '')))) r[day][index]['subtitle_group'] = subtitle_group logger.debug(r) return r
def cal(force_update=False, save=False): logger.debug('cal force_update: {} save: {}'.format(force_update, save)) weekly_list = website.bangumi_calendar(force_update=force_update, save=save) runner = ScriptRunner() patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i['update_time'].lower()].append(i) logger.debug(weekly_list) # for web api, return all subtitle group info r = weekly_list for day, value in weekly_list.items(): for index, bangumi in enumerate(value): bangumi['cover'] = normalize_path(bangumi['cover']) if isinstance(bangumi['subtitle_group'], list): subtitle_group = list( map(lambda x: { 'name': x['name'], 'id': x['id'] }, Subtitle.get_subtitle_by_id(bangumi['subtitle_group']))) else: subtitle_group = list( map( lambda x: { 'name': x['name'], 'id': x['id'] }, Subtitle.get_subtitle_by_id( bangumi['subtitle_group'].split(', ' '')))) r[day][index]['subtitle_group'] = subtitle_group logger.debug(r) return r
def __init__(self, *args, **kwargs): if self.patch_list is None: runner = ScriptRunner() self.patch_list = runner.get_models_dict() for i in self.patch_list: i['cover'] = normalize_path(i['cover']) super(BaseHandler, self).__init__(*args, **kwargs)
def cal(force_update: bool = False, save: bool = False, cover: Optional[List[str]] = None) -> Dict[str, List[Dict[str, Any]]]: logger.debug("cal force_update: %r save: %r", force_update, save) weekly_list = Bangumi.get_updating_bangumi() if not weekly_list: print_warning("Warning: no bangumi schedule, fetching ...") force_update = True if force_update: print_info("Fetching bangumi info ...") website.fetch(save=save) weekly_list = Bangumi.get_updating_bangumi() if cover is not None: # download cover to local cover_to_be_download = cover for daily_bangumi in weekly_list.values(): for bangumi in daily_bangumi: _, file_path = convert_cover_url_to_path(bangumi["cover"]) if not (os.path.exists(file_path) and bool(imghdr.what(file_path))): cover_to_be_download.append(bangumi["cover"]) if cover_to_be_download: print_info("Updating cover ...") download_cover(cover_to_be_download) runner = ScriptRunner() patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i["update_time"].lower()].append(i) logger.debug(weekly_list) # for web api, return all subtitle group info r = weekly_list # type: Dict[str, List[Dict[str, Any]]] for day, value in weekly_list.items(): for index, bangumi in enumerate(value): bangumi["cover"] = normalize_path(bangumi["cover"]) subtitle_group = list( map( lambda x: { "name": x["name"], "id": x["id"] }, Subtitle.get_subtitle_by_id( bangumi["subtitle_group"].split(", " "")), )) r[day][index]["subtitle_group"] = subtitle_group logger.debug(r) return r
def __init__(self, *args: Any, **kwargs: Any) -> None: if self.latest_version is None: if os.path.exists(os.path.join(BGMI_PATH, "latest")): with open(os.path.join(BGMI_PATH, "latest")) as f: self.latest_version = f.read().strip() runner = ScriptRunner() self.patch_list = runner.get_models_dict() for i in self.patch_list: i["cover"] = normalize_path(i["cover"]) super().__init__(*args, **kwargs)
def __init__(self, *args, **kwargs): if self.latest_version is None: if os.path.exists(os.path.join(BGMI_PATH, 'latest')): with open(os.path.join(BGMI_PATH, 'latest')) as f: self.latest_version = f.read().strip() if self.patch_list is None: runner = ScriptRunner() self.patch_list = runner.get_models_dict() for i in self.patch_list: i['cover'] = normalize_path(i['cover']) super(BaseHandler, self).__init__(*args, **kwargs)
def getBangumiList(): # subscribe list data = Followed.get_all_followed(STATUS_DELETED, STATUS_UPDATING) # bgmi-scripts list runner = ScriptRunner() patch_list = runner.get_models_dict() for i in patch_list: i['cover'] = normalize_path(i['cover']) data.extend(patch_list) return data
def __init__(self, *args, **kwargs): if self.latest_version is None: if os.path.exists(os.path.join(BGMI_PATH, 'latest')): with open(os.path.join(BGMI_PATH, 'latest')) as f: self.latest_version = f.read().strip() if self.patch_list is None: runner = ScriptRunner() self.patch_list = runner.get_models_dict() for i in self.patch_list: i['cover'] = normalize_path(i['cover']) super(BaseHandler, self).__init__(*args, **kwargs)
def bangumi_calendar(self, force_update=False, save=True, cover=False): if force_update and not test_connection(): force_update = False print_warning('network is unreachable') if force_update: print_info('fetching bangumi info ...') Bangumi.delete_all() weekly_list = self.fetch(save=save) else: weekly_list = Bangumi.get_all_bangumi() if not weekly_list: print_warning('warning: no bangumi schedule, fetching ...') weekly_list = self.fetch(save=save) runner = ScriptRunner() patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i['update_time'].lower()].append(i) if cover: # download cover to local cover_to_be_download = [] for daily_bangumi in weekly_list.values(): for bangumi in daily_bangumi: followed_obj = Followed(bangumi_name=bangumi['name']) if followed_obj: bangumi['status'] = followed_obj.status _, file_path, _ = self.convert_cover_to_path( bangumi['cover']) if not glob.glob(file_path): cover_to_be_download.append(bangumi['cover']) if cover_to_be_download: print_info('updating cover') for cover in tqdm.tqdm(cover_to_be_download): self.download_cover(cover) return weekly_list
def cal(force_update=False, save=False): logger.debug("cal force_update: {} save: {}".format(force_update, save)) weekly_list = website.bangumi_calendar(force_update=force_update, save=save) runner = ScriptRunner() patch_list = runner.get_models_dict() for i in patch_list: weekly_list[i["update_time"].lower()].append(i) logger.debug(weekly_list) # for web api, return all subtitle group info r = weekly_list for day, value in weekly_list.items(): for index, bangumi in enumerate(value): bangumi["cover"] = normalize_path(bangumi["cover"]) if isinstance(bangumi["subtitle_group"], list): subtitle_group = list( map( lambda x: { "name": x["name"], "id": x["id"] }, Subtitle.get_subtitle_by_id(bangumi["subtitle_group"]), )) else: subtitle_group = list( map( lambda x: { "name": x["name"], "id": x["id"] }, Subtitle.get_subtitle_by_id( bangumi["subtitle_group"].split(", " "")), )) r[day][index]["subtitle_group"] = subtitle_group logger.debug(r) return r
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( "{}{}. {}".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): 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()