Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have 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

redshoga
ヌルスタックエンジニア🔰 衝動で生きてる ※記事の内容は所属組織とは関係ありません
https://ichioka.tokyo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away