Wie rufe ich Tweets von der Kommandozeile ab?

11

Gibt es eine einfache Möglichkeit, die Tweets von jemandem über die Befehlszeile abzurufen?

Das Konto wäre öffentlich und der Befehl - oder ggf. das Skript - würde alle oder eine bestimmte Anzahl der neuesten Tweets in eine Textdatei abrufen, einen Tweet pro Zeile, ohne die Metadaten, die neuesten in der ersten Zeile.

Ohne die Verwendung von API nur Bash.

Strapakowsky
quelle
benutze Python API, einfach und süß
BigSack
nicht so, wie ich es vorziehen würde, aber aus Neugier, welche Python-API, irgendein Link oder ist es in den Repositories?
Strapakowsky
1
Es gibt einen Python-Twitter-API-Wrapper.
Jokerdino

Antworten:

7

Ab dem Stichtag lässt Twitter Sie nicht mehr in die API ein, ohne einen OAuth-Schlüssel zu haben. Als Problemumgehung können Sie jedoch die Such-API verwenden. Es ist RESTful, sodass Sie curlSuchergebnisse im JSON-Format abrufen können . Wenn Sie beispielsweise die Tweets von @ java abrufen und in einer Datei speichern möchten ~/.tweets, kann diese Codezeile verwendet werden:

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

Sie können die Datei mit einem beliebigen JSON-Parser analysieren.


Der rppParameter ist die Anzahl der abzurufenden Tweets. callbackist eine Javascript-Funktion, die auf dem resultierenden JSON ausgeführt werden soll. Falls Sie kein JavaScript mit der API verwenden, können Sie es verlassen, aber nicht entfernen. Ich werde einen Fehler verursachen. Weitere Anleitungen zur Such-API finden Sie unter https://dev.twitter.com/docs/api/1/get/search

Es gibt Tools zum Parsen von JSON über die Befehlszeilenschnittstelle. Obwohl ich noch nie einen verwendet habe, werde ich einige Links zu einigen Ressourcen einfügen, um Ihnen zu helfen, das am besten geeignete Tool zu finden:

Und als kleine Anmerkung ist es schneller, einige Python oder Ruby (oder andere) zu verwenden.

andrew.46
quelle
Sieht gut aus, danke @g_kaya. Wie kann ich beispielsweise alle Tweets oder die maximal zulässigen oder 400 Tweets angeben? Was ist der Rückruf und die RPP-Optionen? Können Sie einen Befehlszeilen-JSON-Parser empfehlen?
Strapakowsky
Ich habe meine Antwort gemäß Ihren Fragen bearbeitet. Hoffe es hilft :)
Ich bin froh, wenn sie nützlich sind, sind Sie willkommen :)
Funktioniert nicht mehr
Dean Meehan
1
"Fehler": [{"Nachricht": "Die Twitter-REST-API v1 ist nicht mehr aktiv. Bitte migrieren Sie zu API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cavalcade
5

Wenn Sie die Twitter-API nicht verwenden möchten, können Sie den RSS-Feed des Twitter-Profils mithilfe eines Bash-Skripts abrufen und von dort aus formatieren.

Da die Twitter-API den RSS-Feed nicht mehr unterstützt, können Sie dies umgehen, indem Sie mithilfe der Suchergebnisse einen RSS-Feed generieren.

Hier ist der RSS-Feed meiner Tweets .


Sie müssten jedoch das erforderliche Bash-Skript zusammenstellen. Vom Abrufen des RSS-Feeds bis zur Formatierung der Tweets gemäß Ihren Anforderungen.

jokerdino
quelle
Danke @jokerdino. Ich kann die Datei gut formatieren, wenn ich Zugriff auf die Rohdatei habe. Wie ich hier frage ( webapps.stackexchange.com/questions/34066/… ), gab es früher eine XML mit allen Tweets, aber nicht mehr. Der RSS-Feed hat einen begrenzten Zeitraum und ich konnte nicht finden, wie ich beispielsweise alle Ihre Tweets von dem von Ihnen gesendeten Link herunterladen kann. Kannst du helfen?
Strapakowsky
1
Anscheinend können Sie nur auf Tweets zugreifen, die bis zu 9 Tage alt sind. Alles, was älter ist, ist nicht über die Suche oder sogar über die API verfügbar.
Jokerdino
Sind Sie sicher, dass es keine Möglichkeit gibt, Tweets zu erhalten, die älter als 9 Tage sind? Ich habe hier eine Frage geöffnet: webapps.stackexchange.com/questions/34070/…
Strapakowsky
Wenn Sie direkt zur Benutzerseite gehen, können Sie weiter nach unten scrollen, damit das Javascript die nächste Seite ohne Einschränkungen lädt. Wäre das ausnutzbar, um alle Tweets abzurufen?
Strapakowsky
Über diesen Link können Sie mit der Such-API nicht mehr als eine Woche alte Tweets abrufen. Und ich bin mir nicht sicher, ob ich Tweets mit JavaScript abrufen soll. Soweit ich weiß, können Sie nicht mehr als etwa 3000 Tweets aus der Zeitleiste lesen.
Jokerdino
2

Dies ist mein Skript für die Verwendung als Bildschirmschoner

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

Ich habe ein Tool entwickelt, das fast genau das tun sollte, was Sie beschrieben haben: Twitter-Screen-Scrape . Standardmäßig wird es in JSON mit Metadaten ausgegeben, aber es ist trivial, die Ausgabe durch etwas wie Unterstrich-Cli zu leiten , um alles zu entfernen , was Sie nicht wollen.

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

Sie können den Python + Tweepy-Weg gehen, indem Sie:

  1. Erstellen einer eigenen Twitter-Anwendung (um API-Schlüssel zu erhalten)
  2. Erstellen Sie Zugriffstoken für Ihr Twitter-Konto
  3. Verwenden Sie ein solches Skript zusammen mit Ihren Anmeldeinformationen: https://gist.github.com/yanofsky/5436496

Ich habe es gerade getestet und es funktioniert großartig. Es gibt jedoch Benutzer, die ihre Tweets schützen, sodass Sie möglicherweise nicht alles herunterladen können. Aber das ist eine Funktion von Twitter.

Das Limit ist immer noch 3200 und Sie erhalten eine CSV-Datei.

Andrei
quelle
1

Sie können twarcein Beispiel geben, wenn Sie die von Ihnen verwendeten Tweets von Nassim Nicholas Taleb archivieren möchten.

twarc timeline nntaleb --format csv> taleb.csv 

Sie können auch andere Formate verwenden: --format {json,csv,csv-excel}

So konfigurieren Sie twarc: Der einzige Weg, um die vollständigen Tweets zu erhalten, ist die Verwendung der. APISelbst wenn die App transparent ist, müssen Sie eine anfängliche Einrichtung und Konfiguration haben. Sie müssen auch die API(

Ab Juli 2018 müssen Sie ein Twitter-Entwicklerkonto beantragen und genehmigt werden, bevor Sie neue Apps erstellen können.

)

Sobald Sie Ihre Anwendungsschlüssel erhalten haben , können twarcSie mit dem Befehl configure feststellen, um welche es sich handelt.

twarc configure

Dies speichert Ihre Anmeldeinformationen in einer Datei mit dem Namen .twarcin Ihrem Home - Verzeichnis , damit Sie sie in nicht zu behalten haben eingeben. Wenn Sie lieber sie Sie sie direkt beliefern würden in der Umgebung einstellen können ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) oder Befehlszeilenoptionen ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Eduard Florinescu
quelle