python-3.x - 无法随机化来自 reddit 的提交
问题描述
我正试图让我的不和谐机器人从 r/memes subreddit 中抓取图像。
这是我与 reddit api 接口的代码
subreddit = reddit.subreddit('memes')
hot_python = subreddit.hot(limit=100)
for submission in hot_python:
print(submission.title)
async def meme():
memes_submissions = reddit.subreddit('memes').hot()
post_to_pick = random.randint(1, 10)
for i in range(0, post_to_pick):
submission = next(x for x in memes_submissions if not x.stickied)
这是我发送所选帖子的代码
elif message.content == "!meme":
channel = message.channel
await message.channel.send(submission.url)
当我运行命令时,它会一遍又一遍地发送相同的模因,而不是随机选择一个。关于如何解决这个问题的任何想法?
解决方案
从 subreddit 获取随机帖子是PRAW 支持的 Reddit 功能。
这是一个从指定的 subreddit 获取随机帖子的函数:
def random_post(subreddit):
return reddit.subreddit(subreddit).random()
如果您希望帖子不被粘贴,请使用:
def random_nonsticky_post(subreddit):
while True:
post = reddit.subreddit(subreddit).random()
if not post.stickied:
return post
正如您在后续问题中所讨论的,重要的是要注意一些 subreddits 不允许随机发布。
推荐阅读
- python - 在 pandas 中使用 nunique 和 groupby 时如何避免用空白/nan计算行
- c# - C#根据类属性过滤类列表字典
- javascript - 捕获整个文本字符串并将其转换为星号
- reactjs - React.js:丢弃 setContext 中未使用的变量
- django - 在 django restframework 视图的视图中更新模型
- android - Android:升级材料:1.0.0 库导致 BottomAppBar 出现问题
- r - 如何在rlang中取消引用函数参数
- javascript - 当我想从输入框中获取值时,我得到未定义的结果
- java - Spring AOP 忽略 JPA 的 repository 方法注解
- .net - 如何获取类型 F# 中字段的 ID