Eine moderne, schnelle Python-Bibliothek, um Tweets und Benutzer schnell von der inoffiziellen Twitter-API zu entfernen.
Dieses Tool hilft Ihnen, Tweets nach einem Suchbegriff, Tweets nach IDs und Benutzer nach Benutzernamen zu löschen. Es verwendet die Twitter-API, dieselbe API wird auch auf einer Website verwendet.
Ich habe Twint verwendet, um Tweets zu löschen, aber es hat viele Fehler und funktioniert nicht richtig. Der Code war nicht einfach zu verstehen. Alle Aufgaben haben eine Konfiguration und der Benutzer muss den genauen Parameter kennen. Der letzte wichtige Punkt ist die Tatsache, dass sich die API ändern kann – Twitter ist der API-Eigentümer und Änderungen hängen davon ab. Es ist ärgerlich, wenn etwas nicht funktioniert und Benutzer Fehler als Probleme melden müssen.
pip install -U stweet
Wenn Sie mich als Dankeschön für das Projekt sponsern möchten, senden Sie mir bitte etwas Krypto?:
Münze | Wallet-Adresse |
---|---|
Bitcoin | 3EajE9DbLvEmBHLRzjDfG86LyZB4jzsZyg |
Etherum | 0xE43d8C2c7a9af286bc2fc0568e2812151AF9b1FD |
Um eine einfache Anfrage zu stellen, muss die Schrottaufgabe vorbereitet werden. Die Aufgabe sollte von **Runner** bearbeitet werden.
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 ()
Das obige Beispiel zeigt, dass zum Verwerfen von Tweets nur wenige Codezeilen erforderlich sind.
Stweet verwendet die API der Website, daher gibt es keine Dokumentation zum Empfang von Antworten. Die Antwort wird als Rohdaten gespeichert, sodass der Endbenutzer sie selbst analysieren muss. Möglicherweise wird ein Parser in die Funktion aufgenommen.
Verschrottete Daten können mithilfe der abstrakten Klasse RawDataOutput
auf unterschiedliche Weise exportiert werden. Eine Liste dieser Ausgaben kann in jedem Runner übergeben werden – ja, es ist möglich, auf zwei verschiedene Arten zu exportieren.
Derzeit hat sweet Folgendes implementiert:
Die Bibliothek ist in tor-python-easy integriert. Es ermöglicht die Verwendung eines Tor-Proxys mit freigelegtem Steuerport, um die IP bei Bedarf zu ändern.
Wenn Sie den Tor-Proxy-Client verwenden möchten, müssen Sie einen benutzerdefinierten Web-Client vorbereiten und ihn in Runner verwenden.
Sie müssen den Tor-Proxy ausführen – Sie können ihn auf Ihrem lokalen Betriebssystem ausführen oder diesen Docker-Compose verwenden.
Der folgende Codeausschnitt zeigt, wie man einen Proxy verwendet:
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 blockiert im Gastclient die mehrfache Paginierung. Manchmal ist es möglich, in einer Abfrage drei Paginierungen anzufordern. Um diese Einschränkung zu vermeiden, teilen Sie die Verschrottungsfrist auf kleinere Teile auf.
Twitter blockiert im Jahr 2023 die API und fügt den Zeitbereich in den Zeitstempel ein – nur das Format JJJJ-MM-TT ist akzeptabel. Im Pfeil können Sie nur die Zeit ohne Stunden eingeben.
Ein kleiner Teil der Bibliothek verwendet Code von Twint. Twint war auch die Hauptinspiration für die Kreation von Sweet.