implemented subreddit search. search for posts

This commit is contained in:
Tobin
2015-03-31 10:47:15 -05:00
parent ac98f564a3
commit 26aab7a2cd
2 changed files with 46 additions and 26 deletions

View File

@@ -245,7 +245,7 @@ class SubredditContent(BaseContent):
self._submission_data = []
@classmethod
def from_name(cls, reddit, name, loader, order='hot'):
def from_name(cls, reddit, name, loader, order='hot', search=None):
if name is None:
name = 'front'
@@ -263,34 +263,37 @@ class SubredditContent(BaseContent):
else:
display_name = '/r/{}/{}'.format(name, order)
if name == 'front':
if order == 'hot':
submissions = reddit.get_front_page(limit=None)
elif order == 'top':
submissions = reddit.get_top(limit=None)
elif order == 'rising':
submissions = reddit.get_rising(limit=None)
elif order == 'new':
submissions = reddit.get_new(limit=None)
elif order == 'controversial':
submissions = reddit.get_controversial(limit=None)
else:
raise SubredditError(display_name)
if search:
submissions = reddit.search(search, name, order)
else:
subreddit = reddit.get_subreddit(name)
if order == 'hot':
submissions = subreddit.get_hot(limit=None)
elif order == 'top':
submissions = subreddit.get_top(limit=None)
elif order == 'rising':
submissions = subreddit.get_rising(limit=None)
elif order == 'new':
submissions = subreddit.get_new(limit=None)
elif order == 'controversial':
submissions = subreddit.get_controversial(limit=None)
if name == 'front':
if order == 'hot':
submissions = reddit.get_front_page(limit=None)
elif order == 'top':
submissions = reddit.get_top(limit=None)
elif order == 'rising':
submissions = reddit.get_rising(limit=None)
elif order == 'new':
submissions = reddit.get_new(limit=None)
elif order == 'controversial':
submissions = reddit.get_controversial(limit=None)
else:
raise SubredditError(display_name)
else:
raise SubredditError(display_name)
subreddit = reddit.get_subreddit(name)
if order == 'hot':
submissions = subreddit.get_hot(limit=None)
elif order == 'top':
submissions = subreddit.get_top(limit=None)
elif order == 'rising':
submissions = subreddit.get_rising(limit=None)
elif order == 'new':
submissions = subreddit.get_new(limit=None)
elif order == 'controversial':
submissions = subreddit.get_controversial(limit=None)
else:
raise SubredditError(display_name)
# Verify that content exists for the given submission generator.
# This is necessary because PRAW loads submissions lazily, and

View File

@@ -50,6 +50,23 @@ class SubredditPage(BasePage):
else:
self.nav = Navigator(self.content.get)
@SubredditController.register('f')
def search_subreddit(self, name=None):
name = name or self.content.name
attr = curses.A_BOLD | Color.CYAN
prompt = 'Search this Subreddit: '
n_rows, n_cols = self.stdscr.getmaxyx()
self.stdscr.addstr(n_rows - 1, 0, prompt, attr)
self.stdscr.refresh()
window = self.stdscr.derwin(1, n_cols - len(prompt),
n_rows - 1, len(prompt))
window.attrset(attr)
search = text_input(window)
if search is not None:
self.content = SubredditContent.from_name(self.reddit, name,
self.loader, search=search)
@SubredditController.register('/')
def prompt_subreddit(self):
"Open a prompt to type in a new subreddit"