为reddit_api添加flair支持

1 投票
1 回答
827 浏览
提问于 2025-04-17 07:01

我正在尝试为reddit的flair API添加支持到reddit_api中,但我似乎没有进展。

我在urls.py文件中添加了以下内容:

  ("api/", {
            ...
            "flair": "flair/"
           }),

reddit.py文件中,我也添加了以下内容:

@require_login
def set_flair(self, subreddit, user, text='', css_class=''):
    """Set flair of user in given subreddit"""
    url = urls["flair"]
    params = {'r': subreddit,
              'user': user,
              'text': text,
              'css_class': css_class,
              'uh': self.modhash}
    return self._request_json(url, params)

但是我的代码似乎没有任何明显的效果:

import reddit

r = reddit.Reddit(user_agent='User rating modifier')
r.login(user='xxxx', password='xxxx')
r.set_flair('subreddit', 'username', 'textflair', 'cssclass')

我没有收到错误提示,但用户的flair没有在reddit上添加。reddit_api的其他功能对我来说都能正常工作,而且我在reddit上拥有所有正确的版主权限。我是不是在代码的某个地方出错了?

1 个回答

2

这里有一个可以用的 set_flair 函数:

@require_login
def set_flair(self, subreddit, user, text='', css_class=''):
    """Set flair of user in given subreddit"""
    url = urls["flair"]
    params = {'r': subreddit,
              'name': user,
              'text': text,
              'css_class': css_class,
              'uh': self.user.modhash}
    return self._request_json(url, params)

我运行你的代码后遇到的第一个错误是 .error.USER_REQUIRED(“请登录后再进行操作”)。API 明确说明 需要用户的 modhash。所以我把 self.modhash 改成了 self.user.modhash

第二个错误是 .error.NO_USER.field-name。这只是需要把 user 参数改成 name 的问题。

撰写回答