2012-02-05 14 views
7

Me gustaría almacenar el recuento de comentarios de Disqus en mi propia base de datos, de modo que pueda ordenar mis artículos por recuento de comentarios. Básicamente, cada vez que se lee una página en mi sitio, me gustaría preguntarle a Disq cuántos comentarios tiene determinada página y luego actualizar la base de datos con ese conteo.¿Cómo obtengo comentarios en Disqus?

http://docs.disqus.com/help/3/ no parece ser útil.

¿Alguna sugerencia?

+0

El enlace que proporcionó ya no existe. La nueva página es [Agregando enlaces de conteo de comentarios a su página de inicio] (https://help.disqus.com/customer/portal/articles/565624-adding-comment-count-links-to-your-home-page) y parece lo suficientemente útil. –

Respuesta

3

Disqus tienen una API web que permite a los desarrolladores comunicarse con los datos de Disqus desde sus propias aplicaciones.

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

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

también se puede utilizar para probar http://disqus.com/api/console/ API

utilizo https://github.com/disqus/disqus-php

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

Dado que el conteo de comentarios es una información pública, es una pena que parece ser innecesariamente complicado obtenerla. – daluege

1

He utilizado este para obtener el recuento comentario:

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

Es actualiza un enlace se establece en la página: Second article

El contenido del enlace 'Segundo artículo' será reemplazado por el recuento de comentario. es decir, "22 comentarios". Luego usa ajax para actualizar tu cuenta de DB con el recuento de comentarios.

4

conteos Get comentario con API de Disqus

Esto es lo que tendrá que haber hecho antes de comenzar:

Registro de Disqus API key (opcional) Tener su propio sitio para reemplazar los datos del ejemplo

NOTA: La URL que use debe coincidir con la establecida como la URL en Disqus. Consulte los documentos de integración web para obtener información sobre cómo configurarlo de manera confiable.

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

Variables:

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

realizar la consulta 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

¿Puedes explicar la estructura de la URL: https://disqus.com/api/3.0/threads/set.jsonp? así que me refiero a cuando queremos obtener la cuenta que necesitamos para configurar la URL de esta manera: https://disqus.com/api/3.0/threads/set.jsonp –

0

Sé que esto es una cuestión de edad, pero Google se convierte en imagen un montón de estos SO preguntas (este es el resultado principal), en su mayoría sin respuestas sólidas o respuestas que se basan en la API Github wh No parece funcionar muy bien.


que había estado luchando para obtener el comentario recuento de días, y también trataron de esa clase API que parecía chocar mi solicitud con algún error grave.

Después de un poco más de búsqueda, me encontré con un enlace a la salida JSON de la API de Disqus, y después de algún jugando, me escribió una función rápida para obtener el comentario recuento:

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

Usted' Necesitaré registrar una aplicación para obtener su clave API pública, que puede hacer aquí: https://disqus.com/api/applications/

Esta función simplemente mostrará el número total de comentarios que puede almacenar en la base de datos o lo que sea.

Lo que hace esta función:

La matriz $json regresa mucha información sobre la página de su comentario sobre el plugin es. Por ejemplo:

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

Como la matriz de devoluciones sin ningún claves de matriz de nivel superior útiles, que hacen un array_search en la matriz por una clave de nombre de columna que vamos a saber: la URL de su página en la que los comentarios plugin es ([link])

Esto devolverá la clave de matriz de nivel superior, en este caso 0 que luego podemos devolver para extraer la información que queremos de la matriz, como los comentarios totales (clave de matriz posts).

Espero que esto ayude a alguien!

Cuestiones relacionadas