Bagaimana cara mengambil tweet dari baris perintah?

11

Apakah ada cara sederhana untuk mengambil tweet seseorang dari baris perintah?

Akun akan bersifat publik, dan perintah - atau skrip, jika perlu - akan mengambil semua atau jumlah tertentu dari tweet terbaru ke file teks, satu tweet per baris, tanpa metadata, yang terbaru di baris pertama.

Tanpa menggunakan API, hanya bash.

Strapakowsky
sumber
gunakan api python, mudah dan manis
BigSack
bukan cara saya lebih suka, tetapi karena penasaran API python, tautan apa saja, atau apakah itu ada di repositori?
Strapakowsky
1
Ada pembungkus API python-twitter.
jokerdino

Jawaban:

7

Dari tanggal dekat pada, Twitter tidak akan membiarkan Anda masuk ke API mereka tanpa memiliki kunci OAuth. Tetapi sebagai solusi Anda dapat menggunakan API Pencarian. Ini tenang, sehingga Anda dapat menggunakan curluntuk mengambil hasil pencarian dalam format JSON. Misalnya, jika Anda ingin mengambil tweet @ java, dan menyimpannya ke file ~/.tweets, baris kode ini dapat digunakan:

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

Dan Anda dapat mengurai file, menggunakan parser JSON.


The rppparameter jumlah af tweet yang akan diambil. callbackadalah fungsi javascript yang akan dieksekusi pada JSON yang dihasilkan. Jika Anda tidak menggunakan JavaScript dengan api, Anda dapat meninggalkannya ?, tapi jangan hapus. Saya akan menyebabkan kesalahan. Panduan lebih lanjut tentang Cari api dapat ditemukan di https://dev.twitter.com/docs/api/1/get/search

Ada alat untuk mem-parse JSON dari antarmuka baris perintah. Meskipun saya belum pernah menggunakannya, saya akan menaruh beberapa tautan ke beberapa sumber, untuk membantu Anda menemukan alat yang paling cocok:

Dan sebagai catatan kecil, lebih cepat menggunakan beberapa Python atau Ruby (atau yang lain).

andrew.46
sumber
Terlihat bagus, terima kasih @g_kaya. Bagaimana saya bisa menentukan, misalnya, semua tweet, atau maksimum yang dibolehkan, atau 400 tweet? Apa opsi callback dan rpp? Bisakah Anda merekomendasikan parser JSON baris perintah?
Strapakowsky
Saya telah mengedit jawaban saya sesuai pertanyaan Anda. Semoga membantu :)
Saya senang jika mereka berguna,
Tidak lagi bekerja
Dean Meehan
1
"errors": [{"message": "Twitter REST API v1 tidak lagi aktif. Silakan migrasi ke API v1.1. dev.twitter.com/docs/api/1.1/… }]}
cavalcade
5

Jika Anda tidak ingin menggunakan API Twitter, Anda bisa mengambil RSS feed dari profil Twitter menggunakan skrip bash dan kemudian melanjutkan untuk memformatnya dari sana.

Karena Twitter API telah menghentikan umpan RSS, Anda dapat mengatasinya dengan menghasilkan umpan RSS menggunakan hasil pencarian.

Inilah umpan RSS dari tweet saya .


Anda harus mengumpulkan skrip bash yang diperlukan. Dari mengambil RSS feed hingga memformat tweet sesuai kebutuhan Anda.

jokerdino
sumber
Terima kasih @jokerdino. Saya baik-baik saja dengan memformat file, jika saya memiliki akses ke file mentah. Seperti yang saya tanyakan di sini ( webapps.stackexchange.com/questions/34066/... ), dulu ada xml dengan semua tweet, tetapi tidak lebih. Umpan rss memiliki rentang waktu terbatas dan saya tidak dapat menemukan cara mengunduh, misalnya, semua kicauan Anda dari tautan yang Anda kirim. Bisakah kamu menolong?
Strapakowsky
1
Tampaknya, Anda hanya dapat mengakses tweet hingga 9 hari. Apa pun yang lebih tua dari itu tidak tersedia melalui pencarian atau bahkan melalui API.
jokerdino
Apakah Anda yakin tidak ada cara untuk mendapatkan tweet lebih dari 9 hari? Aku membuka pertanyaan di sini: webapps.stackexchange.com/questions/34070/...
Strapakowsky
Langsung ke halaman pengguna memungkinkan Anda untuk terus bergulir ke bawah sehingga javascript memuat halaman berikutnya tanpa batas. Apakah itu dapat dieksploitasi untuk mengambil semua tweet?
Strapakowsky
Tautan ini mengatakan Anda tidak dapat mengambil tweet lebih dari seminggu menggunakan API pencarian. Dan saya tidak yakin tentang mengambil tweet menggunakan JavaScript. Dari yang saya tahu, Anda tidak dapat membaca lebih dari sekitar 3000 tweet atau lebih dari garis waktu.
jokerdino
2

Ini skrip saya dibuat untuk penggunaan screensaver

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

Saya membuat alat yang seharusnya bisa melakukan persis seperti yang Anda gambarkan: twitter-screen-scrape . Secara default akan menampilkan dalam JSON, dengan metadata, tapi itu sepele untuk menyalurkan output melalui sesuatu seperti garis bawah-cli untuk menghapus semua yang tidak Anda inginkan.

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

Anda bisa menggunakan rute python + tweepy dengan:

  1. Membuat Aplikasi Twitter Anda sendiri (Untuk mendapatkan Kunci API)
  2. Buat token Akses untuk akun twitter Anda
  3. Gunakan skrip seperti ini bersama kredensial Anda: https://gist.github.com/yanofsky/5436496

Saya baru saja mengujinya dan itu bekerja dengan baik. Namun ada pengguna yang melindungi tweet mereka, jadi mungkin tidak membiarkan Anda mengunduh semuanya. Tapi itu fitur twitter.

Batas masih 3200 dan Anda mendapatkan file CSV.

Andrei
sumber
1

Anda dapat menggunakan twarcuntuk memberikan contoh jika Anda ingin mengarsipkan tweet Nassim Nicholas Taleb yang Anda gunakan.

twarc timeline nntaleb --format csv> taleb.csv 

Anda juga dapat menggunakan format lain: --format {json,csv,csv-excel}

Cara mengonfigurasi twarc: Satu-satunya cara untuk mendapatkan tweet lengkap adalah menggunakan APIsayangnya meskipun aplikasinya transparan, Anda harus memiliki pengaturan dan konfigurasi awal, Anda juga harus mengajukan permohonan untuk API(

Pada Juli 2018, Anda harus mengajukan permohonan untuk akun pengembang Twitter dan disetujui sebelum Anda dapat membuat aplikasi baru.

)

Setelah Anda mendapatkan kunci aplikasi Anda, Anda dapat mengetahui twarcapa itu dengan perintah configure.

twarc configure

Ini akan menyimpan kredensial Anda dalam file yang disebut .twarcdalam direktori rumah Anda sehingga Anda tidak harus tetap memasukkan mereka dalam. Jika Anda lebih suka memasok mereka langsung Anda dapat mengatur mereka dalam lingkungan ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) atau menggunakan opsi baris perintah ( --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Eduard Florinescu
sumber