From e3dcada8924651d1de11abd202002927ca39a85e Mon Sep 17 00:00:00 2001 From: woorst Date: Mon, 3 Sep 2018 21:25:26 -0400 Subject: [PATCH 1/3] View submission snippet from subreddit page --- rtv/content.py | 13 +++++++++++-- rtv/subreddit_page.py | 10 ++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/rtv/content.py b/rtv/content.py index f174e394..f4e7575f 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -443,12 +443,14 @@ class SubredditContent(Content): """ def __init__(self, name, submissions, loader, order=None, - max_title_rows=4, query=None, filter_nsfw=False): + max_title_rows=4, max_text_rows=6, query=None, + filter_nsfw=False): self.name = name self.order = order self.query = query self.max_title_rows = max_title_rows + self.max_text_rows = max_text_rows self.filter_nsfw = filter_nsfw self._loader = loader self._submissions = submissions @@ -704,7 +706,14 @@ def get(self, index, n_cols=70): if len(data['split_title']) > self.max_title_rows: data['split_title'] = data['split_title'][:self.max_title_rows-1] data['split_title'].append('(Not enough space to display)') - data['n_rows'] = len(data['split_title']) + 3 + data['split_text'] = self.wrap_text(data['text'], width=n_cols) + data['split_text'] = [_ for _ in data['split_text'] if _] + if self.max_text_rows <= 0: + data['split_text'] = [] + elif len(data['split_text']) > self.max_text_rows: + data['split_text'] = data['split_text'][:self.max_text_rows-1] + data['split_text'].append('(Not enough space to display)') + data['n_rows'] = len(data['split_title'] + data['split_text']) + 3 data['h_offset'] = 0 return data diff --git a/rtv/subreddit_page.py b/rtv/subreddit_page.py index 6a857d92..edf9b28f 100644 --- a/rtv/subreddit_page.py +++ b/rtv/subreddit_page.py @@ -341,7 +341,13 @@ def _draw_item(self, win, data, inverted): if row in valid_rows: self.term.add_line(win, '{url}'.format(**data), row, 1, attr) - row = n_title + offset + 1 + n_text = len(data['split_text']) + attr = self.term.attr('SubmissionText') + for row, text in enumerate(data['split_text'], start=n_title+offset+1): + if row in valid_rows: + self.term.add_line(win, text, row, 1, attr) + + row = n_title + n_text + offset + 1 if row in valid_rows: attr = self.term.attr('Score') @@ -389,7 +395,7 @@ def _draw_item(self, win, data, inverted): self.term.add_space(win) self.term.add_line(win, 'NSFW', attr=attr) - row = n_title + offset + 2 + row = n_title + n_text + offset + 2 if row in valid_rows: attr = self.term.attr('SubmissionAuthor') self.term.add_line(win, '{author}'.format(**data), row, 1, attr) From 01dab62e79924ba687becda30f1410ef9b35acc6 Mon Sep 17 00:00:00 2001 From: woorst Date: Wed, 12 Sep 2018 19:35:26 -0400 Subject: [PATCH 2/3] selftext is viewable before opening submission --- rtv/content.py | 39 +++++++++++++++++++++------------------ rtv/page.py | 3 +-- rtv/submission_page.py | 9 +++------ rtv/templates/rtv.cfg | 3 +++ 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/rtv/content.py b/rtv/content.py index f4e7575f..c786cea3 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -171,7 +171,9 @@ def strip_praw_comment(cls, comment): data['type'] = 'SavedComment' data['level'] = None - data['title'] = '[Comment] {0}'.format(comment.body) + data['title'] = '[Comment] {0}'.format(comment.link_title) + data['body'] = comment.body + #data['body'] = str(list(comment.__dict__.keys())[20:]) data['comments'] = None data['url_full'] = comment._fast_permalink data['url'] = comment._fast_permalink @@ -216,7 +218,7 @@ def strip_praw_submission(cls, sub): data['object'] = sub data['type'] = 'Submission' data['title'] = sub.title - data['text'] = sub.selftext + data['body'] = sub.selftext data['created'] = cls.humanize_timestamp(sub.created_utc) data['created_long'] = cls.humanize_timestamp(sub.created_utc, True) data['comments'] = '{0} comments'.format(sub.num_comments) @@ -367,7 +369,7 @@ def get(self, index, n_cols=70): elif index == -1: data = self._submission_data data['split_title'] = self.wrap_text(data['title'], width=n_cols-2) - data['split_text'] = self.wrap_text(data['text'], width=n_cols-2) + data['split_text'] = self.wrap_text(data['body'], width=n_cols-2) data['n_rows'] = len(data['split_title'] + data['split_text']) + 5 data['h_offset'] = 0 @@ -443,14 +445,12 @@ class SubredditContent(Content): """ def __init__(self, name, submissions, loader, order=None, - max_title_rows=4, max_text_rows=6, query=None, - filter_nsfw=False): + selftext_preview=True, query=None, filter_nsfw=False): self.name = name self.order = order self.query = query - self.max_title_rows = max_title_rows - self.max_text_rows = max_text_rows + self.selftext_preview = selftext_preview self.filter_nsfw = filter_nsfw self._loader = loader self._submissions = submissions @@ -469,7 +469,8 @@ def __init__(self, name, submissions, loader, order=None, raise exceptions.NoSubmissionsError(full_name) @classmethod - def from_name(cls, reddit, name, loader, order=None, query=None): + def from_name(cls, reddit, name, loader, order=None, query=None, + selftext_preview=False): """ Params: reddit (praw.Reddit): Instance of the reddit api. @@ -645,8 +646,10 @@ def from_name(cls, reddit, name, loader, order=None, query=None): filter_nsfw = (reddit.user and reddit.user.over_18 is False) # We made it! + selftext_preview = True if resource_root == 'u' else selftext_preview return cls(display_name, submissions, loader, order=display_order, - query=query, filter_nsfw=filter_nsfw) + query=query, filter_nsfw=filter_nsfw, + selftext_preview=selftext_preview) @property def range(self): @@ -703,16 +706,16 @@ def get(self, index, n_cols=70): # Modifies the original dict, faster than copying data = self._submission_data[index] data['split_title'] = self.wrap_text(data['title'], width=n_cols) - if len(data['split_title']) > self.max_title_rows: - data['split_title'] = data['split_title'][:self.max_title_rows-1] - data['split_title'].append('(Not enough space to display)') - data['split_text'] = self.wrap_text(data['text'], width=n_cols) - data['split_text'] = [_ for _ in data['split_text'] if _] - if self.max_text_rows <= 0: + if self.selftext_preview: + data['split_text'] = self.wrap_text(data['body'], width=n_cols) + data['split_text'] = [_ for _ in data['split_text'] if _] + else: data['split_text'] = [] - elif len(data['split_text']) > self.max_text_rows: - data['split_text'] = data['split_text'][:self.max_text_rows-1] - data['split_text'].append('(Not enough space to display)') + #if self.max_text_rows <= 0: + # data['split_text'] = [] + #elif len(data['split_text']) > self.max_text_rows: + # data['split_text'] = data['split_text'][:self.max_text_rows-1] + # data['split_text'].append('(Not enough space to display)') data['n_rows'] = len(data['split_title'] + data['split_text']) + 3 data['h_offset'] = 0 diff --git a/rtv/page.py b/rtv/page.py index 21d1da10..089aae0b 100644 --- a/rtv/page.py +++ b/rtv/page.py @@ -263,12 +263,11 @@ def edit(self): self.term.flash() return + content = data.get('body') if data['type'] == 'Submission': - content = data['text'] info = docs.SUBMISSION_EDIT_FILE.format( content=content, id=data['object'].id) elif data['type'] == 'Comment': - content = data['body'] info = docs.COMMENT_EDIT_FILE.format( content=content, id=data['object'].id) else: diff --git a/rtv/submission_page.py b/rtv/submission_page.py index 5cbc5add..397e5896 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -159,10 +159,7 @@ def open_pager(self): n_rows, n_cols = self.term.stdscr.getmaxyx() data = self.get_selected_item() - if data['type'] == 'Submission': - text = '\n\n'.join((data['permalink'], data['text'])) - self.term.open_pager(text, wrap=n_cols) - elif data['type'] == 'Comment': + if data['type'] in ['Submission', 'Comment']: text = '\n\n'.join((data['permalink'], data['body'])) self.term.open_pager(text, wrap=n_cols) else: @@ -181,7 +178,7 @@ def add_comment(self): data = self.get_selected_item() if data['type'] == 'Submission': - body = data['text'] + body = data['body'] reply = data['object'].add_comment elif data['type'] == 'Comment': body = data['body'] @@ -233,7 +230,7 @@ def comment_urlview(self): """ data = self.get_selected_item() - comment = data.get('body') or data.get('text') or data.get('url_full') + comment = data.get('body') or data.get('url_full') if comment: self.term.open_urlview(comment) else: diff --git a/rtv/templates/rtv.cfg b/rtv/templates/rtv.cfg index 837ee154..f0262892 100644 --- a/rtv/templates/rtv.cfg +++ b/rtv/templates/rtv.cfg @@ -51,6 +51,9 @@ hide_username = False ; been installed into either the custom of default theme paths. ;theme = molokai +; Display body of self post in subreddit listings +selftext_preview = True + ################ # OAuth Settings ################ From 92cb3025d48992b259a71d30e622900158c8f403 Mon Sep 17 00:00:00 2001 From: woorst Date: Wed, 12 Sep 2018 19:44:16 -0400 Subject: [PATCH 3/3] delete commented code --- rtv/content.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/rtv/content.py b/rtv/content.py index c786cea3..4c302b90 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -173,7 +173,6 @@ def strip_praw_comment(cls, comment): data['level'] = None data['title'] = '[Comment] {0}'.format(comment.link_title) data['body'] = comment.body - #data['body'] = str(list(comment.__dict__.keys())[20:]) data['comments'] = None data['url_full'] = comment._fast_permalink data['url'] = comment._fast_permalink @@ -711,11 +710,6 @@ def get(self, index, n_cols=70): data['split_text'] = [_ for _ in data['split_text'] if _] else: data['split_text'] = [] - #if self.max_text_rows <= 0: - # data['split_text'] = [] - #elif len(data['split_text']) > self.max_text_rows: - # data['split_text'] = data['split_text'][:self.max_text_rows-1] - # data['split_text'].append('(Not enough space to display)') data['n_rows'] = len(data['split_title'] + data['split_text']) + 3 data['h_offset'] = 0