如何检查 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" 是什么意思?图片包含文字对您来说意味着什么?
背景:我目前正在使用带有 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" 是什么意思?图片包含文字对您来说意味着什么?