Como recuperar tweets da linha de comando?

11

Existe uma maneira simples de recuperar os tweets de alguém na linha de comando?

A conta seria pública e o comando - ou script, se necessário - recuperaria todos ou um número especificado de tweets mais recentes em um arquivo de texto, um tweet por linha, sem os metadados, o mais recente da primeira linha.

Sem o uso da API, apenas bash.

Strapakowsky
fonte
utilização API python, fácil e doce
BigSack
não da maneira que eu preferir, mas por curiosidade, qual API python, qualquer link ou está nos repositórios?
precisa saber é o seguinte
1
Há um wrapper de API python-twitter.
Jokerdino

Respostas:

7

A partir de uma data aproximada, o Twitter não permitirá que você entre na API deles sem ter uma chave OAuth. Mas, como solução alternativa, você pode usar a API de pesquisa. É RESTful, portanto, você pode usar curlpara recuperar os resultados da pesquisa no formato JSON. Por exemplo, se você deseja recuperar os tweets de @ java e salvá-lo em arquivo ~/.tweets, esta linha de código pode ser usada:

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

E você pode analisar o arquivo usando qualquer analisador JSON.


O rppparâmetro é o número de tweets a serem recuperados. callbacké a função javascript a ser executada no JSON resultante. Caso você não esteja usando JavaScript com a API, você pode deixá-lo?, Mas não o remova. Causarei um erro. Mais orientação sobre a API de pesquisa pode ser encontrada em https://dev.twitter.com/docs/api/1/get/search

Existem ferramentas para analisar JSON a partir da interface da linha de comandos. Embora eu nunca tenha usado um, colocarei alguns links em alguns recursos para ajudá-lo a encontrar a ferramenta mais adequada:

E, como uma pequena observação, é mais rápido usar alguns Python ou Ruby (ou outros).

andrew.46
fonte
Parece bom, obrigado @g_kaya. Como posso especificar, por exemplo, todos os tweets ou o máximo permitido ou 400 tweets? O que são as opções de retorno de chamada e rpp? Você pode recomendar um analisador JSON de linha de comando?
precisa saber é o seguinte
Editei minha resposta de acordo com suas perguntas. Espero que ajude :)
Estou contente se eles são úteis, você é bem-vindo :)
Já não trabalho
Dean Meehan
1
"errors": [{"message": "A API REST do Twitter v1 não está mais ativa. Migre para a API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cavalcade
5

Se você não quiser usar a API do Twitter, poderá pegar o feed RSS do perfil do Twitter usando um script bash e prosseguir para formatá-lo a partir daí.

Como a API do Twitter descontinuou o feed RSS, você pode contornar isso gerando feed RSS usando os resultados da pesquisa.

Aqui está o feed RSS dos meus tweets .


Você teria que montar o script bash necessário. Desde a busca do feed RSS até a formatação dos tweets conforme suas necessidades.

jokerdino
fonte
Obrigado @jokerdino. Eu estou bem com a formatação do arquivo, se tiver acesso ao arquivo bruto. Como pergunto aqui ( webapps.stackexchange.com/questions/34066/… ), costumava haver um xml com todos os tweets, mas não mais. O feed rss tem um intervalo de tempo limitado e não consegui encontrar como baixar, por exemplo, todos os seus tweets no link que você enviou. Você pode ajudar?
Strapakowsky
1
Aparentemente, você só pode acessar tweets de até 9 dias. Qualquer coisa mais antiga que isso não está disponível através da pesquisa ou mesmo através da API.
Jokerdino
Tem certeza de que não há como obter tweets com mais de 9 dias? Abri uma pergunta aqui: webapps.stackexchange.com/questions/34070/...
Strapakowsky
Ir diretamente para a página do usuário permite continuar rolando para baixo, para que o javascript carregue a próxima página sem limites. Isso seria explorável para recuperar todos os tweets?
precisa saber é o seguinte
Este link indica que você não pode buscar mais do que uma semana de tweets antigos usando a API de pesquisa. E não tenho certeza sobre como buscar tweets usando JavaScript. Pelo que sei, você não pode ler mais do que cerca de 3000 tweets na linha do tempo.
jokerdino
2

Este é o meu script feito para uso no protetor de tela

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

Eu criei uma ferramenta que deveria fazer quase exatamente o que você descreveu: twitter-screen-scrape . Por padrão, ele será produzido em JSON, com metadados, mas é trivial canalizar a saída através de algo como underscore-cli para remover tudo o que você não deseja.

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile
calão
fonte
1

Você pode seguir a rota python + tweepy:

  1. Criando seu próprio aplicativo do Twitter (para obter chaves de API)
  2. Crie tokens de acesso para sua conta do twitter
  3. Use um script como esse junto com suas credenciais: https://gist.github.com/yanofsky/5436496

Acabei de testar e funciona muito bem. No entanto, existem usuários que protegem seus tweets, portanto, pode não permitir que você baixe tudo. Mas isso é uma característica do twitter.

O limite ainda é 3200 e você obtém um arquivo CSV.

Andrei
fonte
1

Você pode twarcdar um exemplo se quiser arquivar os tweets de Nassim Nicholas Taleb que você usa.

twarc timeline nntaleb --format csv> taleb.csv 

Você também pode usar outros formatos: --format {json,csv,csv-excel}

Como configurar twarc: a única maneira de obter os tweets completos é usando o APIinfelizmente, mesmo que o aplicativo seja transparente, você precisa ter uma instalação e uma configuração inicial, também precisa solicitar o API(

A partir de julho de 2018, você deverá solicitar uma conta de desenvolvedor do Twitter e ser aprovado antes de poder criar novos aplicativos.

)

Depois de obter as chaves do aplicativo, você pode dizer twarco que são com o comando configure.

twarc configure

Isto irá armazenar suas credenciais em um arquivo chamado .twarcem seu diretório home para que você não tem que manter a introduzi-los. Se você preferiria fornecê-los diretamente pode defini-los no ambiente ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) ou usar opções de linha de comando ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Eduard Florinescu
fonte