如何从 subreddit 中随机获取 post (praw)
How to fetch a random post from a subreddit (praw)
我有一个问题:
获得随机 post subreddit 的简单方法是什么?或者最好是我能在 24 小时内随机 post。
在旧版本的 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 分钟后我收到错误消息。
所以我真的很想知道是否有一种简单的方法可以随机 post 提交,我是否可以在特定时间范围内(例如最近 24 小时)获得随机提交?
谢谢!
您可以进一步简化代码并避免双重循环。
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]
您可以随机生成一个 post,方法是生成一个数字,然后从列表中获取 post。如果只选择过去 24 小时内的 post,您需要先用这些 post 填充一个数组。我将当前时间与提交 post 的时间进行比较,如果小于 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]
我有一个问题:
获得随机 post subreddit 的简单方法是什么?或者最好是我能在 24 小时内随机 post。
在旧版本的 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 分钟后我收到错误消息。
所以我真的很想知道是否有一种简单的方法可以随机 post 提交,我是否可以在特定时间范围内(例如最近 24 小时)获得随机提交?
谢谢!
您可以进一步简化代码并避免双重循环。
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]
您可以随机生成一个 post,方法是生成一个数字,然后从列表中获取 post。如果只选择过去 24 小时内的 post,您需要先用这些 post 填充一个数组。我将当前时间与提交 post 的时间进行比较,如果小于 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]