サブレディットのトップコメントを常に取得する必要があります。
私はすべての投稿を取得し、それらを反復しようとしましたが、残念ながら、取得できる投稿の数は 1000 に制限されています.
を使用してみSubreddit.get_comments
ましたが、25 コメントしか返されません。
だから私はそれを回避する方法を探しています。
あなたは私を助けることができます?
set toget_comments
のパラメーターを使用して、利用可能なすべてのコメントを取得することができます。(デフォルトでは、通常は 25 であるアカウントの金額を使用します)。( に使用されるパラメータには、 を含む のパラメータが含まれます)。limit
None
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