Skip to content

twarc

twarc es una recurso de línea de commando y catálogo de Python para archivar JSON dato de Twitter. Cada tweet se representa como un artículo de JSON que es exactamente lo que fue capturado del API de Twitter. Los Tweets se archivan como JSON de línea orientado. twarc se encarga del límite de tarifa del API de Twitter. twarc también puede facilitar la colección de usuarios, tendencias y detallar las identificaciones de los tweets.

twarc fue desarrollado como parte del proyecto Documenting the Now el cual fue financiado por el Mellon Foundation.

La Instalación

Antes de usar twarc es necesario registrarse por apps.twitter.com. Después de establecer la solicitud, se anota el clabe del consumidor, el secreto del consumidor, y entoces clickear para generar un access token y el secretro del access token. Con estos quatros requisitos, está listo para usar twarc. 1. Instala Python (2 ó 3) 2. Instala twarc atraves de pip (si estas acezando de categoría: pip install --upgrade twarc)

Quickstart:

Para empezar, se nececita dirigir a twarc sobre los claves de API:

twarc configure

Prueba una búsqueda:

twarc search blacklivesmatter > search.josnl

¿O quizás, preferirá coleccionar tweets en tiempo real?

twarc filter blacklivesmatter > stream.josnl

Vea abajo por detalles sobre estos commandos y más.

Uso

Configure

Una vez que tenga sus claves de aplicación, puede dirigir a twarc lo que son con el commando configure.

twarc configure

Esto archiva sus credenciales en un archivo que se llama .twarc en su directorio personal para que no tenga que volver a ingresar los datos. Si prefiere ingresar los datos directamente, se puede establecer en el ambiente (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) o usando las opciones de línea commando (--consumer_key, --consumer_secret, --access_token, --access_token_secret).

Esto se usa para las búsquedas de Twitter para descargar preexistentes tweets que corresponde a una consulta en particular.

twarc search blacklivesmatter > tweets.jsonl

Es importante a notar que este search dara resultados los tweets que se encuentran dentro de una ventana de siete dias como se imponga la búsqueda del Twitter API. Si parece una ventana mínima, lo es, pero puede ser que el interés es en coleccionar tweets en tiempo real usando filter y sample commandos detallados abajo.

La mejor manera de familiares con la búsqueda de syntax de Twitter es experimentado con el Búsqueda Avanzada de Twitter y copiar y pegar la consulta de la caja de búsqueda. Por ejemplo, abajo hay una consulta más complicada que busca los tweets que contienen #blacklivesmatter OR #blm hastags que se enviaron a deray.

twarc search '#blacklivesmatter OR #blm to:deray' > tweets.jsonl

Twitter puede codificar el lenguaje de un tweet, y puede limitar su búsqueda a un lenguaje particular:

twarc search '#blacklivesmatter' --lang fr > tweets.jsonl

También, puede buscar tweets dentro de un lugar geográfico, por ejemplo, los tweets que menciona blacklivesmatter que están a una milla del centro de Ferguson, Missouri:

twarc search blacklivesmatter --geocode 38.7442,-90.3054,1mi > tweets.jsonl

Si una bsqueda no está identificado cuando se usa "--geocode" se regresa a los tweets en esa ubicación y radio:

twarc search --geocode 38.7442,-90.3054,1mi > tweets.jsonl

Filter

El commando "filter" se usa Twitter's "status/filter" API para coleccionar tweets en tiempo real.

twarc filter blacklivesmatter,blm > tweets.jsonl

Favor de notar que el sintaxis para los track queries de Twitter es differente de las búsquedas en el search API. Favor de consultar la documentación.

Use el commando follow para coleccionar tweets de una identificación de usuario en particular en tiempo real. Incluye retweets. Por ejemplo, esto colecciona tweets y retweets de CNN:

twarc filter --follow 759251 > tweets.jsonl

También se puede coleccionar tweets usando un "bounding box". Nota: ¡el primer guion necesita estar escapado en el "bounding box" si no, estará interpretado como un argumento de línea de commando!

twarc filter --locations "\-74,40,-73,41" > tweets.jsonl

Si combina las opciones serán "OR'ed" juntos. Por ejemplo, esto colecciona los tweets que usan los hashtags de blacklivesmatter o blm y tambien tweets del usario CNN:

twarc filter blacklivesmatter,blm --follow 759251 > tweets.jsonl

Sample

Usa el commando sample para probar a los statuses/API de muestra para una muestra "azar" de tweets recientes.

twarc sample > tweets.jsonl

Dehydrate

El commando dehydrate genera una lista de id's de un archivo de tweets:

twarc dehydrate tweets.jsonl > tweet-ids.txt

Hydrate

El mando hydrate busca a través de un archivo de identificadores y regresa el JSON del tweet usando el "status/lookup API".

twarc hydrate ids.txt > tweets.jsonl

Los términos de servicio del API de Twitter desalientan los usuarios a hacer público por el internet los datos de Twitter. Los datos se pueden usar para el estudio y archivado para uso local, pero no para compartir público. Aún, Twitter permite archivos de identificadores de Twitter ser compartidos. Puede usar el API de Twitter para hidratar los datos, o recuperar el completo JSON dato. Esto es importante para la verificación del estudio de los redes sociales.

Users

El commando user regresa metadata de usuario para los nobres de pantalla.

twarc users deray,Nettaaaaaaaa > users.jsonl

También puede acceder ids de usuario:

twarc users 1232134,1413213 > users.jsonl

Si quiere, también se puede usar un archivo de user ids:

twarc users ids.txt > users.jsonl

Followers

El commando followers usa el follower id API para coleccionar los user ids para un nombre de pantalla por búsqueda:

twarc followers deray > follower_ids.txt

El resultado incluye un user id por cada línea. El orden es en reversa cronológica, o los followers más recientes.

Friends

El commando friends usa el friend id API de Twitter para coleccionar los friend user ids para un nombre de pantalla por búsqueda:

twarc friends deray > friend_ids.txt

El commando trends regresa información del Twitter API sobre los hashtags populares. Necesita ingresar un Where on Earth idenfier (woeid) para indicar cual temas quieres buscar. Por ejemplo:

twarc trends 2486982

Usando un woeid de 1 regresara temas para el planeta:

twarc trends 1

También se puede omitir el woeid y los datos que regresan serán una lista de los lugares por donde Twitter localiza las temas:

twarc trends

Si tiene un geo-location, puede usarlo.

twarc trends 39.9062,-79.4679

twarc buscara el lugar usando el trends/closest API para encontrar el woeid más cerca.

Timeline

El commando timeline usa el user timeline API para coleccionar los tweets más recientes del usuario indicado por el nombre de pantalla.

twarc timeline deray > tweets.jsonl

También se puede buscar usuarios usando un user id:

twarc timeline 12345 > tweets.jsonl

Retweets

Se puede buscar retweets de un tweet específico:

twarc retweets 824077910927691778 > retweets.jsonl

Replies

Desafortunadamente, el API de Twitter no soporte buscando respuestas a un tweet. Entonces, twarc usa el search API. EL search API no regresa tweets mayores de siete días.

Si quieres buscar las respuestas de un tweet:

twarc replies 824077910927691778 > replies.jsonl

El commando --recursive regresa respuestos a los respuestos. Esto puede tomar mucho tiempo para un thread muy grande porque el rate liming por el search API.

twarc replies 824077910927691778 --recursive

Lists

Para conseguir los usuarios en una lista, se puede usar el list URL con el commando listmembers.

twarc listmembers https://twitter.com/edsu/lists/bots

Use as a Library

twarc se puede usar programáticamente como una biblioteca para coleccionar tweets. Necesitas usar un twarc instance (usando tus credenciales de Twitter), y luego lo usas para buscar por resultados de búsqueda.

`from twarc import Twarc

t = Twarc(consumer_key, consumer_secret, access_token, access_token_secret) for tweet in t.search("ferguson"): print(tweet["text"])`

Puedes usar lo mismo para el filtro de stream de nuevos de tweets que sean iguales al track keyword.

for tweet in t.filter(track="ferguson"): print(tweet["text"])

o lugar:

for tweet in t.filter(locations="-74,40,-73,41"): print(tweet["text"])

o user ids:

for tweet in t.filter(follow='12345,678910'): print(tweet["text"])

También los identificados de tweets se pueden hydratar:

for tweet in t.hydrate(open('ids.txt')): print(tweet["text"])

Utilities

En el directorio de utilidades hay algunos commando simple de line utilities para trabajar conel line-oriented JSON, Como imprimiendo out the archived tweets as texto o html, extracting the usernames, referenced URLs, etc. Si creas un script que tú puedas encontrar fácilmente por favor envía un pull request.

Cuando tengas algunos tweets puedes crear una pared rudimentaria de ellos:

% utils/wall.py tweets.jsonl > tweets.html

Puedes crear un word cloud de tweets que has coleccionado sobre nasa:

% utils/wordcloud.py tweets.jsonl > wordcloud.html

Si has coleccionado algunos tweets usando replies puedes crear a static D3 visualization de ellos con:

% utils/network.py tweets.jsonl tweets.html

Tienes la opción de consolidar tweets por user, permitiéndote ver las cuentas centrales:

% utils/network.py --users tweets.jsonl tweets.html

Y si quieres usar la graficas del network en un programa como Gephi, puedes generar un GEXF file con lo siguiente:

% utils/network.py --users tweets.jsonl tweets.gexf

gender.py es un filtro que te permite filtrar tweets basados en un guess sobre el género del autor. Por ejemplo, puedes filtrar todos los tweets que parecen ser de mujeres, y crear un word cloud para ellos:

% utils/gender.py --gender female tweets.jsonl | utils/wordcloud.py > tweets-female.html

Se puede usar GeoJSON de tweets que tienen geo coordiates:

% utils/geojson.py tweets.jsonl > tweets.geojson

Tienes la opcion de exportar GeoJSON con centroids replacing bounding boxes:

% utils/geojson.py tweets.jsonl --centroid > tweets.geojson

Y si exportas GeoJSON with centroids, puedes añadir algunos random fuzzing:

% utils/geojson.py tweets.jsonl --centroid --fuzz 0.01 > tweets.geojson

Para filtrar tweets por presencia o ausencia de coordenadas geo (o por lugar Place, verifica API documentacion):

% utils/geofilter.py tweets.jsonl --yes-coordinates > tweets-with-geocoords.jsonl % cat tweets.jsonl | utils/geofilter.py --no-place > tweets-with-no-place.jsonl

Para filtrar con GeoJSON fence (se necesita Shapely):

% utils/geofilter.py tweets.jsonl --fence limits.geojson > fenced-tweets.jsonl % cat tweets.jsonl | utils/geofilter.py --fence limits.geojson > fenced-tweets.jsonl

Si sospechas que tienes un duplicado en tus tweets se puede usar "dedupe":

% utils/deduplicate.py tweets.jsonl > deduped.jsonl

Para ordernar por ID:

% utils/sort_by_id.py tweets.jsonl > sorted.jsonl

Puedes filtrar todos los tweets antes de una fecha exacta (Por ejemplo, si un hashtag fue usado para otro evento antes del que te interesaba):

% utils/filter_date.py --mindate 1-may-2014 tweets.jsonl > filtered.jsonl

Puedes conseguir un listado de HTML de clientes usados:

% utils/source.py tweets.jsonl > sources.html

Si deseas remover los retweets:

% utils/noretweets.py tweets.jsonl > tweets_noretweets.jsonl

O unshorten urls (se necesita unshrtn):

% cat tweets.jsonl | utils/unshorten.py > unshortened.jsonl

Una vez hayas unshorten tus URLs puedes obtener un listado de los most-tweeted URLs:

% cat unshortened.jsonl | utils/urls.py | sort | uniq -c | sort -nr > urls.txt

twarc-report

Más commandos de "utility" para generar csv or json output con uso con D3.js visualizaciónes son encontrados en el twarc-report project. El util directed.py ahora es d3graph.py.

Cada script también puede generar un html demo de D3 visualization, e.g. timelines o una gráfica dirigida de retweets.


Crédito de tradução: Tina Figueroa