Comment récupérer des tweets depuis la ligne de commande?

11

Existe-t-il un moyen simple de récupérer les tweets de quelqu'un à partir de la ligne de commande?

Le compte serait public et la commande - ou le script, si nécessaire - récupérerait tout ou un nombre spécifié de tweets les plus récents dans un fichier texte, un tweet par ligne, sans les métadonnées, la plus récente de la première ligne.

Sans l'utilisation de l'API, seulement bash.

Strapakowsky
la source
utiliser l'api python, facile et doux
BigSack
pas la façon dont je préférerais, mais par curiosité quelle API python, n'importe quel lien, ou est-ce dans les référentiels?
Strapakowsky
1
Il existe un wrapper API python-twitter.
jokerdino

Réponses:

7

À partir d'une date de clôture, Twitter ne vous laissera pas entrer dans son API sans avoir de clé OAuth. Mais comme une solution de contournement , vous pouvez utiliser l' API de recherche. Il est RESTful, de sorte que vous pouvez utiliser curlpour obtenir des résultats de recherche au format JSON. Par exemple, si vous voulez récupérer @ tweets de java, et l' enregistrer dans un fichier ~/.tweets, cette ligne de code peut être utilisé:

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

Et vous pouvez analyser le fichier, en utilisant tout analyseur JSON.


Le rppparamètre est le numéro af tweets à récupérer. callbackest fonction javascript à exécuter sur le JSON résultant. Si vous n'utilisez pas JavaScript avec l'API, vous pouvez le laisser?, Mais ne le supprimez pas. Je ferai une erreur. Plus des conseils sur la recherche api se trouve sur https://dev.twitter.com/docs/api/1/get/search

Il existe des outils pour JSON analyse syntaxique de l'interface de ligne de commande. Bien que je ne l'ai jamais utilisé un, je vais mettre des liens vers des ressources pour vous aider à trouver le meilleur outil adapté:

Et comme une petite note, il est plus rapide d'utiliser une partie Python ou Ruby (ou autres).

andrew.46
la source
On dirait bien, merci @g_kaya. Comment puis - je préciser, par exemple, tous les tweets, ou le maximum autorisé, ou 400 tweets? Quel est le rappel et les options de RPA? Pouvez - vous recommander un analyseur de JSON ligne de commande?
Strapakowsky
Je l' ai modifié ma réponse selon vos questions. Hope it helps :)
Je suis heureux si elles sont utiles, vous êtes les bienvenus :)
Ne fonctionne plus
Dean Meehan
1
"erreurs": [{ "message":.. "L'API REST Twitter v1 n'est plus actif S'il vous plaît migrer vers API V1.1 dev.twitter.com/docs/api/1.1/... }]}
cavalcade
5

Si vous ne souhaitez pas utiliser l'API Twitter, vous pouvez récupérer le flux RSS du profil Twitter à l'aide d'un script bash, puis procéder au formatage à partir de là.

Étant donné que l'API Twitter a déprécié le flux RSS, vous pouvez contourner ce problème en générant un flux RSS à l'aide des résultats de la recherche.

Voici le flux RSS de mes tweets .


Vous devrez cependant assembler le script bash nécessaire. De la récupération du flux RSS à la mise en forme des tweets selon vos besoins.

jokerdino
la source
Merci @jokerdino. Je suis bien avec le formatage du fichier, si j'ai accès au fichier brut. Comme je le demande ici ( webapps.stackexchange.com/questions/34066/… ), il y avait un xml avec tous les tweets, mais pas plus. Le flux rss a une plage de temps limitée et je n'ai pas trouvé comment télécharger, par exemple, tous vos tweets à partir du lien que vous avez envoyé. Pouvez-vous m'aider?
Strapakowsky
1
Apparemment, vous ne pouvez accéder qu'aux tweets jusqu'à 9 jours. Tout ce qui est plus ancien n'est pas disponible via la recherche ni même via l'API.
jokerdino
Êtes-vous sûr qu'il n'y a aucun moyen d'obtenir des tweets de plus de 9 jours? J'ai ouvert une question ici: webapps.stackexchange.com/questions/34070/…
Strapakowsky
Aller directement à la page de l'utilisateur vous permet de continuer à faire défiler vers le bas afin que le javascript charge la page suivante sans limites. Serait-ce exploitable pour récupérer tous les tweets?
Strapakowsky
Ce lien indique que vous ne pouvez pas récupérer plus de tweets d'une semaine à l'aide de l'API de recherche. Et je ne suis pas sûr de récupérer les tweets en utilisant JavaScript. D'après ce que je sais, vous ne pouvez pas lire plus de 3000 tweets environ de la chronologie.
jokerdino
2

Ceci est mon script conçu pour une utilisation d'écran de veille

#!/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
la source
1

J'ai créé un outil qui devrait faire presque exactement ce que vous avez décrit: twitter-screen-scrape . Par défaut, il sortira en JSON, avec des métadonnées, mais il est trivial de diriger la sortie à travers quelque chose comme underscore-cli pour supprimer tout ce que vous ne voulez pas.

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile
argot
la source
1

Vous pouvez suivre la route python + tweepy en:

  1. Création de votre propre application Twitter (pour obtenir des clés API)
  2. Créez des jetons d'accès pour votre compte Twitter
  3. Utilisez un script comme celui-ci avec vos informations d'identification: https://gist.github.com/yanofsky/5436496

Je viens de le tester et cela fonctionne très bien. Il y a cependant des utilisateurs qui protègent leurs tweets, donc il se peut qu'ils ne vous permettent pas de tout télécharger. Mais c'est une caractéristique de Twitter.

La limite est toujours de 3200 et vous obtenez un fichier CSV.

Andrei
la source
1

Vous pouvez utiliser twarcpour donner un exemple si vous souhaitez archiver les tweets de Nassim Nicholas Taleb que vous utilisez.

twarc timeline nntaleb --format csv> taleb.csv 

Vous pouvez également utiliser d'autres formats: --format {json,csv,csv-excel}

Comment configurer twarc: La seule façon d'obtenir les tweets complets est d'utiliser APImalheureusement, même si l'application est transparente, vous devez avoir une installation et une configuration initiales, vous devez également demander le API(

Depuis juillet 2018, vous devez demander un compte de développeur Twitter et être approuvé avant de pouvoir créer de nouvelles applications.

)

Une fois que vous avez vos clés d'application, vous pouvez dire twarcce qu'elles sont avec la commande configure.

twarc configure

Cela va stocker vos informations d' identification dans un fichier appelé .twarcdans votre répertoire personnel afin que vous ne devez pas les entrer. Si vous préférez les fournir , vous pouvez directement les mettre dans l'environnement ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) ou en utilisant les options de ligne de commande ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Eduard Florinescu
la source