praw:获得提交的天赋

时间:2017-05-24 00:32:48

标签: reddit praw

我使用PRAW处理reddit提交,特别是已经解决的提交并且具有他们的"天赋"属性设置为SOLVED(如here所述)。

然而,我得到了"没有"当我检查天赋时,即使是我能看到的提交已经设置为已解决。

我有以下代码,它适用于肯定已设置为已解决的提交。

solvedSubmission = reddit.submission(url='https://www.reddit.com/r/PhotoshopRequest/comments/6ctkpj/specific_can_someone_please_remove_kids_12467_i/')
pprint.pprint(vars(solvedSubmission))

输出:

{'_comments_by_id': {},  
'_fetched': False,
'_flair': None,
'_info_params': {}, 
'_mod': None, 
'_reddit': <praw.reddit.Reddit object at 0x10e3ae1d0>, 
'comment_limit': 2048, 
'comment_sort': 'best', 
'id': '6ctkpj'}

任何人都可以提供任何见解,为什么我在这篇文章和其他已解决的帖子中看到&#34;无&#34;?还有另一种方法,reddit会跟踪我应该研究的已解决的帖子吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

到现在为止(在OP之后大约1年)你可能已经解决了这个问题,但是我在搜索中找到了答案,因为我找到了答案,我将分享。

您从未见过任何相关信息的原因是PRAW uses lazy objects so that network requests to Reddit’s API are only issued when information is needed。您需要使其非延迟才能检索所有可用数据。以下是一个最小的工作示例:

import praw
import pprint

reddit = praw.Reddit() # potentially needs configuring, see docs
solved_url = 'https://www.reddit.com/r/PhotoshopRequest/comments/6ctkpj/specific_can_someone_please_remove_kids_12467_i/'

post = reddit.submission(url=solved_url)
print(post.title) # this will fetch the lazy submission-object...
pprint.pprint(vars(solvedSubmission)) # ... allowing you to list all available fields

pprint - 输出中,您将在撰写此答案时(2018年3月)发现以下字段:

...
'link_flair_text': 'SOLVED',
...

...这是您希望在代码中使用的内容,例如像这样:

is_solved = 'solved' == post.link_flair_text.strip().lower()

因此,要将其包装起来,您需要让PRAW发出网络请求以获取提交对象,将其从惰性转换为完整实例;您可以通过打印,分配变量或通过使用所需的字段名称直接进入对象来完成此操作。