2

サブレディットのトップコメントを常に取得する必要があります。

私はすべての投稿を取得し、それらを反復しようとしましたが、残念ながら、取得できる投稿の数は 1000 に制限されています.

を使用してみSubreddit.get_commentsましたが、25 コメントしか返されません。

だから私はそれを回避する方法を探しています。

あなたは私を助けることができます?

4

1 に答える 1

7

set toget_commentsのパラメーターを使用して、利用可能なすべてのコメントを取得することができます。(デフォルトでは、通常は 25 であるアカウントの金額を使用します)。( に使用されるパラメータには、 を含む のパラメータが含まれます)。limitNoneget_commentsget_contentlimit

ただし、これはおそらくあなたが望んでいることではありません – 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
于 2015-09-12T00:21:00.410 に答える