Number keys to refresh the submission/comments and sort by:
1: hot, 2: top, 3: rising, 4: new, 5: controversial
This commit is contained in:
@@ -137,7 +137,8 @@ class SubmissionContent(BaseContent):
|
|||||||
list for repeat access.
|
list for repeat access.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, submission, loader, indent_size=2, max_indent_level=8):
|
def __init__(self, submission, loader, indent_size=2,
|
||||||
|
max_indent_level=8, order='hot'):
|
||||||
|
|
||||||
self.indent_size = indent_size
|
self.indent_size = indent_size
|
||||||
self.max_indent_level = max_indent_level
|
self.max_indent_level = max_indent_level
|
||||||
@@ -145,20 +146,22 @@ class SubmissionContent(BaseContent):
|
|||||||
self._submission = submission
|
self._submission = submission
|
||||||
|
|
||||||
self._submission_data = self.strip_praw_submission(self._submission)
|
self._submission_data = self.strip_praw_submission(self._submission)
|
||||||
self.name = self._submission_data['permalink']
|
self.name = self._submission_data['permalink'] + ': ' + order
|
||||||
comments = self.flatten_comments(self._submission.comments)
|
comments = self.flatten_comments(self._submission.comments)
|
||||||
self._comment_data = [self.strip_praw_comment(c) for c in comments]
|
self._comment_data = [self.strip_praw_comment(c) for c in comments]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_url(cls, reddit, url, loader, indent_size=2, max_indent_level=8):
|
def from_url(cls, reddit, url, loader, order='hot', indent_size=2,
|
||||||
|
max_indent_level=8):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with loader():
|
with loader():
|
||||||
submission = reddit.get_submission(url, comment_sort='hot')
|
submission = reddit.get_submission(url, comment_sort=order)
|
||||||
except praw.errors.APIException:
|
except praw.errors.APIException:
|
||||||
raise SubmissionError(url)
|
raise SubmissionError(url)
|
||||||
|
|
||||||
return cls(submission, loader, indent_size, max_indent_level)
|
return cls(submission, loader, indent_size, max_indent_level,
|
||||||
|
order=order)
|
||||||
|
|
||||||
def get(self, index, n_cols=70):
|
def get(self, index, n_cols=70):
|
||||||
"""
|
"""
|
||||||
@@ -243,7 +246,7 @@ class SubredditContent(BaseContent):
|
|||||||
list for repeat access.
|
list for repeat access.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, name, submissions, loader):
|
def __init__(self, name, submissions, loader, order='hot'):
|
||||||
|
|
||||||
self.name = name
|
self.name = name
|
||||||
self._loader = loader
|
self._loader = loader
|
||||||
@@ -258,12 +261,13 @@ class SubredditContent(BaseContent):
|
|||||||
self.get(0)
|
self.get(0)
|
||||||
except (praw.errors.APIException, requests.HTTPError,
|
except (praw.errors.APIException, requests.HTTPError,
|
||||||
praw.errors.RedirectException, praw.errors.Forbidden,
|
praw.errors.RedirectException, praw.errors.Forbidden,
|
||||||
praw.errors.InvalidSubreddit):
|
praw.errors.InvalidSubreddit, praw.errors.NotFound):
|
||||||
raise SubredditError(name)
|
raise SubredditError(name)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_name(cls, reddit, name, loader, order='hot', query=None):
|
def from_name(cls, reddit, name, loader, order='hot', query=None):
|
||||||
|
|
||||||
|
name = name.split(':')[0] # remove order specification
|
||||||
name = name.strip(' /') # Strip leading and trailing backslashes
|
name = name.strip(' /') # Strip leading and trailing backslashes
|
||||||
if name.startswith('r/'):
|
if name.startswith('r/'):
|
||||||
name = name[2:]
|
name = name[2:]
|
||||||
@@ -272,9 +276,7 @@ class SubredditContent(BaseContent):
|
|||||||
if '/' in name:
|
if '/' in name:
|
||||||
name, order = name.split('/')
|
name, order = name.split('/')
|
||||||
|
|
||||||
display_name = display_name = '/r/{}'.format(name)
|
display_name = '/r/{0:s} : {1:s}'.format(name, order)
|
||||||
if order != 'hot':
|
|
||||||
display_name += '/{}'.format(order)
|
|
||||||
|
|
||||||
if order not in ['hot', 'top', 'rising', 'new', 'controversial']:
|
if order not in ['hot', 'top', 'rising', 'new', 'controversial']:
|
||||||
raise SubredditError(name)
|
raise SubredditError(name)
|
||||||
@@ -311,7 +313,7 @@ class SubredditContent(BaseContent):
|
|||||||
}
|
}
|
||||||
submissions = dispatch[order](limit=None)
|
submissions = dispatch[order](limit=None)
|
||||||
|
|
||||||
return cls(display_name, submissions, loader)
|
return cls(display_name, submissions, loader, order=order)
|
||||||
|
|
||||||
def get(self, index, n_cols=70):
|
def get(self, index, n_cols=70):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -62,15 +62,37 @@ class SubmissionPage(BasePage):
|
|||||||
self.active = False
|
self.active = False
|
||||||
|
|
||||||
@SubmissionController.register(curses.KEY_F5, 'r')
|
@SubmissionController.register(curses.KEY_F5, 'r')
|
||||||
def refresh_content(self):
|
def refresh_content(self, order='hot'):
|
||||||
"Re-download comments reset the page index"
|
"Re-download comments reset the page index"
|
||||||
|
|
||||||
self.content = SubmissionContent.from_url(
|
self.content = SubmissionContent.from_url(
|
||||||
self.reddit,
|
self.reddit,
|
||||||
self.content.name,
|
self.content.name,
|
||||||
self.loader)
|
self.loader,
|
||||||
|
order=order)
|
||||||
|
|
||||||
self.nav = Navigator(self.content.get, page_index=-1)
|
self.nav = Navigator(self.content.get, page_index=-1)
|
||||||
|
|
||||||
|
@SubmissionController.register('1')
|
||||||
|
def sort_content_hot(self):
|
||||||
|
self.refresh_content(order='hot')
|
||||||
|
|
||||||
|
@SubmissionController.register('2')
|
||||||
|
def sort_content_top(self):
|
||||||
|
self.refresh_content(order='top')
|
||||||
|
|
||||||
|
@SubmissionController.register('3')
|
||||||
|
def sort_content_rising(self):
|
||||||
|
self.refresh_content(order='rising')
|
||||||
|
|
||||||
|
@SubmissionController.register('4')
|
||||||
|
def sort_content_new(self):
|
||||||
|
self.refresh_content(order='new')
|
||||||
|
|
||||||
|
@SubmissionController.register('5')
|
||||||
|
def sort_content_controversial(self):
|
||||||
|
self.refresh_content(order='controversial')
|
||||||
|
|
||||||
@SubmissionController.register(curses.KEY_ENTER, 10, 'o')
|
@SubmissionController.register(curses.KEY_ENTER, 10, 'o')
|
||||||
def open_link(self):
|
def open_link(self):
|
||||||
"Open the current submission page with the webbrowser"
|
"Open the current submission page with the webbrowser"
|
||||||
|
|||||||
@@ -49,13 +49,13 @@ class SubredditPage(BasePage):
|
|||||||
self.controller.trigger(cmd)
|
self.controller.trigger(cmd)
|
||||||
|
|
||||||
@SubredditController.register(curses.KEY_F5, 'r')
|
@SubredditController.register(curses.KEY_F5, 'r')
|
||||||
def refresh_content(self, name=None):
|
def refresh_content(self, name=None, order='hot'):
|
||||||
"Re-download all submissions and reset the page index"
|
"Re-download all submissions and reset the page index"
|
||||||
|
|
||||||
name = name or self.content.name
|
name = name or self.content.name
|
||||||
try:
|
try:
|
||||||
self.content = SubredditContent.from_name(
|
self.content = SubredditContent.from_name(
|
||||||
self.reddit, name, self.loader)
|
self.reddit, name, self.loader, order=order)
|
||||||
except AccountError:
|
except AccountError:
|
||||||
show_notification(self.stdscr, ['Not logged in'])
|
show_notification(self.stdscr, ['Not logged in'])
|
||||||
except SubredditError:
|
except SubredditError:
|
||||||
@@ -65,6 +65,26 @@ class SubredditPage(BasePage):
|
|||||||
else:
|
else:
|
||||||
self.nav = Navigator(self.content.get)
|
self.nav = Navigator(self.content.get)
|
||||||
|
|
||||||
|
@SubredditController.register('1')
|
||||||
|
def refresh_content_hot(self):
|
||||||
|
self.refresh_content(order='hot')
|
||||||
|
|
||||||
|
@SubredditController.register('2')
|
||||||
|
def refresh_content_top(self):
|
||||||
|
self.refresh_content(order='top')
|
||||||
|
|
||||||
|
@SubredditController.register('3')
|
||||||
|
def refresh_content_rising(self):
|
||||||
|
self.refresh_content(order='rising')
|
||||||
|
|
||||||
|
@SubredditController.register('4')
|
||||||
|
def refresh_content_new(self):
|
||||||
|
self.refresh_content(order='new')
|
||||||
|
|
||||||
|
@SubredditController.register('5')
|
||||||
|
def refresh_content_controversial(self):
|
||||||
|
self.refresh_content(order='controversial')
|
||||||
|
|
||||||
@SubredditController.register('f')
|
@SubredditController.register('f')
|
||||||
def search_subreddit(self, name=None):
|
def search_subreddit(self, name=None):
|
||||||
"Open a prompt to search the given subreddit"
|
"Open a prompt to search the given subreddit"
|
||||||
|
|||||||
Reference in New Issue
Block a user