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


11

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

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

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


использовать 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 (или другие).


Выглядит хорошо, спасибо @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

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).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.