Edited at

削除したツイートだけ取ってくるシステムを作ってみた

More than 1 year has passed since last update.


なにこれ?

PythonでTweepyを使って、タイムラインを監視して削除したツイートだけを標準出力するだけのプログラム


ネタ元


コード

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から怒られて消されているので注意。


宣伝

フォローお願いします:alien: @redshoga