【问题标题】:Reddit API get comments as they comeReddit API 收到评论
【发布时间】:2018-11-11 13:46:20
【问题描述】:

我有一个函数可以接收 Reddit 评论并回复。我希望这个函数映射到 Reddit 上发布的每条新评论。

我应该如何从 reddit 获取 cmets?经常拉入 100 个最近的 cmets 似乎有点浪费,所以没有遗漏。一种让所有 cmets 比特定评论更新的方法非常好。

理想情况下,cmets 只是一个惰性列表,所以我可以这样做

f :: Comment -> IO ()

getComments :: IO [Comment]

main :: IO ()
main = do
  comments <- getComments
  traverse_ f comments

或者我可以写一个交互函数:

f :: Comment -> Comment

interact :: (Comment -> Comment) -> IO ()

main :: IO ()
main = interact f

【问题讨论】:

  • 我不熟悉 Reddit API,但我猜你需要使用 Options 记录中的分页选项。也就是说,我所看到的文档(包括 Haskell 包和底层 API)相当糟糕,所以你可能需要做一些实验。您可能还会发现 Haskell 包没有为您提供对底层 API 的足够访问权限;我不确定。
  • @dfeuer:就是这样,谢谢!
  • @LeifMetcalf 我建议您将解决方案发布为自我回答。
  • @duplode 我写的可以吗?
  • @LeifMetcalf 没关系。为了锦上添花,请考虑将您的评论抓取功能添加到答案中。

标签: haskell reddit


【解决方案1】:

comments endpoint 有一个查询参数before。将此查询参数设置为任何评论的name 的请求将仅返回比该评论更新的 cmets。

请注意,评论的name 不是它的link_id,这是我一直坚持的。

例如,对www.reddit.com/r/foobar/comments.json?sort=new&before=t1_e9eud8s 的请求将返回在name: t1_e9eud8s 的评论之后发布的 cmets 列表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多