Una biblioteca de Python moderna y rápida para eliminar tweets y usuarios rápidamente de la API no oficial de Twitter.
Esta herramienta le ayuda a eliminar tweets por frase de búsqueda, tweets por identificadores y usuarios por nombres de usuario. Utiliza la API de Twitter, la misma API se utiliza en un sitio web.
He usado twint para eliminar tweets, pero tiene muchos errores y no funciona correctamente. El código no era fácil de entender. Todas las tareas tienen una configuración y el usuario debe conocer el parámetro exacto. Lo último importante es el hecho de que la API puede cambiar: Twitter es el propietario de la API y los cambios dependen de ello. Es molesto cuando algo no funciona y los usuarios deben informar errores como problemas.
pip install -U stweet
Si quieres patrocinarme, en agradecimiento por el proyecto, ¿por favor envíame algunas criptomonedas?:
Acuñar | Dirección de billetera |
---|---|
bitcóin | 3EajE9DbLvEmBHLRzjDfG86LyZB4jzsZyg |
éter | 0xE43d8C2c7a9af286bc2fc0568e2812151AF9b1FD |
Para realizar una solicitud sencilla se debe preparar la tarea de desecho. La tarea debe ser procesada por ** corredor **.
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 ()
El ejemplo anterior muestra que se necesitan pocas líneas de código para eliminar tweets.
Stweet utiliza la API del sitio web, por lo que no hay documentación sobre la recepción de respuestas. La respuesta se guarda sin formato, por lo que el usuario final debe analizarla por su cuenta. Quizás se agregue el analizador a la función.
Los datos desechados se pueden exportar de diferentes maneras utilizando la clase abstracta RawDataOutput
. La lista de estas salidas se puede pasar en cada corredor; sí, es posible exportar de dos maneras diferentes.
Actualmente, sweete ha implementado:
La biblioteca está integrada con tor-python-easy. Permite usar el proxy tor con puerto de control expuesto para cambiar la IP cuando sea necesario.
Si desea utilizar el cliente proxy Tor, debe preparar un cliente web personalizado y utilizarlo en runner.
Necesita ejecutar el proxy tor; puede ejecutarlo en su sistema operativo local o puede usar este docker-compose.
El siguiente fragmento de código muestra cómo utilizar el 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 en el cliente invitado bloquea la paginación múltiple. A veces en una consulta es posible solicitar 3 paginaciones. Para evitar esta limitación, divida el período de desguace para piezas más pequeñas.
Twitter en 2023 bloquea la API y coloca el rango de tiempo en la marca de tiempo; solo se acepta el formato AAAA-MM-DD. En la flecha solo puedes poner tiempo sin horas.
Una pequeña parte de la biblioteca usa código de twint. Twint también fue la principal inspiración para crear Sweet.