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

问题描述 投票:0回答:3

我有一个问题:

获得 subreddit 的随机帖子的简单方法是什么?或者最好是我能在 24 小时内随机发帖。

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

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

但是“get_random_submission”不存在了。我知道我可以使用像

这样的东西
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 小时)获得该随机提交?

谢谢!

python python-3.x reddit praw
3个回答
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]

0
投票

你可以这样做:

import random
posts = [post for post in subreddit.(limit=limit)]
random_post = random.choice(posts)
© www.soinside.com 2019 - 2024. All rights reserved.