なにこれ?
PythonでTweepyを使って、タイムラインを監視して削除したツイートだけを標準出力するだけのプログラム
ネタ元
- Twitter、政治家が削除したツイートのアーカイブサイト「Politwoops」復活で合意
- Politwoops (政治家が削除したツイートのアーカイブサイト)
コード
Python3でTweepyを使っています.pip install tweepy
すればインストールできます.
CONSUMER_KEYとかはご自身で用意したものを入力してください.
delcheck.py
# coding: UTF-8
import tweepy
from datetime import timedelta
import json
CONSUMER_KEY = ""
CONSUMER_SECRET = ""
ACCESS_TOKEN = ""
ACCESS_TOKEN_SECRET = ""
my_db = {}
def get_oauth():
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
return auth
def pprint(dict_data):
for k, v in dict_data.items():
print(k, v)
class Listener(tweepy.StreamListener):
def on_error(self, status_code):
print("Error: " + str(status_code))
def on_data(self, data):
obj = json.loads(data, encoding="UTF-8")
if "delete" in obj:
tweet_id = obj.get("delete").get("status").get("id")
print("deleted!")
if tweet_id in my_db:
print(my_db[tweet_id])
else:
print("-")
elif "text" in obj:
my_db[obj.get("id")] = obj.get("user").get("screen_name") + ": " + obj.get("text")
def on_timeout(self):
print("Timeout...")
if __name__ == "__main__":
auth = get_oauth()
listener = Listener()
stream = tweepy.Stream(auth, listener)
stream.userstream()
蛇足
削除とかの通知はon_dataに流れてきます.ユーザのタイムラインのデータを起動時から保存しておき,削除されたものに保存してあったものがあったら標準出力します.ちゃんとしたDBを用いずにmy_db(辞書型オブジェクト)にタイムラインからのデータ(ツイート本文のみ)を保存しています.
1日動かしてみて気づいたことは,わりとみんなツイート消してること.
追記(2017年10月24日)
こんな感じのサービスはTwitterの規約に反しています。
似たようなサービスがTwitterから怒られて消されているので注意。
宣伝
フォローお願いします @redshoga