Как получить количество комментариев в Disqus? - PullRequest
7 голосов
/ 05 февраля 2012

Я бы хотел сохранить счетчик комментариев Disqus в моей собственной базе данных, чтобы я мог отсортировать свои статьи по количеству комментариев.По сути, каждый раз, когда на моем сайте читается страница, я хотел бы спросить Disqus, сколько комментариев имеется на этой странице, а затем обновить базу данных с таким количеством.кажется полезным.

Есть предложения?

Ответы [ 4 ]

6 голосов
/ 06 декабря 2013

Получить количество комментариев с помощью disqus API

Вот что вам нужно сделать перед началом:

Зарегистрируйтесь для получения ключа Disqus API (необязательно)собственный сайт для замены данных примера

ПРИМЕЧАНИЕ. Используемый вами URL-адрес должен совпадать с тем, который задан в качестве URL-адреса в Disqus.См. Документацию по Web Integration для получения информации о надежной настройке.

Пример HTML

<!DOCTYPE html>
<html>
    <head>
        <title>Disqus Comment Counts Example</title>
    </head>
    <body>
        <h1>Comment Counts Example</h1>
        <div>
            <a href="http://thenextweb.com/google/2013/05/03/fullscreen-beam-launches-first-youtube-app-for-google-glass-with-public-or-private-sharing/">
                <h2>Fullscreen BEAM: The first YouTube app for Google Glass comes with public or private sharing</h2>
                <div class="count-comments" data-disqus-url="http://thenextweb.com/google/2013/05/03/fullscreen-beam-launches-first-youtube-app-for-google-glass-with-public-or-private-sharing/"></div>
            </a>
        </div>
        <div>
            <a href="http://thenextweb.com/apps/2013/05/04/traktor-dj/">
                <h2>Traktor DJ: Native Instruments remixes its impressive DJ software for iPhone</h2>
                <div class="count-comments" data-disqus-url="http://thenextweb.com/apps/2013/05/04/traktor-dj/"></div>
            </a>
        </div>
        <div>
            <a href="http://thenextweb.com/video/2013/05/04/ninja-innovation-in-the-21st-century-with-gary-shapiro-of-the-consumer-electronics-association-at-tnw2013-video/">
                <h2>Ninja innovation in the 21st Century with the Consumer Electronics Association&#8217;s Gary Shapiro [Video]</h2>
                <div class="count-comments" data-disqus-url="http://thenextweb.com/video/2013/05/04/ninja-innovation-in-the-21st-century-with-gary-shapiro-of-the-consumer-electronics-association-at-tnw2013-video/"></div>
            </a>
        </div>
        <button type="button" id="get-counts-button">Get Comment Counts</button>
    </body>
</html>

Переменные:

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
  var disqusPublicKey = "YOUR_PUBLIC_KEY";
  var disqusShortname = "thenextweb"; // Replace with your own shortname

  var urlArray = [];
  $('.count-comments').each(function () {
    var url = $(this).attr('data-disqus-url');
    urlArray.push('link:' + url);
  });
});
</script>

Создание API запроса

$('#get-counts-button').click(function () {
  $.ajax({
    type: 'GET',
    url: "https://disqus.com/api/3.0/threads/set.jsonp",
    data: { api_key: disqusPublicKey, forum : disqusShortname, thread : urlArray },
    cache: false,
    dataType: 'jsonp',
    success: function (result) {

      for (var i in result.response) {

        var countText = " comments";
        var count = result.response[i].posts;

        if (count == 1)
          countText = " comment";

        $('div[data-disqus-url="' + result.response[i].link + '"]').html('<h4>' + count + countText + '</h4>');

      }
    }
  });
});
3 голосов
/ 14 октября 2012

Disqus имеет веб-API, который позволяет разработчикам взаимодействовать с данными Disqus из своих собственных приложений.

http://disqus.com/api/docs/

http://disqus.com/api/docs/forums/listThreads/

Также вы можете использовать http://disqus.com/api/console/ для проверки API

Я использую https://github.com/disqus/disqus-php

require('disqusapi/disqusapi.php');
$disqus = new DisqusAPI('yoursecretkey');
print_r($disqus->forums->listThreads(array('forum'=>'your_ shortname')));
1 голос
/ 21 февраля 2017

Я знаю, что это старый вопрос, но Google выдает много таких SO вопросов (это лучший результат), в основном без каких-либо четких ответов или ответов, которые основаны на Github API, который, кажется, не очень хорошо работает .


Я изо всех сил пытался получить количество комментариев в течение нескольких дней, а также пробовал тот класс API, который, казалось, вылетал из моего приложения с некоторой фатальной ошибкой.

После более продолжительного поиска я наткнулся на ссылку на вывод JSON API Disqus, и после некоторой игры я написал быструю функцию для получения количества комментариев:

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).

Надеюсь, это кому-нибудь поможет!

1 голос
/ 20 мая 2013

Я использовал это, чтобы получить количество комментариев:

http://help.disqus.com/customer/portal/articles/565624

Он обновляет ссылку, которую вы указали на странице: Вторая статья

Содержание ссылки «Вторая статья» будет заменено количеством комментариев.то есть "22 комментария".Чем использовать ajax для обновления вашей базы данных с количеством комментариев.

...