Современная быстрая библиотека Python для быстрого удаления твитов и пользователей из неофициального API Twitter.
Этот инструмент помогает вам удалять твиты по поисковой фразе, твиты по идентификаторам и пользователей по именам пользователей. Он использует API Twitter, тот же API используется на веб-сайте.
Я использовал Twint для удаления твитов, но в нем много ошибок и он не работает должным образом. Код был непростым для понимания. У всех задач один конфиг, и пользователь должен знать точный параметр. Последним важным моментом является тот факт, что API может меняться — Twitter является владельцем API, и от него зависят изменения. Раздражает, когда что-то не работает, и пользователи должны сообщать об ошибках как о проблемах.
pip install -U stweet
Если вы хотите спонсировать меня, в знак благодарности за проект пришлите мне немного криптовалюты?:
Монета | Адрес кошелька |
---|---|
Биткойн | 3EajE9DbLvEmBHLRzjDfG86LyZB4jzsZyg |
Эфирум | 0xE43d8C2c7a9af286bc2fc0568e2812151AF9b1FD |
Чтобы сделать простой запрос, необходимо подготовить записную задачу . Задача должна быть обработана **раннером**.
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 ()
Пример выше показывает, что для удаления твитов требуется всего несколько строк кода.
Ствит использует API с веб-сайта, поэтому документации о получении ответа нет. Ответ сохраняется как необработанный, поэтому конечный пользователь должен проанализировать его самостоятельно. Возможно, парсер будет добавлен в функцию.
Удаленные данные можно экспортировать различными способами с помощью абстрактного класса RawDataOutput
. Список этих выходных данных можно передать в каждый бегун — да, экспортировать можно двумя разными способами.
На данный момент в stweet реализованы:
Библиотека интегрирована с tor-python-easy. Это позволяет использовать Tor-прокси с открытым портом управления — менять IP, когда это необходимо.
Если вы хотите использовать прокси-клиент Tor, вам необходимо подготовить собственный веб-клиент и использовать его в runner.
Вам нужно запустить прокси-сервер Tor — вы можете запустить его в своей локальной ОС или использовать этот docker-compose.
Фрагмент кода ниже показывает, как использовать прокси:
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 в гостевом клиенте блокирует множественную нумерацию страниц. Иногда в одном запросе можно вызвать 3 пагинации. Чтобы избежать этого ограничения, разделите период утилизации на более мелкие детали.
Twitter в 2023 году заблокировал API, указав временной диапазон в метке времени — приемлем только формат ГГГГ-ММ-ДД. В стрелке можно поставить только время без часов.
Небольшая часть библиотеки использует код из Twint. Твинт также был главным источником вдохновения для создания твитов.