フォロワーの増減を確認する

いまさらながら、Twitterアプリを作るためにいくつかのAPIテストしている最中です。で、副産物としてリムーブ通知ができました。cronとかに設定してメール送信でもすれば、コマンドをたたく必要がないです。スクリプト自体は、idで識別しているので、誰なのかを確認するには、別途処理が必要です。

色々確認している最中だけど、この、followers/idsは、100件とかの制限はなさそうなので、こういった簡易的なリストを作るのには向いているかも。

#!/bin/sh

uid=ykots
ymd=`date '+%Y%m%d%H%M%S'`

# TWITTER API
TWITTER_FOLLOWERS_API="http://api.twitter.com/1/followers/ids/$uid.json"

# フォローワー一覧リスト取得
status=`curl --silent --connect-timeout 10 -O $TWITTER_FOLLOWERS_API -w "%{http_code}"`
rtn=$?
if [ $rtn -ne 0 ]; then
  echo "curl error!!($rtn)"
  exit 1
fi

#HTTPステータスコード
if [ $status -ne 200 ]; then
  echo "twitter API error.($r)"
  cat $uid.json
  exit 1
fi

# リスト作成
if [ -e new_$uid.list ] ;then
  rm new_$uid.list
fi
for id in `cat $uid.json |sed -e "s/\[//" | sed -e "s/\]//" | sed -e "s/,/ /g"`; do
  echo $id >> new_$uid.list
done
rm $uid.json

# 過去比較
if [ -e $uid.list ]; then
  d=`diff new_$uid.list $uid.list | grep "^[<|>]" | sed -e "s/ /:/g"`
  if [ -z $d ]; then
    echo "変わってないよ"
    exit 2
  fi

  for id in $d; do
    f=`echo $id | awk 'BEGIN {FS=":"}{print $1}'`
    if [ $f = "<" ]; then
      echo "あたらしくフォローされたみたい。 :D"
    else
      echo "ありゃ、リムーブされちゃった。 :("
    fi
    echo $id | awk 'BEGIN {FS=":"}{print $2}'
  done
fi

# 移動およびバックアップ
cp new_$uid.list $uid.list.$ymd
mv new_$uid.list $uid.list

まあ、利用する人はいないかと思いますが、利用上の注意を書いておきます。比較のために、過去リストを保存しています。また、履歴も残していますので、適当なタイミングで消す必要があります。

追記

使う人いないと思っていたので、適当に書いていたんですが、星なんかを貰っちゃっていたので、もうすこし、注意点を。このシェルは、使ってみてもらうとわかりますが、ログインとか必要ないです。API的にOAuthとか必要ないんです。実際に使うときには、3行目のuidを変更することで自分用に変更できます。

uid=ykots <-ここを自分のidに変更する

で、ってことは、全然赤の他人のフォロワー履歴も採取することができます。さらにAPIを変更すれば、フォロー履歴も監視できてしまいます。他人を監視って、ちょっと気持ち悪い気もしますが。API的には問題ないのですが、そんな事やっていいのかわかりません。*1そのあたり、自己責任で使ってください。

*1:実際できるのだから、大丈夫だとは思いますけど...