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


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.