Come recuperare i tweet dalla riga di comando?


11

C'è un modo semplice per recuperare i tweet di qualcuno dalla riga di comando?

L'account sarebbe pubblico e il comando - o lo script, se necessario - recupererebbe tutto o un numero specificato di tweet più recenti in un file di testo, un tweet per riga, senza i metadati, il più recente nella prima riga.

Senza l'uso dell'API, solo bash.


usa python api, facile e dolce
BigSack

non come preferirei, ma per curiosità quale API di Python, qualsiasi link o è nei repository?
Strapakowsky,

1
C'è un wrapper API python-twitter.
jokerdino

Risposte:


7

Da una data di chiusura in poi, Twitter non ti farà entrare nella loro API senza avere una chiave OAuth. Ma come soluzione alternativa puoi utilizzare l'API di ricerca. È RESTful, quindi è possibile utilizzare curlper recuperare i risultati della ricerca in formato JSON. Ad esempio, se si desidera recuperare i tweet di @ java e salvarlo in un file ~/.tweets, è possibile utilizzare questa riga di codice:

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

E puoi analizzare il file, usando qualsiasi parser JSON.


Il rppparametro è il numero di tweet da recuperare. callbackè la funzione javascript da eseguire sul JSON risultante. Nel caso in cui non utilizzi JavaScript con l'API, puoi lasciarlo?, Ma non rimuoverlo. Causerò un errore. Ulteriori indicazioni su API di ricerca sono disponibili su https://dev.twitter.com/docs/api/1/get/search

Esistono strumenti per analizzare JSON dall'interfaccia della riga di comando. Anche se non ne ho mai usato uno, inserirò alcuni collegamenti ad alcune risorse, per aiutarti a scoprire lo strumento più adatto:

E come piccola nota, è più veloce usare alcuni Python o Ruby (o altri).


Sembra buono, grazie @g_kaya. Come posso specificare, ad esempio, tutti i tweet o il massimo consentito o 400 tweet? Qual è la callback e le opzioni rpp? Puoi consigliare un parser JSON da riga di comando?
Strapakowsky,

Ho modificato la mia risposta secondo le tue domande. Spero che sia d'aiuto :)

Sono contento se sono utili, prego :)

Non funziona più
Dean Meehan,

1
"errors": [{"message": "L'API REST Twitter v1 non è più attiva. Migrare all'API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cavalcade

5

Se non vuoi usare l'API di Twitter, puoi prendere il feed RSS del profilo Twitter usando uno script bash e quindi procedere a formattarlo da lì.

Poiché l'API di Twitter ha deprecato il feed RSS, puoi aggirare il problema generando feed RSS utilizzando i risultati della ricerca.

Ecco il feed RSS dei miei tweet .


Dovresti mettere insieme il necessario script bash. Dal recupero del feed RSS alla formattazione dei tweet secondo le vostre esigenze.


Grazie @jokerdino. Sto bene con la formattazione del file, se ho accesso al file non elaborato. Come chiedo qui ( webapps.stackexchange.com/questions/34066/… ), c'era un XML con tutti i tweet, ma non di più. Il feed rss ha un intervallo di tempo limitato e non sono riuscito a trovare come scaricare, ad esempio, tutti i tuoi tweet dal link che hai inviato. Puoi aiutare?
Strapakowsky,

1
Apparentemente, puoi accedere solo a tweet di massimo 9 giorni. Qualcosa di più vecchio di quello non è disponibile tramite la ricerca o anche tramite l'API.
jokerdino

Sei sicuro che non c'è modo di ottenere tweet più vecchi di 9 giorni? Ho aperto una domanda qui: webapps.stackexchange.com/questions/34070/…
Strapakowsky

Andare direttamente alla pagina dell'utente consente di continuare a scorrere verso il basso in modo che javascript carichi la pagina successiva senza limiti. Sarebbe sfruttabile per recuperare tutti i tweet?
Strapakowsky,

Questo link dice che non puoi recuperare tweet di più di una settimana usando l'API di ricerca. E non sono sicuro di recuperare i tweet tramite JavaScript. Da quello che so, non puoi leggere più di circa 3000 tweet dalla cronologia.
jokerdino

2

Questa è la mia sceneggiatura fatta per l'uso dello screensaver

#!/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

1

Ho creato uno strumento che dovrebbe fare quasi esattamente quello che hai descritto: twitter-screen-scrape . Per impostazione predefinita, verrà generato in JSON, con metadati, ma è banale inoltrare l'output attraverso qualcosa come underscore-cli per eliminare tutto ciò che non si desidera.

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

1

Puoi seguire il percorso python + tweepy:

  1. Creazione della propria applicazione Twitter (per ottenere le chiavi API)
  2. Crea token di accesso per il tuo account Twitter
  3. Usa uno script come questo insieme alle tue credenziali: https://gist.github.com/yanofsky/5436496

L'ho appena testato e funziona benissimo. Tuttavia, ci sono utenti che proteggono i loro tweet, quindi potrebbe non permetterti di scaricare tutto. Ma questa è una caratteristica di Twitter.

Il limite è ancora 3200 e ottieni un file CSV.


1

Puoi usare twarcun esempio se vuoi archiviare i tweet di Nassim Nicholas Taleb che usi.

twarc timeline nntaleb --format csv> taleb.csv 

Puoi usare anche altri formati: --format {json,csv,csv-excel}

Come configurare twarc: L'unico modo per ottenere i tweet completi è utilizzare APIsfortunatamente anche se l'app è trasparente è necessario disporre di una configurazione e configurazione iniziali, è inoltre necessario richiedere il API(

A partire da luglio 2018, è necessario richiedere un account sviluppatore Twitter ed essere approvato prima di poter creare nuove app.

)

Una volta che hai le chiavi dell'applicazione , puoi dire twarccosa sono con il comando configure.

twarc configure

Ciò memorizzare le credenziali in un file chiamato .twarcnella propria home directory in modo da non dovete tenerli entrare in. Se si preferisce fornire loro direttamente si possono impostare nell'ambiente ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) oppure utilizzando le opzioni della riga di comando ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.