import random from datetime import datetime from parse_rss_feeds import parse_rss_feeds class Column: def __init__(self, title, urls): self.title = title self.urls = urls self.entries = None self.sort_order = None self.limit = None def set_sort_order(self, sort_order): self.sort_order = sort_order def set_limit(self, limit): self.limit = limit def _sort_by_order(self): entrylist = list(self.entries.items()) if self.sort_order.lower() == "reverse": entrylist.reverse() self.entries = dict(entrylist) return if self.sort_order.lower() == "random": random.shuffle(entrylist) self.entries = dict(entrylist) return if self.sort_order.lower() == "chronological": entrylist.sort( key=lambda x: datetime.strptime( x[1][1], "%a, %d %b %Y %H:%M:%S %z" ) ) self.entries = dict(entrylist) return if self.sort_order.lower() == "reverse-chronological": entrylist.sort( key=lambda x: datetime.strptime( x[1][1], "%a, %d %b %Y %H:%M:%S %z" ) ) entrylist.reverse() self.entries = dict(entrylist) return def _enforce_limit(self): while len(self.entries) > self.limit: self.entries.popitem() def load_content_from_feeds(self): entries = parse_rss_feeds(self.urls) self.entries = entries if self.sort_order: self._sort_by_order() if self.limit: self._enforce_limit()