Возможно использовать get_comments
с параметром limit
, установленным на None
, чтобы получить все возможные комментарии. (По умолчанию используется сумма для учетной записи, которая обычно равна 25). (Параметры, которые используются для get_comments
, включают значения для get_content
, включая limit
).
Однако это, вероятно, не будет делать то, что вы хотите – get_comments
(или более конкретно /r/subreddit/comments
) предлагает только список новых комментариев или новых позолоченных комментариев, а не верхние комментарии. И так как get_comments
также ограничен 1000 комментариями, вам будет сложно создать полный список лучших комментариев.
Так что вы действительно хотите, это оригинальный алгоритм –, получающий список лучших материалов, а затем верхние комментарии тех. Это не идеальная система (на слабом счету может быть действительно проголосовавший комментарий), но это лучше всего.
Вот код:
import praw
r = praw.Reddit(user_agent='top_comment_test')
subreddit = r.get_subreddit('opensource')
top = subreddit.get_top(params={'t': 'all'}, limit=25) # For a more potentially accurate set of top comments, increase the limit (but it'll take longer)
all_comments = []
for submission in top:
submission_comments = praw.helpers.flatten_tree(submission.comments)
#don't include non comment objects such as "morecomments"
real_comments = [comment for comment in submission_comments if isinstance(comment, praw.objects.Comment)]
all_comments += real_comments
all_comments.sort(key=lambda comment: comment.score, reverse=True)
top_comments = all_comments[:25] #top 25 comments
print top_comments
Спасибо так много! –
спасибо тоже! – swyx