Jak odzyskać tweety z wiersza poleceń?


11

Czy istnieje prosty sposób na odzyskanie czyichś tweetów z wiersza poleceń?

Konto będzie publiczne, a polecenie - lub skrypt, jeśli to konieczne - pobierze wszystkie lub określoną liczbę najnowszych tweetów do pliku tekstowego, jeden tweet na linię, bez metadanych, najnowsze w pierwszym wierszu.

Bez użycia API, tylko bash.


korzystaj z API Pythona, łatwego i słodkiego
— BigSack

nie tak, jak wolałbym, ale z ciekawości, który interfejs API Pythona, dowolny link, czy jest w repozytoriach?
— Strapakowsky

1
Istnieje opakowanie API python-twitter.
— jokerdino

Odpowiedzi:


7

Od najbliższej daty Twitter nie wpuści Cię do swojego interfejsu API bez klucza OAuth. Ale jako obejście można użyć interfejsu API wyszukiwania. Jest RESTful, więc możesz użyć, curlaby pobrać wyniki wyszukiwania w formacie JSON. Na przykład, jeśli chcesz pobrać tweety @ java i zapisać je w pliku ~/.tweets, można użyć następującego wiersza kodu:

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

Plik można przeanalizować za pomocą dowolnego analizatora składni JSON.


rppParametrem jest liczba af tweets być wyszukiwane. callbackjest funkcją javascript do wykonania na wynikowym JSON. Jeśli nie używasz JavaScript w interfejsie API, możesz go zostawić ?, ale go nie usuwaj. Spowoduję błąd. Więcej wskazówek na temat interfejsu API wyszukiwania można znaleźć na https://dev.twitter.com/docs/api/1/get/search

Istnieją narzędzia do parsowania JSON z interfejsu wiersza poleceń. Chociaż nigdy go nie użyłem, zamieściłem linki do niektórych zasobów, aby pomóc Ci znaleźć najlepiej dopasowane narzędzie:

Krótko mówiąc, szybsze jest użycie jakiegoś Pythona lub Ruby (lub innych).


Wygląda dobrze, dziękuję @g_kaya. Jak mogę określić na przykład wszystkie tweety, maksymalną dozwoloną liczbę lub 400 tweetów? Jakie są opcje oddzwaniania i rpp? Czy możesz polecić parser JSON z wiersza poleceń?
— Strapakowsky

Zredagowałem swoją odpowiedź zgodnie z Twoimi pytaniami. Mam nadzieję, że to pomoże :)

Cieszę się, jeśli są przydatne, nie ma za co :)

Już nie działa
— Dean Meehan,

1
"Błędy": [{ "message":.. "THE REST API Twittera v1 nie jest już aktywny Proszę migrować do API v1.1 dev.twitter.com/docs/api/1.1/... }]}
— kawalkada

5

Jeśli nie chcesz korzystać z interfejsu API Twittera, możesz pobrać kanał RSS profilu Twittera za pomocą skryptu bash, a następnie sformatować go.

Ponieważ interfejs API Twittera zastąpił kanał RSS, możesz obejść ten problem, generując kanał RSS za pomocą wyników wyszukiwania.

Oto kanał RSS moich tweetów .


Będziesz jednak musiał przygotować niezbędny skrypt bash. Od pobierania kanału RSS do formatowania tweetów zgodnie z własnymi wymaganiami.


Dzięki @jokerdino. Nie mam nic przeciwko sformatowaniu pliku, jeśli mam dostęp do surowego pliku. Jak pytam tutaj ( webapps.stackexchange.com/questions/34066/… ), kiedyś był plik XML ze wszystkimi tweetami, ale już nie. Kanał rss ma ograniczony zakres czasu i nie mogłem znaleźć sposobu na pobranie wszystkich Twoich tweetów z przesłanego linku. Możesz pomóc?
— Strapakowsky

1
Najwyraźniej możesz uzyskać dostęp tylko do tweetów w wieku do 9 dni. Wszystko, co jest starsze, nie jest dostępne przez wyszukiwanie, a nawet przez interfejs API.
— jokerdino

Czy na pewno nie ma sposobu, aby uzyskać tweety starsze niż 9 dni? Otworzyłem pytanie tutaj: webapps.stackexchange.com/questions/34070/…
— Strapakowsky

Przejście bezpośrednio do strony użytkownika umożliwia ciągłe przewijanie w dół, dzięki czemu javascript ładuje następną stronę bez ograniczeń. Czy byłoby to przydatne do pobrania wszystkich tweetów?
— Strapakowsky,

Ten link mówi, że nie można pobrać więcej niż tygodniowych tweetów za pomocą interfejsu API wyszukiwania. Nie jestem pewien, czy pobierać tweety za pomocą JavaScript. Z tego, co wiem, z osi czasu nie można odczytać więcej niż około 3000 tweetów.
— jokerdino

2

To jest mój skrypt stworzony do użycia wygaszacza ekranu

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

Zrobiłem narzędzie, które powinno robić prawie dokładnie to, co opisałeś: zgarnianie ekranu twitter . Domyślnie będzie on generowany w JSON, z metadanymi, ale trywialne jest przepuszczanie danych wyjściowych przez coś takiego jak podkreślenie-cli, aby usunąć wszystko, czego nie chcesz.

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

1

Możesz przejść trasę python + tweepy przez:

  1. Tworzenie własnej aplikacji na Twitterze (Aby uzyskać klucze API)
  2. Utwórz tokeny dostępu dla swojego konta na Twitterze
  3. Użyj takiego skryptu wraz z poświadczeniami: https://gist.github.com/yanofsky/5436496

Właśnie to przetestowałem i działa świetnie. Są jednak użytkownicy, którzy chronią swoje tweety, więc może nie pozwolić ci pobrać wszystkiego. Ale to cecha Twittera.

Limit nadal wynosi 3200, a otrzymasz plik CSV.


1

Możesz twarcpodać przykład, jeśli chcesz zarchiwizować tweety Nassima Nicholasa Taleba, których używasz.

twarc timeline nntaleb --format csv> taleb.csv 

Możesz także użyć innych formatów: --format {json,csv,csv-excel}

Jak skonfigurować twarc: Jedynym sposobem na uzyskanie kompletnych tweetów jest użycie APIniestety, nawet jeśli aplikacja jest przezroczysta, musisz mieć wstępną konfigurację i konfigurację, musisz również złożyć wniosek o API(

Od lipca 2018 r. Musisz złożyć wniosek o konto programisty Twitter i uzyskać zgodę, aby móc tworzyć nowe aplikacje.

)

Po uzyskaniu kluczy aplikacji możesz powiedzieć, twarcjakie są, za pomocą polecenia configure.

twarc configure

Spowoduje to zapisanie poświadczeń w pliku o nazwie .twarcw katalogu domowym użytkownika, dzięki czemu nie trzeba zachować wprowadzając je. Jeśli wolisz dostarczamy je bezpośrednio można je ustawić w środowisku ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) lub przy użyciu opcji wiersza poleceń ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.