如何检查是否reddit的职位只包含一个图像,并没有别的?

问题描述 投票:1回答:1

背景:我目前正在使用praw库与Python 3.7 reddit的机器人。我的一个机器人需要做的一件事就是检查一些版(Subreddit)将最新的帖子,看看它们是否包含只是一个形象而已。

由于有不同类型的Reddit上的职位(职位,只是上传的图片,并与他们的图像普通文本的帖子),我第一次决定这两种可能性之间进行区分的。据我所知,praw不提供任何功能得到reddit的岗位类型。

要处理哪些职位只是图片,没有别的,我只是检查了submission返回praw specific regex的网址:

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

如果URL匹配,我刚才下载的图像。这工作。在另一方面,对于发生在只包含一个图像文本的帖子,我检查selftext属性,它是这样的包含只是一个形象,并没有别的帖子:

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

使用上述正则表达式(除去开头和结束标记),我可以提取URL,并确保只有一个是有过re.findall。但是,我怎么能确保有绝对没有任何文字在后(除了空格和怪异的转义序列​,我不明白它的目的)?

python regex reddit praw
1个回答
1
投票

据我所知,praw不提供任何功能得到reddit的岗位类型。

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。第一个会告诉你一个职位(如一个boolean)是否是一个自我后,第二个会告诉你(也可以作为一个布尔)后是否是“reddit的媒体”,其中还包括视频。而不是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

我怎样才能确保有绝对没有任何文字图像中

你是什​​么“中的形象没有文本”是什么意思?是什么意思你们使包含文本的图像?

© www.soinside.com 2019 - 2024. All rights reserved.