はてブロ@ama_ch

https://twitter.com/ama_ch

Twitterの友達の発言から未フォローのIDを取り出す

Twitterで友達の発言を眺めていると、
「@hoge バカスwww」
なんて発言があって「@hogeってフォローしてたっけ?」なんてことがよくありますよね。・・ありますよね?とにかく僕はよくあります。
そんな僕のジェラシーを解消すべく、python-twitterを利用して、友達の発言から未フォローの人を取り出せるコードを書きました。

下準備

というほどでもないけど、昨日のpython-twitterでフレンドリストをファイルに保存するをちょっとだけ改造。ほんとにちょっとだけ。
昨日のだと、「@hogehoge」で利用するIDではなく表示名になってしまうので、IDの方を取得するようにします。
後半部分に入ったあたりにある

f.write(user.name + "\n")

f.write(user.screen_name + "\n")

と変更してやればおkです。これでお友達のIDをファイルに書き出すことができます。

実行

以下のコードからどうぞ。

#!/usr/bin/env
# -*- coding: utf-8 -*-
""" jealousy.py
    お友達が口に出した知らない人のIDを表示します
"""
import re
import twitter

api = twitter.TwitterApi("ユーザー名", "パスワード")
ftl = api.GetFriendsTimeline()
suspects = []

# タイムラインから名前だけ取り出す
for friend in ftl:
    suspects += re.findall("@([a-zA-Z0-9_]+)", friend.text)

print "---名前一覧---"
for i in suspects:
    print i

filename = "friendsid.txt"  # followingユーザー一覧
f = open(filename)
myfriends = f.read().split('\n')
f.close()

print "---未フォロー---"
for i in suspects:
    if not i in myfriends:
        print i

正規表現が全然わからんかった><
@([a-zA-Z0-9_]+)
これで「@で始まる英数字とアンダースコアの文字列」になるはず!


実行してみます。

$ python jealousy.py
---名前一覧---
---未フォロー---

発言に含まれる名前一覧と、そのうちフォローしていない名前を表示します。
・・・つもりが誰も@hoge発言してない><


もういっかい

$ python jealousy.py
---名前一覧---
beeash
natu_n
Ta_ka_ki
Misho
no_exist_user
skylab13
msax
supistar
---未フォロー---
beeash
natu_n
Ta_ka_ki
no_exist_user

できた!!! わざわざ@no_exist_userて発言したのにいきなり増えて助かったw


これで焼きもちやきの僕も安心して眠ることができます。正規表現は全然使ったことがなかったので、勉強になりました。全然理解できていないことがわかりました><