LoginSignup
3
3

More than 3 years have passed since last update.

Twitterのトレンドをミュートして快適なTwitterライフを!!

Posted at

TLが騒がしくない?

どうも、LilyMameokaです。お久しぶり。私ね、常日頃思っていたんですけど、TL、騒がしくない?
何かアニメが放送されている時間とか(日曜の朝とかね)、某コンビニ大手がキャンペーンやってる時とか、某ソシャゲがキャンペーンやってる時とか、某富豪やYoutuberがプレゼントキャンペーンやってる時とか、○断メー○ーとか...。普通にTLが賑やかなのはいいんですけど、先程挙げた、見ている側には無益なツイートでTLが騒がしいのは不快ですよね。どうでもいいツイートでTL埋めやがってクソが。
あと、折角現実逃避しにTwitterに来たのに、週刊誌が扱うようなTHE☆俗世なワードが流れてくるのもムカつくので...

トレンドワードを片っ端からミュートして平和なTLを取り戻したいと思いま〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜す!!!!

トレンドの取得

まずはトレンドワードの取得です。ただし、トレンドワード全部から処理すると、かなりの量のユーザーをミュートしてしまうので(それは申し訳ないので)、ハッシュタグのついているものだけを取得したいと思います!

get_trends.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import tweepy

CONSUMER_KEY=''
CONSUMER_SECRET=''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN = ''
ACCESS_TOKEN_SECRET = ''
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

def get_trends(api):
    trend = api.trends_place(23424856)[0]
    trends = trend['trends']
    print(u"Trends:")
    for i in range(len(trends)):
        print(u"\t{0}".format(trends[i]["name"]))

if __name__ == '__main__':
    api = tweepy.API(auth)
    get_trends(api)

これを実行すると...

Trends:
    #この夏に水着姿を見たいキャラ
    #キン肉マンアニメ化
    #彼女からの予測変換でリア充がバレる
    #ドスパラ春のセールでほしいもの
    #少クラ
    #現金給付
    #まあたそ大先生
    #ムジカピッコリーノ
    #エイトちゃんのおたんじょう日会
    #あなたのおっさん度診断
    #関ジャニ8TV
    #かずみんモバメ
    #水着の上下重ねて
    #グラクロ攻略質問
    #うちで踊ろう

お!出てきたね〜〜〜。今回は日本のトレンドを対象にしているので場所のIDは23424856です。調べたら、東京は1118370らしい。

平和なTLへ!!

さーて、本題。

と思いきや!なんと、TwitterAPIはキーワードミュートに対応していないとのこと。
https://stackoverflow.com/questions/55916527/is-there-a-way-to-create-and-destroy-muted-words-using-the-twitter-api
うーん。仕方ない。その単語をツイートした人をミュートしちゃお☆
私のTLの平和のためには多少の犠牲も仕方ないのだ!許してね♡

trend_blocker.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import tweepy

CONSUMER_KEY=''
CONSUMER_SECRET=''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN = ''
ACCESS_TOKEN_SECRET = ''
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

mute_words = []

def get_trends(api):
    trend = api.trends_place(23424856)[0]
    trends = trend['trends']
    for i in range(len(trends)):
        if trends[i]["name"].startswith("#"):
            mute_words.append(trends[i]["name"])

def mute():
    api = tweepy.API(auth)
    get_trends(api)
    count = 1 #各ワードにおけるお好みのミュート数を入れてください
    for mute_word in mute_words:
        print(mute_word)
        search_res = api.search(q = mute_word,count = count)
        for res in search_res:
            print(res.user.screen_name)
            api.create_mute(res.user.screen_name)
            print("--------------------------------------")

if __name__ == '__main__':
    mute()

よし!!!これで平和なTLが取り戻せた!素晴らしいね!
早速、快適なTLで現実逃避してきま〜〜〜〜〜〜〜〜〜す!!

参考資料

3
3
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
3
3