¿Cómo recuperar tweets desde la línea de comandos?

11

¿Hay una manera simple de recuperar los tweets de alguien desde la línea de comandos?

La cuenta sería pública y el comando, o secuencia de comandos, si fuera necesario, recuperaría todos o un número específico de los tweets más recientes en un archivo de texto, un tweet por línea, sin los metadatos, el más nuevo en la primera línea.

Sin el uso de API, solo bash.

Strapakowsky
fuente
use la API de Python, fácil y dulce
BigSack
no de la manera que preferiría, pero por curiosidad, ¿qué API de Python, algún enlace o está en los repositorios?
Strapakowsky
1
Hay un contenedor de API python-twitter.
jokerdino

Respuestas:

7

A partir de una fecha de cierre, Twitter no le permitirá ingresar a su API sin tener una clave OAuth. Pero como solución alternativa puede usar la API de búsqueda. Es RESTful, por lo que puede usar curlpara recuperar resultados de búsqueda en formato JSON. Por ejemplo, si desea recuperar los tweets de @java y guardarlos en un archivo ~/.tweets, puede usar esta línea de código:

curl http://search.twitter.com/search.json?q=from:java&page=1&rpp=10&callback=? >> $HOME/.tweets

Y puede analizar el archivo, utilizando cualquier analizador JSON.


El rppparámetro es el número de tweets que se recuperarán. callbackes la función de JavaScript que se ejecutará en el JSON resultante. En caso de que no estés usando JavaScript con la API, ¿puedes dejarlo ?, pero no lo elimines. Causaré un error. Puede encontrar más orientación sobre la API de búsqueda en https://dev.twitter.com/docs/api/1/get/search

Hay herramientas para analizar JSON desde la interfaz de línea de comandos. Aunque nunca he usado uno, pondré algunos enlaces a algunos recursos, para ayudarlo a encontrar la herramienta más adecuada:

Y como pequeña nota, es más rápido usar Python o Ruby (u otros).

andrew.46
fuente
Se ve bien, gracias @g_kaya. ¿Cómo puedo especificar, por ejemplo, todos los tweets, o el máximo permitido, o 400 tweets? ¿Cuál es la devolución de llamada y las opciones de rpp? ¿Me puede recomendar un analizador JSON de línea de comandos?
Strapakowsky
He editado mi respuesta según sus preguntas. Espero que ayude :)
Me alegra que sean útiles, de
Ya no funciona
Dean Meehan
1
"errors": [{"message": "La API REST de Twitter v1 ya no está activa. Migre a la API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cabalgata
5

Si no desea utilizar la API de Twitter, puede obtener el feed RSS del perfil de Twitter utilizando un script bash y luego proceder a formatearlo desde allí.

Dado que la API de Twitter ha dejado de utilizar la fuente RSS, puede solucionar esto generando una fuente RSS utilizando los resultados de búsqueda.

Aquí está el feed RSS de mis tweets .


Sin embargo, tendrías que armar el script bash necesario. Desde buscar la fuente RSS hasta formatear los tweets según sus requisitos.

jokerdino
fuente
Gracias @jokerdino. Estoy bien con el formato del archivo, si tengo acceso al archivo sin formato. Como pregunto aquí ( webapps.stackexchange.com/questions/34066/… ), solía haber un xml con todos los tweets, pero no más. El feed rss tiene un rango de tiempo limitado y no pude encontrar cómo descargar, por ejemplo, todos sus tweets desde el enlace que envió. ¿Puede usted ayudar?
Strapakowsky
1
Aparentemente, solo puedes acceder a tweets de hasta 9 días de antigüedad. Cualquier cosa anterior a eso no está disponible a través de la búsqueda o incluso a través de la API.
jokerdino
¿Estás seguro de que no hay forma de obtener tweets de más de 9 días? Abrí una pregunta aquí: webapps.stackexchange.com/questions/34070/…
Strapakowsky
Ir directamente a la página del usuario le permite seguir desplazándose hacia abajo para que el javascript cargue la página siguiente sin límites. ¿Sería explotable recuperar todos los tweets?
Strapakowsky
Este enlace dice que no puede recuperar más de una semana de tweets usando la API de búsqueda. Y no estoy seguro de buscar tweets usando JavaScript. Por lo que sé, no puedes leer más de aproximadamente 3000 tweets de la línea de tiempo.
jokerdino
2

Este es mi script hecho para el uso del protector de pantalla

#!/bin/bash

user="$1"
user="${user:=pontifex_pl}"

last_status_url=$(lynx -dump https://twitter.com/$user \
    | grep -i "$user/status/" \
    | head -1 \
    | awk '{print $2}')

lynx -dump "$last_status_url" \
    | grep 'Twitter:' -m1 -A4 \
    | tr -d '\n' \
    | sed -e 's/[^"]*"//' -e 's/".*//' \
    | tr -s ' '

echo
tworec
fuente
1

Creé una herramienta que debería hacer casi exactamente lo que describiste: twitter-screen-scrape . De forma predeterminada, se generará en JSON, con metadatos, pero es trivial canalizar la salida a través de algo como subrayado-cli para eliminar todo lo que no desea.

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile
Jerga
fuente
1

Podrías seguir la ruta python + tweepy de la siguiente manera:

  1. Crear su propia aplicación de Twitter (para obtener claves de API)
  2. Crea tokens de acceso para tu cuenta de Twitter
  3. Utilice un script como este junto con sus credenciales: https://gist.github.com/yanofsky/5436496

Lo acabo de probar y funciona muy bien. Sin embargo, hay usuarios que protegen sus tweets, por lo que es posible que no le permita descargar todo. Pero esa es una característica de Twitter.

El límite sigue siendo 3200 y obtienes un archivo CSV.

Andrei
fuente
1

Puede usar twarcpara dar un ejemplo si desea archivar los tweets de Nassim Nicholas Taleb que usa.

twarc timeline nntaleb --format csv> taleb.csv 

También puedes usar otros formatos: --format {json,csv,csv-excel}

Cómo configurar twarc: la única forma de obtener los tweets completos es usar APIdesafortunadamente, incluso si la aplicación es transparente, debe tener una configuración y configuración iniciales, también debe solicitar la API(

A partir de julio de 2018, debe solicitar una cuenta de desarrollador de Twitter y ser aprobado antes de poder crear nuevas aplicaciones.

)

Una vez que tenga las claves de su aplicación , puede saber twarccuáles son con el comando configure.

twarc configure

Esto almacenará sus credenciales en un archivo llamado .twarcen su directorio personal para que no tenga que seguir introduciéndolos en. Si prefiere suministrar directamente se puede establecer en el medio ambiente ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) o usando las opciones de línea de comandos ( --consumer_key` --consumer_secret` --access_token, --access_token_secret).

Eduard Florinescu
fuente