背景:我目前正在使用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
。但是,我怎么能确保有绝对没有任何文字在后(除了空格和怪异的转义序列​
,我不明白它的目的)?
据我所知,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
我怎样才能确保有绝对没有任何文字图像中
你是什么“中的形象没有文本”是什么意思?是什么意思你们使包含文本的图像?