added viewing user's submissions with ; key or /r/me
This commit is contained in:
@@ -109,7 +109,7 @@ def main():
|
||||
if args.link:
|
||||
page = SubmissionPage(stdscr, reddit, url=args.link)
|
||||
page.loop()
|
||||
page = SubredditPage(stdscr, reddit, args.subreddit)
|
||||
page = SubredditPage(stdscr, reddit, args.subreddit, args.username)
|
||||
page.loop()
|
||||
except praw.errors.InvalidUserPass:
|
||||
print('Invalid password for username: {}'.format(args.username))
|
||||
|
||||
@@ -309,6 +309,19 @@ class SubredditContent(BaseContent):
|
||||
|
||||
return content
|
||||
|
||||
@classmethod
|
||||
def from_reddittor(cls, reddit, username, loader, order='new'):
|
||||
reddittor = reddit.get_redditor(username)
|
||||
submissions = reddittor.get_submitted(sort=order)
|
||||
display_name = '/r/me'
|
||||
content = cls(display_name, submissions, loader)
|
||||
try:
|
||||
content.get(0)
|
||||
except (praw.errors.APIException, requests.HTTPError,
|
||||
praw.errors.RedirectException):
|
||||
raise SubredditError(display_name)
|
||||
return content
|
||||
|
||||
def get(self, index, n_cols=70):
|
||||
"""
|
||||
Grab the `i`th submission, with the title field formatted to fit inside
|
||||
|
||||
@@ -161,11 +161,12 @@ class BasePage(object):
|
||||
MIN_HEIGHT = 10
|
||||
MIN_WIDTH = 20
|
||||
|
||||
def __init__(self, stdscr, reddit, content, **kwargs):
|
||||
def __init__(self, stdscr, reddit, content, username, **kwargs):
|
||||
|
||||
self.stdscr = stdscr
|
||||
self.reddit = reddit
|
||||
self.content = content
|
||||
self.username = username
|
||||
self.nav = Navigator(self.content.get, **kwargs)
|
||||
|
||||
self._header_window = None
|
||||
@@ -246,6 +247,7 @@ class BasePage(object):
|
||||
|
||||
try:
|
||||
self.reddit.login(username, password)
|
||||
self.username = username
|
||||
except praw.errors.InvalidUserPass:
|
||||
show_notification(self.stdscr, ['Invalid user/pass'])
|
||||
else:
|
||||
|
||||
@@ -32,7 +32,7 @@ class SubmissionPage(BasePage):
|
||||
raise ValueError('Must specify url or submission')
|
||||
|
||||
super(SubmissionPage, self).__init__(stdscr, reddit, content,
|
||||
page_index=-1)
|
||||
page_index=-1, username=None)
|
||||
|
||||
def loop(self):
|
||||
self.active = True
|
||||
|
||||
@@ -24,13 +24,13 @@ class SubredditController(BaseController):
|
||||
|
||||
class SubredditPage(BasePage):
|
||||
|
||||
def __init__(self, stdscr, reddit, name):
|
||||
def __init__(self, stdscr, reddit, name, username):
|
||||
|
||||
self.controller = SubredditController(self)
|
||||
self.loader = LoadScreen(stdscr)
|
||||
|
||||
content = SubredditContent.from_name(reddit, name, self.loader)
|
||||
super(SubredditPage, self).__init__(stdscr, reddit, content)
|
||||
super(SubredditPage, self).__init__(stdscr, reddit, content, username)
|
||||
|
||||
def loop(self):
|
||||
while True:
|
||||
@@ -41,7 +41,9 @@ class SubredditPage(BasePage):
|
||||
@SubredditController.register(curses.KEY_F5, 'r')
|
||||
def refresh_content(self, name=None):
|
||||
name = name or self.content.name
|
||||
|
||||
if name == 'me' or name == '/r/me':
|
||||
self.reddittor_profile()
|
||||
return
|
||||
try:
|
||||
self.content = SubredditContent.from_name(
|
||||
self.reddit, name, self.loader)
|
||||
@@ -74,6 +76,16 @@ class SubredditPage(BasePage):
|
||||
if name is not None:
|
||||
self.refresh_content(name=name)
|
||||
|
||||
@SubredditController.register(';')
|
||||
def reddittor_profile(self):
|
||||
if self.reddit.is_logged_in():
|
||||
self.content = SubredditContent.from_reddittor(self.reddit,
|
||||
self.username,
|
||||
self.loader)
|
||||
else:
|
||||
show_notification(self.stdscr, ['Log in to view your profile'])
|
||||
|
||||
|
||||
@SubredditController.register(curses.KEY_RIGHT, 'l')
|
||||
def open_submission(self):
|
||||
"Select the current submission to view posts"
|
||||
|
||||
Reference in New Issue
Block a user