implemented subreddit search. search for posts
This commit is contained in:
@@ -245,7 +245,7 @@ class SubredditContent(BaseContent):
|
|||||||
self._submission_data = []
|
self._submission_data = []
|
||||||
|
|
||||||
@classmethod
|
@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:
|
if name is None:
|
||||||
name = 'front'
|
name = 'front'
|
||||||
@@ -263,6 +263,10 @@ class SubredditContent(BaseContent):
|
|||||||
else:
|
else:
|
||||||
display_name = '/r/{}/{}'.format(name, order)
|
display_name = '/r/{}/{}'.format(name, order)
|
||||||
|
|
||||||
|
if search:
|
||||||
|
submissions = reddit.search(search, name, order)
|
||||||
|
|
||||||
|
else:
|
||||||
if name == 'front':
|
if name == 'front':
|
||||||
if order == 'hot':
|
if order == 'hot':
|
||||||
submissions = reddit.get_front_page(limit=None)
|
submissions = reddit.get_front_page(limit=None)
|
||||||
@@ -276,7 +280,6 @@ class SubredditContent(BaseContent):
|
|||||||
submissions = reddit.get_controversial(limit=None)
|
submissions = reddit.get_controversial(limit=None)
|
||||||
else:
|
else:
|
||||||
raise SubredditError(display_name)
|
raise SubredditError(display_name)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
subreddit = reddit.get_subreddit(name)
|
subreddit = reddit.get_subreddit(name)
|
||||||
if order == 'hot':
|
if order == 'hot':
|
||||||
|
|||||||
@@ -50,6 +50,23 @@ class SubredditPage(BasePage):
|
|||||||
else:
|
else:
|
||||||
self.nav = Navigator(self.content.get)
|
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('/')
|
@SubredditController.register('/')
|
||||||
def prompt_subreddit(self):
|
def prompt_subreddit(self):
|
||||||
"Open a prompt to type in a new subreddit"
|
"Open a prompt to type in a new subreddit"
|
||||||
|
|||||||
Reference in New Issue
Block a user