Pustaka python cepat modern untuk menghapus tweet dan pengguna dengan cepat dari API tidak resmi Twitter.
Alat ini membantu Anda menghapus tweet berdasarkan frasa pencarian, tweet berdasarkan id, dan pengguna berdasarkan nama pengguna. Ini menggunakan API Twitter, API yang sama digunakan di situs web.
Saya telah menggunakan twint untuk menghapus tweet, tetapi ada banyak kesalahan dan tidak berfungsi dengan baik. Kode itu tidak mudah dimengerti. Semua tugas memiliki satu konfigurasi, dan pengguna harus mengetahui parameter pastinya. Hal penting terakhir adalah fakta bahwa Api dapat berubah — Twitter adalah pemilik API dan perubahan bergantung padanya. Sangat menjengkelkan ketika ada sesuatu yang tidak berfungsi dan pengguna harus melaporkan bug sebagai masalah.
pip install -U stweet
Jika Anda ingin mensponsori saya, sebagai ucapan terima kasih atas proyek ini, kirimkan saya beberapa kripto?:
Koin | Alamat dompet |
---|---|
Bitcoin | 3EajE9DbLvEmBHLRzjDfG86LyZB4jzsZyg |
Ethereum | 0xE43d8C2c7a9af286bc2fc0568e2812151AF9b1FD |
Untuk membuat permintaan sederhana, tugas memo harus disiapkan. Tugas harus diproses oleh ** runner**.
import stweet as st
def try_search ():
search_tweets_task = st . SearchTweetsTask ( all_words = '#covid19' )
output_jl_tweets = st . JsonLineFileRawOutput ( 'output_raw_search_tweets.jl' )
output_jl_users = st . JsonLineFileRawOutput ( 'output_raw_search_users.jl' )
output_print = st . PrintRawOutput ()
st . TweetSearchRunner ( search_tweets_task = search_tweets_task ,
tweet_raw_data_outputs = [ output_print , output_jl_tweets ],
user_raw_data_outputs = [ output_print , output_jl_users ]). run ()
def try_user_scrap ():
user_task = st . GetUsersTask ([ 'iga_swiatek' ])
output_json = st . JsonLineFileRawOutput ( 'output_raw_user.jl' )
output_print = st . PrintRawOutput ()
st . GetUsersRunner ( get_user_task = user_task , raw_data_outputs = [ output_print , output_json ]). run ()
def try_tweet_by_id_scrap ():
id_task = st . TweetsByIdTask ( '1447348840164564994' )
output_json = st . JsonLineFileRawOutput ( 'output_raw_id.jl' )
output_print = st . PrintRawOutput ()
st . TweetsByIdRunner ( tweets_by_id_task = id_task ,
raw_data_outputs = [ output_print , output_json ]). run ()
if __name__ == '__main__' :
try_search ()
try_user_scrap ()
try_tweet_by_id_scrap ()
Contoh di atas menunjukkan bahwa hanya diperlukan beberapa baris kode untuk menghapus tweet.
Stweet menggunakan api dari situs web sehingga tidak ada dokumentasi tentang penerimaan tanggapan. Respons disimpan sebagai mentah sehingga pengguna akhir harus menguraikannya sendiri. Mungkin parser akan ditambahkan di fitur.
Data yang dihapus dapat diekspor dengan cara berbeda menggunakan kelas abstrak RawDataOutput
. Daftar keluaran ini dapat diteruskan ke setiap pelari – ya, ekspor dapat dilakukan dengan dua cara berbeda.
Saat ini, stweet telah menerapkan:
Perpustakaan terintegrasi dengan tor-python-easy. Ini memungkinkan penggunaan proxy tor dengan port kontrol terbuka – untuk mengubah ip saat diperlukan.
Jika Anda ingin menggunakan klien proksi tor, Anda perlu menyiapkan klien web khusus dan menggunakannya di runner.
Anda perlu menjalankan proksi tor -- Anda dapat menjalankannya di OS lokal Anda, atau Anda dapat menggunakan komposisi buruh pelabuhan ini.
Cuplikan kode di bawah ini menunjukkan cara menggunakan proxy:
import stweet as st
if __name__ == '__main__' :
web_client = st . DefaultTwitterWebClientProvider . get_web_client_preconfigured_for_tor_proxy (
socks_proxy_url = 'socks5://localhost:9050' ,
control_host = 'localhost' ,
control_port = 9051 ,
control_password = 'test1234'
)
search_tweets_task = st . SearchTweetsTask ( all_words = '#covid19' )
output_jl_tweets = st . JsonLineFileRawOutput ( 'output_raw_search_tweets.jl' )
output_jl_users = st . JsonLineFileRawOutput ( 'output_raw_search_users.jl' )
output_print = st . PrintRawOutput ()
st . TweetSearchRunner ( search_tweets_task = search_tweets_task ,
tweet_raw_data_outputs = [ output_print , output_jl_tweets ],
user_raw_data_outputs = [ output_print , output_jl_users ],
web_client = web_client ). run ()
Twitter di klien tamu memblokir beberapa penomoran halaman. Terkadang dalam satu kueri dimungkinkan untuk memanggil 3 penomoran halaman. Untuk menghindari batasan ini, bagilah periode pembuangan menjadi bagian-bagian yang lebih kecil.
Twitter pada tahun 2023 memblokir API dengan memasukkan rentang waktu ke stempel waktu – hanya format YYYY-MM-DD yang dapat diterima. Di panah Anda hanya dapat mencantumkan waktu tanpa jam.
Sebagian kecil perpustakaan menggunakan kode dari twint. Twint juga menjadi inspirasi utama pembuatan stweet.