2012-02-05 16 views
7

Chciałbym zapisać liczbę komentarzy Disqus na mojej własnej bazie danych, dzięki czemu mogę sortować artykuły według liczby komentarzy. Zasadniczo, za każdym razem, gdy strona jest czytana na mojej stronie, chciałbym zapytać Disqus, ile komentarzy posiada dana strona, a następnie zaktualizować bazę danych z tą liczbą.Jak uzyskać komentarz w Disqus?

http://docs.disqus.com/help/3/ nie wydaje się być pomocne.

Wszelkie sugestie?

+0

Podany link już nie istnieje. Nowa strona to [Dodawanie komentarza do linku do strony głównej] (https://help.disqus.com/customer/portal/articles/565624-adding-comment-count-links-to-your-home-page) i wydaje się być wystarczająco pomocny. –

Odpowiedz

3

Disqus ma api internetowe, które pozwala programistom komunikować się z danymi Disqus z własnych aplikacji.

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

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

Również można użyć http://disqus.com/api/console/ do testu API

używam https://github.com/disqus/disqus-php

require('disqusapi/disqusapi.php'); 
$disqus = new DisqusAPI('yoursecretkey'); 
print_r($disqus->forums->listThreads(array('forum'=>'your_ shortname'))); 
+5

Biorąc pod uwagę, że liczba komentarzy jest informacją publiczną, szkoda, że ​​uzyskanie jej jest niepotrzebnie skomplikowane. – daluege

4

Get komentarz liczy się z Disqus API

Oto co trzeba zrobić przed rozpoczęciem:

załóż Disqus API key (opcjonalnie) mieć własną witrynę, aby wymienić przykładowe dane

UWAGA: Adres URL, którego używasz, musi być zgodny z ustawieniem adresu URL w Disqus. Zobacz dokumentację Web Integration, aby uzyskać informacje na temat niezawodnej konfiguracji.

Przykład 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> 

Zmienne:

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

składającego wniosek 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>'); 

     } 
    } 
    }); 
}); 
+0

Czy możesz wyjaśnić strukturę adresu URL: https://disqus.com/api/3.0/threads/set.jsonp? więc mam na myśli, kiedy chcemy się liczyć, musimy ustawić adres URL w ten sposób: https://disqus.com/api/3.0/threads/set.jsonp –

0

wiem, jest to stara sprawa, ale Google pojawia się mnóstwo tych tak pytania (to jest najlepszy wynik), głównie bez solidnych odpowiedzi lub odpowiedzi, które zależą od Github API wh ich nie działa bardzo dobrze.


Byłem stara się uzyskać zliczania komentarz przez kilka dni, a także próbował tej klasy API, które wydawały się rozbić mój wniosek z pewnym błędem krytycznym.

Po nieco bardziej poszukiwań natknąłem się na link do wyjścia JSON API Disqus, a po jakimś zabawy napisałem funkcję szybkiego zdobycia liczbę komentarz:

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']; 
    } 

you” Musisz zarejestrować aplikację, aby uzyskać swój publiczny klucz API, który możesz tutaj: https://disqus.com/api/applications/

Ta funkcja wyświetli wtedy całkowitą liczbę komentarzy, które możesz następnie zapisać w bazie danych.

Co robi ta funkcja:

Tablica $json zwraca najwięcej informacji o stronie komentarz plugin jest włączony. Na przykład:

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

Ponieważ powraca array bez żadnych przydatnych klawiszy najlepszych tablicy poziom, możemy zrobić array_search na tablicy za pomocą klucza nazwa kolumny, które będziemy wiedzieć: URL strony, gdzie plugin komentarzy jest ([link])

Spowoduje to zwrócenie klucza tablicy najwyższego poziomu, w tym przypadku 0, który możemy następnie przekazać, aby wyodrębnić pożądane informacje z tablicy, takie jak całkowita liczba komentarzy (klucz tablicy posts).

Mam nadzieję, że to pomoże komuś!

Powiązane problemy