示例#1
0
 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
示例#2
0
 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:]
示例#3
0
 def get(cls):
     return set(read_lines(cls.filename))
示例#4
0
 def load_titles(self):
     return read_lines(self.titles_filename)