Can browse through list of subscribed multireddits
This commit is contained in:
@@ -195,6 +195,20 @@ class Content(object):
|
||||
data['title'] = subscription.title
|
||||
return data
|
||||
|
||||
@staticmethod
|
||||
def strip_praw_multireddit(multireddit):
|
||||
"""
|
||||
Parse through a multireddits and return a dict with data ready to be
|
||||
displayed through the terminal.
|
||||
"""
|
||||
|
||||
data = {}
|
||||
data['object'] = multireddit
|
||||
data['type'] = 'Multireddit'
|
||||
data['name'] = multireddit.path
|
||||
data['title'] = multireddit.description_md
|
||||
return data
|
||||
|
||||
@staticmethod
|
||||
def humanize_timestamp(utc_timestamp, verbose=False):
|
||||
"""
|
||||
@@ -566,3 +580,52 @@ class SubscriptionContent(Content):
|
||||
data['offset'] = 0
|
||||
|
||||
return data
|
||||
|
||||
|
||||
class MultiredditContent(Content):
|
||||
|
||||
def __init__(self, multireddits, loader):
|
||||
|
||||
self.name = "Multireddits"
|
||||
self.order = None
|
||||
self._loader = loader
|
||||
self._multireddits = multireddits
|
||||
self._multireddit_data = []
|
||||
|
||||
try:
|
||||
self.get(0)
|
||||
except IndexError:
|
||||
raise exceptions.SubscriptionError('No multireddits')
|
||||
|
||||
@classmethod
|
||||
def from_user(cls, reddit, multireddits, loader):
|
||||
multireddits = (m for m in multireddits)
|
||||
return cls(multireddits, loader)
|
||||
|
||||
def get(self, index, n_cols=70):
|
||||
"""
|
||||
Grab the `i`th subscription, with the title field formatted to fit
|
||||
inside of a window of width `n_cols`
|
||||
"""
|
||||
|
||||
if index < 0:
|
||||
raise IndexError
|
||||
|
||||
while index >= len(self._multireddit_data):
|
||||
try:
|
||||
with self._loader('Loading multireddits'):
|
||||
multireddit = next(self._multireddits)
|
||||
if self._loader.exception:
|
||||
raise IndexError
|
||||
except StopIteration:
|
||||
raise IndexError
|
||||
else:
|
||||
data = self.strip_praw_multireddit(multireddit)
|
||||
self._multireddit_data.append(data)
|
||||
|
||||
data = self._multireddit_data[index]
|
||||
data['split_title'] = self.wrap_text(data['title'], width=n_cols)
|
||||
data['n_rows'] = len(data['split_title']) + 1
|
||||
data['offset'] = 0
|
||||
|
||||
return data
|
||||
|
||||
Reference in New Issue
Block a user