From b02d867c47e75c8493b606c262151cf566804395 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Wed, 28 Sep 2016 21:02:54 +0100 Subject: [PATCH 01/10] added max column width for comments --- rtv/config.py | 7 ++++++- rtv/content.py | 10 ++++++---- rtv/submission_page.py | 7 +++++-- rtv/templates/rtv.cfg | 3 +++ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/rtv/config.py b/rtv/config.py index 5fe3e0e..ec33781 100644 --- a/rtv/config.py +++ b/rtv/config.py @@ -67,6 +67,9 @@ def build_parser(): parser.add_argument( '--enable-media', dest='enable_media', action='store_const', const=True, help='Open external links using programs defined in the mailcap config') + parser.add_argument( + '--max-comment-cols', dest='max_comment_cols', type=int, + help='Maximum comment column width') return parser @@ -240,8 +243,10 @@ class Config(object): 'enable_media': partial(config.getboolean, 'rtv'), 'history_size': partial(config.getint, 'rtv'), 'oauth_redirect_port': partial(config.getint, 'rtv'), - 'oauth_scope': lambda x: rtv[x].split(',') + 'oauth_scope': lambda x: rtv[x].split(','), + 'max_comment_cols': partial(config.getint, 'rtv') } + for key, func in params.items(): if key in rtv: rtv[key] = func(key) diff --git a/rtv/content.py b/rtv/content.py index 7aa3b8b..cc0c9d1 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -295,7 +295,7 @@ class SubmissionContent(Content): """ def __init__(self, submission, loader, indent_size=2, max_indent_level=8, - order=None): + order=None, max_comment_cols=70): submission_data = self.strip_praw_submission(submission) comments = self.flatten_comments(submission.comments) @@ -308,17 +308,19 @@ class SubmissionContent(Content): self._submission = submission self._submission_data = submission_data self._comment_data = [self.strip_praw_comment(c) for c in comments] + self._max_comment_cols = max_comment_cols @classmethod def from_url(cls, reddit, url, loader, indent_size=2, max_indent_level=8, - order=None): + order=None, max_comment_cols=70): url = url.replace('http:', 'https:') # Reddit forces SSL # Sometimes reddit will return a 403 FORBIDDEN when trying to access an # np link while using OAUTH. Cause is unknown. url = url.replace('https://np.', 'https://www.') submission = reddit.get_submission(url, comment_sort=order) - return cls(submission, loader, indent_size, max_indent_level, order) + return cls(submission, loader, indent_size, max_indent_level, order, + max_comment_cols) @property def range(self): @@ -346,7 +348,7 @@ class SubmissionContent(Content): data['offset'] = indent_level * self.indent_size if data['type'] == 'Comment': - width = n_cols - data['offset'] + width = min(n_cols - data['offset'], self._max_comment_cols) data['split_body'] = self.wrap_text(data['body'], width=width) data['n_rows'] = len(data['split_body']) + 1 else: diff --git a/rtv/submission_page.py b/rtv/submission_page.py index 2a5148c..cc14f2f 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -23,10 +23,13 @@ class SubmissionPage(Page): super(SubmissionPage, self).__init__(reddit, term, config, oauth) self.controller = SubmissionController(self, keymap=config.keymap) + if url: - self.content = SubmissionContent.from_url(reddit, url, term.loader) + self.content = SubmissionContent.from_url(reddit, url, term.loader, + max_comment_cols=config['max_comment_cols']) else: - self.content = SubmissionContent(submission, term.loader) + self.content = SubmissionContent(submission, term.loader, + max_comment_cols=config['max_comment_cols']) # Start at the submission post, which is indexed as -1 self.nav = Navigator(self.content.get, page_index=-1) self.selected_subreddit = None diff --git a/rtv/templates/rtv.cfg b/rtv/templates/rtv.cfg index c1e9de3..74c23f0 100644 --- a/rtv/templates/rtv.cfg +++ b/rtv/templates/rtv.cfg @@ -57,6 +57,9 @@ oauth_redirect_port = 65000 ; Access permissions that will be requested. oauth_scope = edit,history,identity,mysubreddits,privatemessages,read,report,save,submit,subscribe,vote +; Maximum number of columns for a comment +max_comment_cols = 20 + [bindings] ############## # Key Bindings From 29c1d06662168e166f831a679eed4e4fdf3e21e3 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Wed, 28 Sep 2016 21:10:33 +0100 Subject: [PATCH 02/10] added max column width for comments --- rtv/submission_page.py | 6 ++++-- rtv/subreddit_page.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/rtv/submission_page.py b/rtv/submission_page.py index cc14f2f..2090f70 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -25,10 +25,12 @@ class SubmissionPage(Page): self.controller = SubmissionController(self, keymap=config.keymap) if url: - self.content = SubmissionContent.from_url(reddit, url, term.loader, + self.content = SubmissionContent.from_url( + reddit, url, term.loader, max_comment_cols=config['max_comment_cols']) else: - self.content = SubmissionContent(submission, term.loader, + self.content = SubmissionContent( + submission, term.loader, max_comment_cols=config['max_comment_cols']) # Start at the submission post, which is indexed as -1 self.nav = Navigator(self.content.get, page_index=-1) diff --git a/rtv/subreddit_page.py b/rtv/subreddit_page.py index e112661..2684bed 100644 --- a/rtv/subreddit_page.py +++ b/rtv/subreddit_page.py @@ -140,7 +140,7 @@ class SubredditPage(Page): # Check that the subreddit can be submitted to name = self.content.name - if '+' in name or name in ('/r/all', '/r/front', '/r/me','/u/saved'): + if '+' in name or name in ('/r/all', '/r/front', '/r/me', '/u/saved'): self.term.show_notification("Can't post to {0}".format(name)) return @@ -272,4 +272,4 @@ class SubredditPage(Page): self.term.add_line(win, text, attr=Color.YELLOW) if data['flair']: text = ' {flair}'.format(**data) - self.term.add_line(win, text, attr=Color.RED) + self.term.add_line(win, text, attr=Color.RED) \ No newline at end of file From 2f52e2951d77932f0336294d3a3e5d96393fcec5 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Wed, 28 Sep 2016 21:12:19 +0100 Subject: [PATCH 03/10] set max_comment_cols = 80 --- rtv/templates/rtv.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtv/templates/rtv.cfg b/rtv/templates/rtv.cfg index 74c23f0..ef11a57 100644 --- a/rtv/templates/rtv.cfg +++ b/rtv/templates/rtv.cfg @@ -58,7 +58,7 @@ oauth_redirect_port = 65000 oauth_scope = edit,history,identity,mysubreddits,privatemessages,read,report,save,submit,subscribe,vote ; Maximum number of columns for a comment -max_comment_cols = 20 +max_comment_cols = 80 [bindings] ############## From da35f8cb533f6d469da51cb304a3ee62a35764dd Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Wed, 28 Sep 2016 21:13:39 +0100 Subject: [PATCH 04/10] set max_comment_cols=80 --- rtv/content.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtv/content.py b/rtv/content.py index cc0c9d1..cab025e 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -295,7 +295,7 @@ class SubmissionContent(Content): """ def __init__(self, submission, loader, indent_size=2, max_indent_level=8, - order=None, max_comment_cols=70): + order=None, max_comment_cols=80): submission_data = self.strip_praw_submission(submission) comments = self.flatten_comments(submission.comments) @@ -312,7 +312,7 @@ class SubmissionContent(Content): @classmethod def from_url(cls, reddit, url, loader, indent_size=2, max_indent_level=8, - order=None, max_comment_cols=70): + order=None, max_comment_cols=80): url = url.replace('http:', 'https:') # Reddit forces SSL # Sometimes reddit will return a 403 FORBIDDEN when trying to access an From 408bf89fd54dfcf50d87a388f97074d81e982eb0 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Thu, 29 Sep 2016 09:15:21 +0100 Subject: [PATCH 05/10] removed command line flag for max-comment-cols --- rtv/config.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/rtv/config.py b/rtv/config.py index ec33781..91ce2ff 100644 --- a/rtv/config.py +++ b/rtv/config.py @@ -67,9 +67,6 @@ def build_parser(): parser.add_argument( '--enable-media', dest='enable_media', action='store_const', const=True, help='Open external links using programs defined in the mailcap config') - parser.add_argument( - '--max-comment-cols', dest='max_comment_cols', type=int, - help='Maximum comment column width') return parser From e4e89039ad8e3dc1805d14d3f41137001eb21fe2 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Thu, 29 Sep 2016 09:18:43 +0100 Subject: [PATCH 06/10] default max_comment_cols set to 120 and moved to general settings --- rtv/templates/rtv.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtv/templates/rtv.cfg b/rtv/templates/rtv.cfg index ef11a57..5e52a80 100644 --- a/rtv/templates/rtv.cfg +++ b/rtv/templates/rtv.cfg @@ -37,6 +37,9 @@ history_size = 200 ; Open external links using programs defined in the mailcap config. enable_media = False +; Maximum number of columns for a comment +max_comment_cols = 120 + ################ # OAuth Settings ################ @@ -57,9 +60,6 @@ oauth_redirect_port = 65000 ; Access permissions that will be requested. oauth_scope = edit,history,identity,mysubreddits,privatemessages,read,report,save,submit,subscribe,vote -; Maximum number of columns for a comment -max_comment_cols = 80 - [bindings] ############## # Key Bindings From 7b9c6b58886b2e99feb2a6a3c01f895b21b9124c Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Thu, 29 Sep 2016 09:19:45 +0100 Subject: [PATCH 07/10] missed reference to SubmissionContent.from_url() in self.refresh_content() --- rtv/submission_page.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtv/submission_page.py b/rtv/submission_page.py index 2090f70..bca6dfa 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -71,7 +71,8 @@ class SubmissionPage(Page): with self.term.loader('Refreshing page'): self.content = SubmissionContent.from_url( - self.reddit, url, self.term.loader, order=order) + self.reddit, url, self.term.loader, order=order, + max_comment_cols=config['max_comment_cols']) if not self.term.loader.exception: self.nav = Navigator(self.content.get, page_index=-1) From 7e8986b3d46b89c616833a0bed90c3fd247c12b1 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Thu, 29 Sep 2016 09:30:49 +0100 Subject: [PATCH 08/10] default max_comment_cols set to 120 --- rtv/content.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtv/content.py b/rtv/content.py index cab025e..9c72b33 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -295,7 +295,7 @@ class SubmissionContent(Content): """ def __init__(self, submission, loader, indent_size=2, max_indent_level=8, - order=None, max_comment_cols=80): + order=None, max_comment_cols=120): submission_data = self.strip_praw_submission(submission) comments = self.flatten_comments(submission.comments) @@ -312,7 +312,7 @@ class SubmissionContent(Content): @classmethod def from_url(cls, reddit, url, loader, indent_size=2, max_indent_level=8, - order=None, max_comment_cols=80): + order=None, max_comment_cols=120): url = url.replace('http:', 'https:') # Reddit forces SSL # Sometimes reddit will return a 403 FORBIDDEN when trying to access an From 1824b1efd0927d5145a33ff5e8a385ccc98d65a9 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Thu, 29 Sep 2016 09:31:49 +0100 Subject: [PATCH 09/10] added max_comment_cols to self.refresh_content() --- rtv/submission_page.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rtv/submission_page.py b/rtv/submission_page.py index bca6dfa..d359d43 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -63,7 +63,7 @@ class SubmissionPage(Page): self.active = False @SubmissionController.register(Command('REFRESH')) - def refresh_content(self, order=None, name=None): + def refresh_content(self, order=None, name=None, max_comment_cols=120): "Re-download comments and reset the page index" order = order or self.content.order @@ -72,7 +72,7 @@ class SubmissionPage(Page): with self.term.loader('Refreshing page'): self.content = SubmissionContent.from_url( self.reddit, url, self.term.loader, order=order, - max_comment_cols=config['max_comment_cols']) + max_comment_cols=max_comment_cols) if not self.term.loader.exception: self.nav = Navigator(self.content.get, page_index=-1) @@ -155,7 +155,8 @@ class SubmissionPage(Page): time.sleep(2.0) if self.term.loader.exception is None: - self.refresh_content() + self.refresh_content( + max_comment_cols=config['max_comment_cols']) else: raise TemporaryFileError() From 3358e39fbf6089f3ef5e710bf47039803d572593 Mon Sep 17 00:00:00 2001 From: Alexandre Kaskasoli Date: Thu, 29 Sep 2016 09:39:37 +0100 Subject: [PATCH 10/10] fixed reference to config (forgot self.) --- rtv/submission_page.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/rtv/submission_page.py b/rtv/submission_page.py index d359d43..784c25c 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -63,7 +63,7 @@ class SubmissionPage(Page): self.active = False @SubmissionController.register(Command('REFRESH')) - def refresh_content(self, order=None, name=None, max_comment_cols=120): + def refresh_content(self, order=None, name=None): "Re-download comments and reset the page index" order = order or self.content.order @@ -72,7 +72,7 @@ class SubmissionPage(Page): with self.term.loader('Refreshing page'): self.content = SubmissionContent.from_url( self.reddit, url, self.term.loader, order=order, - max_comment_cols=max_comment_cols) + max_comment_cols=self.config['max_comment_cols']) if not self.term.loader.exception: self.nav = Navigator(self.content.get, page_index=-1) @@ -155,8 +155,7 @@ class SubmissionPage(Page): time.sleep(2.0) if self.term.loader.exception is None: - self.refresh_content( - max_comment_cols=config['max_comment_cols']) + self.refresh_content() else: raise TemporaryFileError()