uitspitss blog

プログラミングと音楽とエッセイ ※記載内容は個人の見解であり、所属する組織とは一切関係がありません。

特定の文字列を含むツイートを削除する

twitterで行なっていたテストが終わったので、テストでしていたツイートを削除しました。 今回はtwitterAPI,requests_oauthlibを使いました。

from requests_oauthlib import OAuth1Session
import json
import re
from time import sleep

def main():
    CONSUMER_KEY = ''
    CONSUMER_SECRET = ''
    ACCESS_TOKEN = ''
    ACCESS_SECRET = ''

    twitter = OAuth1Session(CONSUMER_KEY,
                            client_secret = CONSUMER_SECRET,
                            resource_owner_key = ACCESS_TOKEN,
                            resource_owner_secret = ACCESS_SECRET)

    req = twitter.get('https://api.twitter.com/1.1/statuses/user_timeline.json',
                      params = {'count': 100})

    user_timeline = json.loads(req.text)
    for tweet in user_timeline:
        if re.search(r'テストテスト!', tweet['text']):
            print(tweet['text'])
            del_req = twitter.post('https://api.twitter.com/1.1/statuses/destroy/{}.json'.format(tweet['id']))
            print('DELETE:', json.loads(del_req.text)['id'])
            sleep(2)


if __name__ == '__main__':
    main()

さくっと使えればよかったので、とりあえずユーザータイムラインから100ツイートごとに拾ってきて削除。 ステータスコードのチェックなども入れるとなおよいでしょう。

実行結果

テストテスト!
DELETE: 826774781261275136

参考

POST statuses/destroy/:id — Twitter Developers

GET statuses/user_timeline — Twitter Developers

user_timelineって直近の3200ツイートまでしか遡れないんですね。