如何检查 Reddit post 是否仅包含图像而没有其他内容?

How do I check if a Reddit post contains only an image and nothing else?

背景:我目前正在使用带有 Python 3.7 的 praw 库制作一个 Reddit 机器人。我的机器人需要做的一件事是检查某些 subreddit 上的最新 post 以查看它们是否包含 仅图像而没有其他内容.

鉴于 Reddit 上有不同类型的 posts(posts 只是上传的图片和普通文本 posts 中有图片),我首先决定区分这两种可能性。据我所知,praw 没有提供任何功能来获取 Reddit 的类型 post.

为了处理post这些只是图片,没有别的,我只是检查返回的大虾URL submission with a specific regex:

^http(s)?://i\.redd\.it/\w+\.(png|gif|jpg|jpeg)$

如果 URL 匹配,我就下载图片。这行得通。另一方面,对于恰好只包含图像的文本 post,我检查了 selftext 属性,对于仅包含图像的 post 是这样的一张图片,仅此而已:

​\n\nhttps://i.redd.it/xxxxxxxxxx.png

使用上面的正则表达式(删除了开始和结束标记),我可以提取 URL 并确保只有一个到 re.findall。但是,我如何才能确保在 post 中绝对没有 no 文本(除了空格和奇怪的转义序列 ​,我不知道不明白它的用途)?

As far as I'm aware, praw doesn't provide any functionality to get the type of Reddit post.

PRAW 从 Reddit 的响应中动态加载属性。要了解任何给定对象的可用内容,请参阅 PRAW 文档部分 Determine Available Attributes of an Object。对于 Submission,它推荐以下代码段:

import pprint

# assume you have a Reddit instance bound to variable `reddit`
submission = reddit.submission(id='39zje0')
print(submission.title) # to make it non-lazy
pprint.pprint(vars(submission))

这将打印出 dict 个可用属性。使用它,您将发现属性 .is_self.is_reddit_media_domain。第一个会告诉你(作为一个布尔值)post 是否是一个自我 post,第二个会告诉你(也是一个布尔值)post 是否是 "reddit media," 其中还包括视频。而不是将 URL 与正则表达式匹配,只需检查 .is_reddit_media_domain 是否为真且 .domain == 'i.redd.it'.

例如:

In [5]: reddit.submission('anr0l2').is_self
Out[5]: True

In [6]: reddit.submission('anspgf').domain == 'i.redd.it'
Out[6]: True

In [7]: reddit.submission('antg2x').domain == 'i.redd.it'
Out[7]: False

how can I make sure that there is absolutely no text at all in the image

"no text in the image" 是什么意思?图片包含文字对您来说意味着什么?