def filter_titles(self): i = 0 titles = [] if self.lang_key: path = join(conf.PARSED_STORAGE_PATH, 'lists', 'langs', 'articles') all_titles = read_lines(f'{path}/{self.lang_key}.txt', ignore_absent=True) else: all_titles = storage.load_articles() for title in all_titles: if re.fullmatch(self.regexp, title): if i // self.page_size > self.page: self.more = True break if i // self.page_size == self.page: titles.append(title) i += 1 return titles
def iterate_daily_logs(self, slug, start_from): logs_path = join(self.logs_path, slug) curr_date = start_from.date() - timedelta(days=1) while curr_date <= datetime.now().date(): curr_date += timedelta(days=1) path = f"{logs_path}/{dtf('Ym/Ymd', curr_date)}.txt" if not exists(path): # todo: log something? continue lines = read_lines(path) for line in lines: if not line: continue if not re.match('\d{4}-\d\d-\d\d \d\d:\d\d:\d\d: ', line): raise ImpossibleError('Wrong log format') log_dt = dtp(line[:19]) if log_dt < start_from: continue yield log_dt, line[21:]
def get(cls): return set(read_lines(cls.filename))
def load_titles(self): return read_lines(self.titles_filename)