Как получить твиты из командной строки?

11

Есть ли простой способ получить чьи-то твиты из командной строки?

Учетная запись будет общедоступной, а команда - или сценарий, если необходимо - будет извлекать все или указанное количество самых последних твитов в текстовый файл, по одному твиту на строку, без метаданных, самых новых в первой строке.

Без использования API только bash.

Strapakowsky
источник
использовать Python API, легко и сладко
BigSack
не так, как я бы предпочел, но из любопытства, какой Python API, какая-либо ссылка, или это в репозиториях?
Strapakowsky
1
Существует оболочка API Python-Twitter.
Джокердино

Ответы:

7

Начиная с ближайшей даты, Twitter не позволит вам войти в их API, не имея ключа OAuth. Но в качестве обходного пути вы можете использовать Search API. Это RESTful, так что вы можете использовать curlдля получения результатов поиска в формате JSON. Например, если вы хотите получить твиты @ java и сохранить их в файл ~/.tweets, можно использовать следующую строку кода:

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

И вы можете проанализировать файл, используя любой анализатор JSON.


rppПараметр это количество аф твитов должны быть извлечены. callbackявляется функцией JavaScript, которая будет выполнена в результирующем JSON. Если вы не используете JavaScript с API, вы можете оставить его?, Но не удаляйте его. Я вызову ошибку. Дополнительные инструкции по поиску API можно найти на https://dev.twitter.com/docs/api/1/get/search

Есть инструменты для анализа JSON из интерфейса командной строки. Хотя я никогда не использовал его, я добавлю несколько ссылок на некоторые ресурсы, чтобы помочь вам найти наиболее подходящий инструмент:

И, как небольшое примечание, быстрее использовать некоторые Python или Ruby (или другие).

andrew.46
источник
Выглядит хорошо, спасибо @g_kaya. Как я могу указать, например, все твиты, или максимально допустимый, или 400 твитов? Что такое обратный вызов и параметры rpp? Можете ли вы порекомендовать анализатор командной строки JSON?
Страпаковский
Я отредактировал свой ответ в соответствии с вашими вопросами. Надеюсь, это поможет :)
Я рад, если они полезны, пожалуйста :)
Больше не работает
Дин Михан
1
"errors": [{"message": "API REST Twitter v1 больше не активен. Перейдите на API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cavalcade
5

Если вы не хотите использовать API Twitter, вы можете получить RSS-канал профиля Twitter, используя скрипт bash, а затем приступить к его форматированию.

Поскольку Twitter API устарел RSS-канал, вы можете обойти это, создав RSS-канал с использованием результатов поиска.

Вот RSS-лента моих твитов .


Вы должны были бы собрать необходимый скрипт bash. От загрузки RSS-канала до форматирования твитов в соответствии с вашими требованиями.

Джокердино
источник
Спасибо @jokerdino. Я в порядке с форматированием файла, если у меня есть доступ к необработанному файлу. Как я спрашиваю здесь ( webapps.stackexchange.com/questions/34066/… ), раньше был xml со всеми твитами, но не более. Канал rss имеет ограниченный временной диапазон, и я не смог найти, например, как загрузить все ваши твиты по отправленной вами ссылке. Вы можете помочь?
Страпаковский
1
Видимо, вы можете получить доступ только к твитам до 9 дней. Все, что старше этого, недоступно через поиск или даже через API.
Джокердино
Вы уверены, что нет возможности получать твиты старше 9 дней? Я открыл вопрос здесь: webapps.stackexchange.com/questions/34070/…
Strapakowsky
Переход непосредственно на страницу пользователя позволяет вам продолжать прокручивать страницу вниз, чтобы JavaScript загружал следующую страницу без ограничений. Будет ли это полезным для получения всех твитов?
Страпаковски
По этой ссылке написано, что вы не можете получить более старых твитов недели, используя API поиска. И я не уверен в получении твитов с использованием JavaScript. Из того, что я знаю, вы не можете прочитать более 3000 твитов или около того с временной шкалы.
Джокердино
2

Это мой скрипт для использования с заставкой

#!/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
источник
1

Я сделал инструмент, который должен делать почти в точности то, что вы описали: twitter-screen-scrape . По умолчанию он будет выводиться в формате JSON с метаданными, но тривиально передать данные через что-то вроде underscore-cli, чтобы удалить все, что вам не нужно.

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile
сленг
источник
1

Вы могли бы пойти по пути python + tweepy:

  1. Создание собственного приложения Twitter (для получения ключей API)
  2. Создайте токены доступа для своего аккаунта в твиттере
  3. Используйте такой скрипт вместе с вашими учетными данными: https://gist.github.com/yanofsky/5436496

Я только что проверил это, и он прекрасно работает. Однако есть пользователи, которые защищают свои твиты, поэтому он может не позволить вам загрузить все. Но это особенность твиттера.

Ограничение по-прежнему составляет 3200, и вы получите файл CSV.

Андрей
источник
1

Вы можете использовать, twarcчтобы привести пример, если вы хотите архивировать твиты Нассима Николаса Талеба, которые вы используете.

twarc timeline nntaleb --format csv> taleb.csv 

Вы также можете использовать другие форматы: --format {json,csv,csv-excel}

Как настроить twarc: Единственный способ получить полные твиты - это, APIк сожалению, даже если приложение прозрачное, вам необходимо выполнить начальную настройку и настройку, вам также необходимо подать заявку на API(

По состоянию на июль 2018 года вы должны подать заявку на учетную запись разработчика Twitter и получить одобрение, прежде чем создавать новые приложения.

)

Получив ключи приложения, вы можете сказать, twarcчто это такое, с помощью команды configure.

twarc configure

Это будет хранить учетные данные в файле с именем .twarcв вашем домашнем каталоге , поэтому вам не придется вводить их снова . Если вы предпочли бы снабжать их непосредственно вы можете установить их в окружающей среде ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) или с помощью параметров командной строки ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Эдуард Флоринеску
источник