Як отримати твіти з командного рядка?


11

Чи є простий спосіб отримати чиїсь твіти з командного рядка?

Обліковий запис буде загальнодоступним, а команда - або сценарій, якщо потрібно - отримає всі або вказану кількість останніх твітів у текстовий файл, по одному твіту на рядок, без метаданих, найновішим у першому рядку.

Без використання API, лише bash.


використовуйте python api, легкий і солодкий
BigSack

не так, як я хотів би, але з цікавості, який python API, будь-яке посилання чи він знаходиться у сховищах?
Страпаковський

1
Є обгортка API python-twitter.
jokerdino

Відповіді:


7

Починаючи з близької дати, Twitter не впустить вас у їх API, не маючи ключа OAuth. Але в якості вирішення можна використовувати 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
"помилки": [{"message": "API API REST Twitter v1 більше не активний. Перейдіть до API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cavalcade

5

Якщо ви не хочете використовувати API Twitter, ви можете захопити RSS-канал профілю Twitter за допомогою скрипту bash, а потім перейти до форматування його звідти.

Оскільки API API застарів RSS-канал, ви можете це вирішити, створивши RSS-канал, використовуючи результати пошуку.

Ось RSS-канал моїх твітів .


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


Дякую @jokerdino Я добре в тому, що відформатую файл, якщо у мене є доступ до необробленого файлу. Як я прошу тут ( webapps.stackexchange.com/questions/34066/… ), раніше був xml зі всіма твітами, але не більше. RSS-канал має обмежений часовий діапазон, і я не зміг знайти, як, наприклад, завантажити всі ваші твіти із посилання, яке ви надіслали. Ви можете допомогти?
Страпаковський

1
Мабуть, ви можете отримати доступ лише до твітів віком до 9 днів. Все, що старше цього, недоступне через пошук або навіть через API.
jokerdino

Ви впевнені, що немає способу отримати твіти старше 9 днів? Я відкрив тут питання: webapps.stackexchange.com/questions/34070/…
Страпаковський

Перехід безпосередньо на сторінку користувача дозволяє вам продовжувати прокручування вниз, щоб javascript завантажував наступну сторінку без обмежень. Це може бути корисним для отримання всіх твітів?
Страпаковський

Це посилання говорить, що ви не можете отримати старі твіти більше тижня за допомогою API пошуку. І я не впевнений у отриманні твітів за допомогою JavaScript. З того, що я знаю, ви не можете прочитати більше, ніж близько 3000 твітів з тимчасової шкали.
jokerdino

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 з метаданими, але тривіально передавати вихід через щось на зразок підкреслення-кліп, щоб викреслити все, що вам не хочеться.

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

1

Можна піти маршрутом python + tweepy:

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

Я просто перевірив це, і він чудово працює. Однак є користувачі, які захищають свої твіти, тому вони можуть не давати вам завантажувати все. Але це особливість щебетання.

Ліміт все ще 3200, і ви отримаєте файл CSV.


1

Ви можете використовувати twarcприклад, якщо ви хочете архівувати твіти Nassim Nicholas Taleb, якими ви користуєтесь.

twarc timeline nntaleb --format csv> taleb.csv 

Ви також можете використовувати інші формати: --format {json,csv,csv-excel}

Як налаштувати twarc: Єдиний спосіб отримати повні твіти використовує , до APIжаль , навіть якщо додаток прозоро вам потрібно мати первісну установку і настройку, необхідно також застосовувати для API(

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

)

Отримавши ключі програми, ви можете сказати, twarcщо вони є з командою config.

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.