Une bibliothèque Python rapide et moderne pour supprimer rapidement les tweets et les utilisateurs de l'API non officielle de Twitter.
Cet outil vous aide à supprimer les tweets par expression de recherche, les tweets par identifiants et les utilisateurs par noms d'utilisateur. Il utilise l'API Twitter, la même API est utilisée sur un site Web.
J'ai utilisé Twint pour supprimer des tweets, mais il contient de nombreuses erreurs et il ne fonctionne pas correctement. Le code n'était pas simple à comprendre. Toutes les tâches ont une configuration et l'utilisateur doit connaître le paramètre exact. La dernière chose importante est le fait que l'API peut changer : Twitter est le propriétaire de l'API et les modifications en dépendent. C'est ennuyeux quand quelque chose ne fonctionne pas et les utilisateurs doivent signaler les bogues comme problèmes.
pip install -U stweet
Si vous souhaitez me sponsoriser, en remerciement pour le projet, merci de m'envoyer des crypto ?:
Pièce de monnaie | Adresse du portefeuille |
---|---|
Bitcoin | 3EajE9DbLvEmBHLRzjDfG86LyZB4jzsZyg |
Éthérum | 0xE43d8C2c7a9af286bc2fc0568e2812151AF9b1FD |
Pour faire une demande simple, la tâche de rebut doit être préparée. La tâche doit être traitée par **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 ()
L'exemple ci-dessus montre que quelques lignes de code sont nécessaires pour supprimer des tweets.
Stweet utilise l'API du site Web, il n'y a donc aucune documentation sur la réception d'une réponse. La réponse est enregistrée au format brut, l'utilisateur final doit donc l'analyser lui-même. Peut-être que l'analyseur sera ajouté à la fonctionnalité.
Les données supprimées peuvent être exportées de différentes manières en utilisant la classe abstraite RawDataOutput
. La liste de ces sorties peut être transmise dans chaque coureur – oui, il est possible d'exporter de deux manières différentes.
Actuellement, stweet a implémenté :
La bibliothèque est intégrée à tor-python-easy. Il permet d’utiliser le proxy Tor avec un port de contrôle exposé – pour changer l’adresse IP lorsque cela est nécessaire.
Si vous souhaitez utiliser le client proxy Tor, vous devez préparer un client Web personnalisé et l'utiliser dans Runner.
Vous devez exécuter le proxy Tor - vous pouvez l'exécuter sur votre système d'exploitation local ou vous pouvez utiliser ce docker-compose.
L'extrait de code ci-dessous montre comment utiliser le 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 sur le client invité bloque la pagination multiple. Parfois, dans une requête, il est possible d'appeler 3 paginations. Pour éviter cette limitation, divisez la période de mise au rebut en pièces plus petites.
Twitter en 2023 bloque dans l'API en mettant la plage de temps dans l'horodatage – seul le format AAAA-MM-JJ est acceptable. Dans la flèche, vous ne pouvez mettre que le temps sans heures.
Une petite partie de la bibliothèque utilise le code de Twint. Twint a également été la principale source d'inspiration pour créer stweet.