Komut satırından tweet nasıl alınır?


11

Komut satırından birinin tweet'lerini almanın basit bir yolu var mı?

Hesap herkese açık olur ve gerekirse komut veya komut dosyası, en son tweet'lerin tümünü veya belirtilen sayıda tweet'i, ilk satırdaki en yeni meta veriler olmadan satır başına bir tweet'e alır.

API kullanmadan, sadece bash.


kolay ve tatlı python api kullanın
BigSack

tercih edeceğim şekilde değil, ama merak hangi python API, herhangi bir bağlantı, ya da depolarda mı?
Strapakowsky

1
Python-twitter API sarmalayıcısı var.
jokerdino

Yanıtlar:


7

Yakın bir tarihten itibaren Twitter, OAuth anahtarınız olmadan API'larına girmenize izin vermez. Ancak geçici bir çözüm olarak Arama API'sını kullanabilirsiniz. RESTful, bu nedenle curlarama sonuçlarını JSON biçiminde almak için kullanabilirsiniz . Örneğin, @ java'nın tweet'lerini alıp dosyaya kaydetmek istiyorsanız ~/.tweets, bu kod satırı kullanılabilir:

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

Ve herhangi bir JSON ayrıştırıcısını kullanarak dosyayı ayrıştırabilirsiniz.


rppParametre tweets af sayısı alınacağı. callbacksonuçta ortaya çıkan JSON üzerinde yürütülecek javascript işlevidir. Api ile JavaScript kullanmıyorsanız, bırakabilirsiniz mi? Ancak kaldırmayın. Bir hataya neden olacağım. Arama API'sı hakkında daha fazla bilgi https://dev.twitter.com/docs/api/1/get/search adresinde bulunabilir.

JSON'u komut satırı arabiriminden ayrıştırma araçları vardır. Hiç kullanmamış olmama rağmen, en uygun aracı bulmanıza yardımcı olmak için bazı kaynaklara bazı bağlantılar koyacağım:

Ve küçük bir not olarak, bazı Python veya Ruby (veya diğerleri) kullanmak daha hızlıdır.


İyi görünüyor, teşekkürler @g_kaya. Örneğin, tüm tweetleri veya izin verilen maksimum tweet'leri veya 400 tweet'i nasıl belirleyebilirim? Geri arama ve rpp seçenekleri nedir? Bir komut satırı JSON ayrıştırıcısı önerebilir misiniz?
Strapakowsky

Cevabımı sorularınıza göre düzenledim. Umarım yardımcı olur :)

Yararlı olmalarına sevindim, rica ederim :)

Artık çalışmıyor
Dean Meehan

1
"error": [{"message": "Twitter REST API v1 artık etkin değil. Lütfen API v1.1 sürümüne geçin . dev.twitter.com/docs/api/1.1/… }]}
cavalcade

5

Twitter API'sını kullanmak istemiyorsanız, Twitter profilinin RSS beslemesini bir bash komut dosyası kullanarak alabilir ve daha sonra biçimlendirmeye devam edebilirsiniz.

Twitter API RSS beslemesini kullanımdan kaldırdığından, arama sonuçlarını kullanarak RSS beslemesi oluşturarak bu sorunu çözebilirsiniz.

İşte tweetlerimin RSS beslemesi .


Gerçi gerekli bash betiğini bir araya getirmelisiniz. RSS beslemesini almaktan, tweet'leri gereksinimlerinize göre biçimlendirmeye kadar.


Teşekkürler @jokerdino. Ham dosyaya erişimim varsa, dosyayı biçimlendirme konusunda iyiyim. Burada istediğim gibi ( webapps.stackexchange.com/questions/34066/… ), eskiden tüm tweet'lerle bir xml vardı, ama artık yok. Rss feed'in sınırlı bir zaman aralığı var ve örneğin, gönderdiğiniz bağlantıdan tüm tweet'lerinizi nasıl indireceğinizi bulamadım. Yardım edebilir misin?
Strapakowsky

1
Görünüşe göre, sadece 9 güne kadar olan tweetlere erişebilirsiniz. Bundan daha eski olan herhangi bir şey arama veya hatta API aracılığıyla kullanılamaz.
jokerdino

9 günden daha eski tweet almanın bir yolu olmadığından emin misin? Burada bir soru açtım: webapps.stackexchange.com/questions/34070/…
Strapakowsky

Doğrudan kullanıcının sayfasına gitmek, javascriptin bir sonraki sayfayı sınırsız yükleyebilmesi için aşağı kaydırmanıza olanak tanır. Tüm tweetleri almak sömürülebilir mi?
Strapakowsky

Bu bağlantı , arama API'sını kullanarak bir haftadan eski tweet'leri alamayacağınızı söylüyor. Ve JavaScript kullanarak tweetler almak konusunda emin değilim. Bildiğim kadarıyla, zaman çizelgesinden 3000'den fazla tweet okuyamazsınız.
jokerdino

2

Bu benim ekran koruyucu kullanımı için yapılmış benim script

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

Neredeyse tam olarak tarif ettiğiniz şeyi yapması gereken bir araç yaptım: twitter-screen-scrape . Varsayılan olarak, JSON'da meta verilerle çıktı alır, ancak istemediğiniz her şeyi çıkarmak için çıktıyı alt çizgi-cli gibi bir şeyle birleştirmek önemsizdir .

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

1

Python + tweepy rotasını şu yolla gidebilirsiniz:

  1. Kendi Twitter Uygulamanızı Oluşturma (API Anahtarlarını almak için)
  2. Twitter hesabınız için Erişim jetonları oluşturun
  3. Kimlik bilgilerinizle birlikte böyle bir komut dosyası kullanın: https://gist.github.com/yanofsky/5436496

Sadece test ettim ve harika çalışıyor. Ancak tweet'lerini koruyan kullanıcılar var, bu yüzden her şeyi indirmenize izin vermeyebilir. Ama bu Twitter'ın bir özelliği.

Sınır hala 3200 ve bir CSV dosyası alıyorsunuz.


1

Sen kullanabilirsiniz twarckullandığınız Nassim Nicholas Taleb en tweetleri arşivlemek isterseniz bir örnek vermek.

twarc timeline nntaleb --format csv> taleb.csv 

Diğer biçimleri de kullanabilirsiniz: --format {json,csv,csv-excel}

Nasıl yapılandırılır twarc: Tam tweet'leri almanın tek yolu API, uygulama şeffaf olsa bile, ilk kurulum ve yapılandırmaya sahip olmanız maalesef kullanmaktır, ayrıca API(

Temmuz 2018 itibariyle, bir Twitter geliştirici hesabına başvurmanız ve yeni uygulamalar oluşturmadan önce onaylamanız gerekir.

)

Uygulama anahtarlarınızı aldıktan sonra twarcconfigure komutuyla bunların ne olduğunu anlayabilirsiniz .

twarc configure

Bu adlı bir dosyada kimlik bilgilerinizi saklar .twarciçeri girerek tutmak zorunda kalmamak ev dizininde. Bunun yerine onları doğrudan sağlayacağını Eğer ortamda bunları ayarlayabilirsiniz ( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) veya (komut satırı seçeneklerini kullanarak --consumer_key, --consumer_secret, --access_token, --access_token_secret).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.