LoginSignup
13
18

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-10

なにこれ?

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

13
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
18