使用PHP获取disqus注释计数

时间:2015-06-03 13:40:55

标签: php api disqus

对于其他人以及我来说,这似乎是一个持续存在的问题。但是,即使按照"可能已经有你答案的问题的链接"发布时,我仍然无法使其发挥作用。

我真正想要的是通过传递帖子的标识符(或URL)来给定文章的评论计数。

我从github下载了这个:https://github.com/disqus/disqus-php

然后按照第一个答案:How to get Disqus comment count for a page using Disqus PHP API?这似乎与我想要达到的最接近。这让我走得很远:

<?php
    require_once('scripts/disqusapi/disqusapi.php');
    $disqus = new DisqusAPI('secret_key');
    $page_with_comments = $disqus->posts->details(array('thread'=>"LINK-IDENTIFIER"));
    $comment_count = $page_with_comments->posts;
?>

当我这样做时,我收到了这个错误:

Fatal error: Uncaught exception 'Exception' with message 'Missing required argument: post' in /home/mugheads/public_html/scripts/disqusapi/disqusapi.php:82 Stack trace: #0 /home/mugheads/public_html/test.php(4): DisqusResource->__call('details', Array) #1 /home/mugheads/public_html/test.php(4): DisqusResource->details(Array) #2 {main} thrown in /home/mugheads/public_html/scripts/disqusapi/disqusapi.php on line 82

此错误表示您无法再使用&#34; thread&#34;检索所需的JSON ..无论如何我都无法找到ID如何使用这些帖子作为使用&#34; post&#34;像错误描述只接受一个整数。

如果有人知道更简单的方式,或者肯定有效的方式请分享!

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但谷歌提出了很多这些问题,大多没有任何可靠的答案或答案,这些答案或答案都依赖于这个似乎不能很好地运行的Github API。

我一直在努力让评论计数好几天,并且还尝试了那个似乎使我的应用程序崩溃的API类(可能是由于同样的致命错误)。

经过一番搜索后,我偶然发现了一条指向Disqus API的JSON输出的链接,经过一些游戏后,我编写了一个快速函数来获取评论数:

function getDisqusCount($shortname, $articleUrl) {
        $json = json_decode(file_get_contents("https://disqus.com/api/3.0/forums/listThreads.json?forum=".$shortname."&api_key=".$YourPublicAPIKey),true);

        $array = $json['response'];
        $key = array_search($articleUrl, array_column($array, 'link'));
        return $array[$key]['posts'];
    }

您需要注册一个应用程序以获取您的公共API密钥,您可以在此处执行此操作:https://disqus.com/api/applications/

此功能的作用:

$json数组返回有关您的评论插件所在页面的大量信息。例如:

Array
(
[0] => Array
(
  [feed] => https://SHORTNAME.disqus.com/some_article_url/latest.rss
    [identifiers] => Array
    (
      [0] => CUSTOMIDENTIFIERS
    )

[dislikes] => 0
[likes] => 0
[message] => 
[id] => 5571232032
[createdAt] => 2017-02-21T11:14:33
[category] => 3080471
[author] => 76734285
[userScore] => 0
[isSpam] => 
[signedLink] => https://disq.us/?url=URLENCODEDLINK&key=VWVWeslTZs1K5Gq_BDgctg
[isDeleted] => 
[raw_message] => 
[isClosed] => 
[link] => YOURSITEURLWHERECOMMENTSARE
[slug] => YOURSITESLUG
[forum] => SHORTNAME
[clean_title] => PAGETITLE
[posts] => 0
[userSubscription] => 
[title] => BROWSERTITLE
[highlightedPost] => 
)

 [1] => Array
 (
   ... MORE ARRAYS OF DATA FROM YOUR SHORTNAME FORUM ... etc
 )
)

因为数组返回时没有任何有用的顶级数组键,我们会通过列名键在数组上执行array_search我们将知道:注释插件所在的页面URL([link]

这将返回顶级数组键,在本例中为0,我们可以将其传回以从数组中提取我们想要的信息,例如总注释(数组键posts )。

希望这有助于某人!