menu search

Disqus API 获取文章信息

Sep 20, 2015

周末空闲时间又开始折腾主题,对小屏幕进行了些处理,同时顶栏不再透明。修改了滑动时大图的视差方向,看起来会正常些。

加入了和Medium差不多的文章底栏,地方略大所以要考虑下放点什么东西上去。分享和作者信息这两项是一定会加的,Medium那里左侧是点赞数量和评论数。然而由于众所周知的原因,Ghost只能依靠第三方评论系统,且暂时没有插件支持,所以获取评论数量这种事情只能在前端搞了。

Disqus获取评论数的方法官方有提供,原理其实就是请求以下js:

https://jimmycai.disqus.com/count-data.js?1=43 

其中43是该页面的id,可以同时获取多个文章的计数。

不过官方倒是没有提供一个类似的方法来获取文章的点赞数(Recommend),所以一开始我在评论旁边放了日期。

第二天起来去翻看了Disqus的API文档,发现可以获取到的东西有很多,像是每个评论的Upvote、Downvote、日期、id、等等内容,其中自然包含有获取文章点赞数的功能。

看文档折腾了下,终于给加上了点赞数。以前这个功能存在感好低,压根都没人点过。可惜不能直接在底栏点击,需要到评论区才行。

API

https://disqus.com/api/3.0/threads/list.json?api_key=公匙&forum=论坛短名&thread=link:文章URL 

官方文档:https://disqus.com/api/docs/

公匙可以在这里注册应用获得,公匙需要绑定域名,而且只能绑定一个。

获取到的是一个JSON,下面是一个例子。

{
   "cursor":{
      "prev":null,
      "hasNext":false,
      "next":"1442064469988959:25:0",
      "hasPrev":false,
      "total":null,
      "id":"1442064469988959:25:0",
      "more":false
   },
   "code":0,
   "response":[
      {
         "feed":"https://jimmycai.disqus.com/0ddda3b181284b76a2dd169554137091/latest.rss",
         "author":"85820024",
         "dislikes":0,
         "likes":2,
         "message":"",
         "id":"4122632352",
         "createdAt":"2015-09-12T13:27:49",
         "category":"3764223",
         "clean_title":"\u5f00\u5b66\u5b63",
         "userScore":0,
         "isSpam":false,
         "signedLink":"https://disq.us/?url=https%3A%2F%2Fjimmycai.org%2Farchives%2F43%2F&key=8hRIha5-lFuMfvzoQ4mViw",
         "isDeleted":false,
         "raw_message":"",
         "isClosed":false,
         "link":"https://jimmycai.org/archives/43/",
         "slug":"0ddda3b181284b76a2dd169554137091",
         "forum":"jimmycai",
         "identifiers":[
            "43"
         ],
         "posts":23,
         "userSubscription":false,
         "title":"\u5f00\u5b66\u5b63",
         "highlightedPost":null
      }
   ]
}

其中的response[posts]就是评论数量,response[likes]是点赞数。

例子

var key = '',
    url = window.location.href,
    disqus_shortname = '';
$.get('https://disqus.com/api/3.0/threads/list.json?api_key=' + key + '&forum=' + disqus_shortname + '&thread=link:' + url, function(json) {
    var likes = json.response[0].likes,
        count = json.response[0].posts;
    console.log('This post has ' + likes + ' likes, and ' + count + ' comments.')
});

key那里填应用的Public Key,因为我只在文章页面获取,所以页面的URL就直接用window.location.href来获取。获取多篇文章的可以加入循环,暂时不知道能不能通过一个AJAX请求来获取多篇文章的。

快给这篇文章点赞

Comments

edit x send markdown image
paragraph comment heart