Python
Python3
tweepy

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

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