背景:我目前正在使用prawPython 3.7 的库。我的机器人需要做的一件事是检查某些 Reddit 子版块上的最新帖子,看看它们是否包含只是一个图像,没有其他任何东西.
鉴于 Reddit 上有不同类型的帖子(仅上传图像的帖子和带有图像的普通文本帖子),我首先决定区分这两种可能性。据我所知,praw 不提供任何获取 Reddit 帖子类型的功能。
为了处理只有图像而没有其他内容的帖子,我只需检查返回的 praw 的 URL提交 with a 特定的正则表达式:
^http(s)?://i\.redd\.it/\w+\.(png|gif|jpg|jpeg)$
如果 URL 匹配,我就下载图像。这有效。另一方面,对于恰好只包含图像的文本帖子,我检查selftext
属性,对于只包含图像而没有其他内容的帖子来说是这样的:
​\n\nhttps://i.redd.it/xxxxxxxxxx.png
使用上面的正则表达式(删除开始和结束标记),我可以提取 URL 并确保只有一个存在re.findall
。然而,我怎样才能确保绝对存在no帖子中的所有文本(除了空格和奇怪的转义序列​
,我不明白它的目的)?
据我所知,praw 不提供任何获取 Reddit 帖子类型的功能。
PRAW 从 Reddit 的响应中动态加载属性。要了解任何给定对象的可用内容,请参阅 PRAW 文档部分确定对象的可用属性. For a 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
and .is_reddit_media_domain
。第一个会告诉您(作为布尔值)帖子是否是自我帖子,第二个会告诉您(也是作为布尔值)帖子是否是“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
我怎样才能确保图像中完全没有文字
“图像中没有文字”是什么意思?图像中包含文本对您来说意味着什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)