如何从subreddit中随机获取帖子(praw)

2024-10-01 15:42:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个问题:

什么是一个容易的方法得到一个随机的帖子的subreddit?或者最好能在24小时内得到一个随机的帖子。在

在praw的旧版本中,可以使用

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

但是“随机提交”已经不存在了。我知道我可以用

^{pr2}$

但这辆车很笨重而且不节能。另外,我把它用于一个twitter机器人,我用这个代码大约5分钟后就出现了一个错误。在

所以我真的很想知道是否有一个简单的方法来获得一个随机提交的帖子,以及我是否可以在一定的时间范围内(比如最近的24小时)随机提交?在

谢谢!在


Tags: 方法urlsubmissionget机器人twitterrandom帖子
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]

你可以从一个帖子中随机生成一个数字。当只选择过去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]

相关问题 更多 >

    热门问题