Merge branch 'morecomment-speed'

This commit is contained in:
Michael Lazar
2015-04-17 20:43:00 -07:00
2 changed files with 24 additions and 13 deletions

View File

@@ -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)

View File

@@ -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]