diff --git a/rtv/__main__.py b/rtv/__main__.py index 796dd0d..9cc78b0 100644 --- a/rtv/__main__.py +++ b/rtv/__main__.py @@ -19,7 +19,6 @@ from .__version__ import __version__ __all__ = [] - def load_config(): """ Search for a configuration file at the location ~/.rtv and attempt to load @@ -98,13 +97,15 @@ def main(): config.unicode = args.unicode + # Squelch SSL warnings for Ubuntu + logging.captureWarnings(True) if args.log: logging.basicConfig(level=logging.DEBUG, filename=args.log) try: print('Connecting...') reddit = praw.Reddit(user_agent=AGENT) - reddit.config.decode_html_entities = True + reddit.config.decode_html_entities = False if args.username: # PRAW will prompt for password if it is None reddit.login(args.username, args.password) diff --git a/rtv/content.py b/rtv/content.py index d7cc17f..c6bbd8b 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -1,4 +1,5 @@ import textwrap +import logging import praw import requests @@ -8,6 +9,7 @@ from .helpers import humanize_timestamp, wrap_text, strip_subreddit_url __all__ = ['SubredditContent', 'SubmissionContent'] +_logger = logging.getLogger(__name__) class BaseContent(object): @@ -41,14 +43,22 @@ class BaseContent(object): retval = [] while stack: item = stack.pop(0) - if isinstance(item, praw.objects.MoreComments) and ( - item.count == 0): - continue - nested = getattr(item, 'replies', None) - if nested: - for n in nested: - n.nested_level = item.nested_level + 1 - stack[0:0] = nested + if isinstance(item, praw.objects.MoreComments): + if item.count == 0: + # MoreComments item count should never be zero, but if it + # is then discard the MoreComment object. Need to look into + # this further. + continue + else: + if item._replies is None: + # Attach children MoreComment replies to parents + # https://github.com/praw-dev/praw/issues/391 + item._replies = [stack.pop(0)] + nested = getattr(item, 'replies', None) + if nested: + for n in nested: + n.nested_level = item.nested_level + 1 + stack[0:0] = nested retval.append(item) return retval @@ -120,7 +130,7 @@ class SubmissionContent(BaseContent): list for repeat access. """ - def __init__(self, submission, loader, indent_size=2, max_indent_level=4): + def __init__(self, submission, loader, indent_size=2, max_indent_level=8): self.indent_size = indent_size self.max_indent_level = max_indent_level @@ -133,7 +143,7 @@ class SubmissionContent(BaseContent): self._comment_data = [self.strip_praw_comment(c) for c in comments] @classmethod - def from_url(cls, reddit, url, loader, indent_size=2, max_indent_level=4): + def from_url(cls, reddit, url, loader, indent_size=2, max_indent_level=8): try: with loader(): @@ -210,7 +220,7 @@ class SubmissionContent(BaseContent): elif data['type'] == 'MoreComments': with self._loader(): - comments = data['object'].comments(update=False) + comments = data['object'].comments(update=True) comments = self.flatten_comments(comments, root_level=data['level']) comment_data = [self.strip_praw_comment(c) for c in comments]