2017-10-22 26 views
0

質問があります:サブレジット(プロー)からランダム投稿を取得する方法

サブレッジのランダム投稿を取得する簡単な方法はありますか?または、24時間以内にランダム投稿を作成できれば最高です。 prawの古いバージョンでは

、あなたはしかし、 "get_random_submission" はもはや存在しない

sub = r.get_subreddit('earthporn') 
posts = sub.get_random_submission() 
print(posts.url) 

を使用することができます。

sub = r.subreddit('all') 
    for posts in sub.hot(limit=20): 
     random_post_number = random.randint(0,20) 
     for i,posts in enumerate(sub.hot(limit=20)): 
      if i==random_post_number: 
       print(posts.score) 

しかし、これは非常にバグであり、電力効率は良くありません。プラス私はこれをtwitterボットに使用しています。このコードで5分後にエラーが発生します。

投稿のランダム投稿を簡単に取得する方法があるかどうか、特定の期間内にランダム投稿を得ることができたら、本当に知りたいですか(過去24時間など)?

ありがとうございます!

答えて

0

コードを単純化して、2重ループを避けることができます。

sub = r.subreddit('all') 
posts = [post for post in sub.hot(limit=20)] 
random_post_number = random.randint(0, 20) 
random_post = posts[random_post_number] 
0

ランダムな投稿は、番号を生成して一覧から取得することで得ることができます。過去24時間の投稿のみを選択する場合は、最初に投稿を配列に入力する必要があります。私は現在の時間と投稿が提出された時間とを比較します.24時間未満であれば、それをリストpostsに追加します。

これは、あなたが何をするかを決めるために無作為に提出することができます。この投稿はrandom_postという名前です。

import praw 
import time 
import random 


LIMIT_POST = 5 

subreddit = reddit.subreddit('all') 
new_submissions = subreddit.new(limit = LIMIT_POST) 

current_time = int(time.time()) 

posts = [] 

for submission in new_submissions: 
     sub_age = ((current_time - submission.created_utc) /60 /60 /24) 
     if sub_age < 1: 
       posts.append(submission) 


random_number = random.randint(0,LIMIT_POST -1) 
random_post = posts[random_number] 
関連する問題