tweet plugin developers blockquote about javascript twitter

javascript - plugin - Obtén Twitter Feed como JSON sin autenticación



twitter button about (8)

Escribí un pequeño JavaScript hace un par de años que capturó el tweet más reciente de los usuarios (el mío) y luego lo analicé para mostrarlo, incluyendo enlaces, fechas, etc.

Utilizó esta llamada json para recuperar los tweets y ya no funciona.

http://twitter.com/statuses/user_timeline/radfan.json

Ahora devuelve el error:

{"errors":[{"message":"Sorry, that page does not exist","code":34}]}

He analizado el uso de la versión api (código a continuación), pero esto requiere una autenticación que preferiría evitar tener que hacer, ya que es solo para mostrar mi último tweet en mi sitio web, que es público de todos modos en mi página de perfil:

http://api.twitter.com/1/statuses/radfan.json

No me he mantenido al tanto de los cambios en la API de Twitter porque ya no trabajo realmente, ¿hay alguna forma de solucionar este problema o ya no es posible?


Anteriormente, la API de búsqueda era la única API de Twitter que no requería algún tipo de OAuth . Ahora sí requiere autenticación.

La API de búsqueda de Twitter se adquiere a partir de una adquisición de terceros: rara vez la admiten y, al parecer, no están sin sentido de que exista. Además de eso, hay muchas limitaciones a la carga útil, que incluyen pero no se limitan a un conjunto muy reducido de pares clave: valor en el archivo JSON o XML que recibe.

Cuando escuché esto, me sorprendió. Pasé mucho tiempo pensando cómo usar la menor cantidad de código para hacer una simple solicitud GET (como mostrar una línea de tiempo).

Decidí tomar la ruta OAuth para poder garantizar una carga útil relevante. Necesita un lenguaje de servidor para hacer esto. JavaScript es visible para los usuarios finales, por lo que es una mala idea incluir las claves y los secretos necesarios en un archivo .js.

No quería usar una gran biblioteca, por lo que la respuesta para mí fue PHP y la ayuda de la respuesta de @Rivers here . La respuesta debajo de @ lackovic10 describe cómo incluir consultas en su autenticación.

Espero que esto ayude a otros a ahorrar tiempo pensando en cómo utilizar la API de Twitter con el nuevo requisito de OAuth .


Aquí hay un hack rápido (realmente un hack, debe usarse con precaución ya que no es una prueba de futuro) que utiliza http://anyorigin.com para raspar el sitio de Twitter para los últimos tweets.

http://codepen.io/JonOlick/pen/XJaXBd

Funciona usando anyorigin (tienes que pagar para usarlo) para capturar el HTML. Luego analiza el HTML usando jquery para extraer los tweets relevantes.

Los tweets en el sitio móvil usan un div con la clase .tweet-text, así que esto es bastante indoloro.

El código relevante se ve así:

$.getJSON(''http://anyorigin.com/get?url=mobile.twitter.com/JonOlick&callback=?'', function(data){ // Remap ... utf8 encoding to ascii. var bar = data.contents; bar = bar.replace(/…/g, ''...''); var el = $( ''<div></div>'' ); el.html(bar); // Change all links to point back at twitter $(''.twitter-atreply'', el).each(function(i){ $(this).attr(''href'', "https://twitter.com" + $(this).attr(''href'')) }); // For all tweets $(''.tweet-text'', el).each(function(i){ // We only care about the first 4 tweets if(i < 4) { var foo = $(this).html(); $(''#test'').html($(''#test'').html() + "<div class=ProfileTweet><div class=ProfileTweet-contents>" + foo + "</div></div><br>"); } }); });



El método "GET statuses / user_timeline" necesita una autenticación de usuario como se puede ver en la documentación oficial:

Puede utilizar el método de búsqueda "OBTENER búsqueda" que no requiere autenticación.

Tiene un código para comenzar aquí: http://jsfiddle.net/73L4c/6/

function searchTwitter(query) { $.ajax({ url: ''http://search.twitter.com/search.json?'' + jQuery.param(query), dataType: ''jsonp'', success: function(data) { var tweets = $(''#tweets''); tweets.html(''''); for (res in data[''results'']) { tweets.append(''<div>'' + data[''results''][res][''from_user''] + '' wrote: <p>'' + data[''results''][res][''text''] + ''</p></div><br />''); } } }); } $(document).ready(function() { $(''#submit'').click(function() { var params = { q: $(''#query'').val(), rpp: 5 }; // alert(jQuery.param(params)); searchTwitter(params); }); })


Puede acceder y eliminar Twitter a través de la búsqueda avanzada sin haber iniciado sesión:

Solicitud GET

Al realizar una solicitud de búsqueda básica se obtiene:

https://twitter.com/search?q=Babylon%205&src=typd

  • q (nuestra consulta codificada)
  • src (se supone que es el origen de la consulta, es decir, se escribe)

De forma predeterminada, Twitter devuelve los 25 mejores resultados, pero si hace clic en all , puede obtener los tweets en tiempo real:

https://twitter.com/search?f=realtime&q=Babylon%205&src=typd

Contenidos JSON

Más tweets se cargan en la página a través de AJAX:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd&include_available_features=1&include_entities=1&last_note_ts=85&max_position=TWEET-553069642609344512-553159310448918528-BD1UO2FFu9QAAAAAAAAETAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Usa max_position para solicitar los siguientes tweets.

La siguiente matriz json devuelve todo lo que necesita para raspar el contenido:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd

  • has_more_items (bool)
  • items_html (html)
  • max_position (clave)
  • refresh_cursor (clave)

Elementos DOM

Aquí viene una lista de DOM elements que puede utilizar para extraer

Los autores manejan twitter.

div.original-tweet[data-tweet-id]

El nombre del autor

div.original-tweet[data-name]

El ID de usuario del autor.

div.original-tweet[data-user-id]

Marca de tiempo del post

span._timestamp[data-time]

Marca de tiempo del post en ms

span._timestamp[data-time-ms]

Texto de Tweet

p.tweet-text

Número de retweets

span.ProfileTweet-action–retweet > span.ProfileTweet-actionCount[data-tweet-stat-count]

Número de Favo

span.ProfileTweet-action–favorite > span.ProfileTweet-actionCount[data-tweet-stat-count]

Recursos


Puedes usar la api v1 de twitter para tomar los tweets sin usar OAuth. Por ejemplo: this enlace convierte los últimos 100 tweets de @Jack.

La documentación de la línea de tiempo está here .