Twitterアカウントのフォロー数、フォロワー数、フォロー数とフォロワー数の差分を取得するシェルスクリプト(バッチ処理プログラム) ~フォロー数・フォロワー数の増減の記録、定期的なメトリクスの登録・監視・分析に使えるバッチ処理~

AWS,EC2,Programming,Shell Script

多くの個人、企業を始め、数々の有名人が情報や意見を簡単に発信できるTwitterは今や広く普及し、時代のトレンドや世論の分析にも使われるようなコミュニケーションツールとなっています。

今回はそんな世の中を知るビッグデータの1要素となっている公開Twitterアカウントのフォロー数、フォロワー数を収集する簡単なシェルスクリプト(バッチ処理プログラム)を紹介します。

シェルスクリプト(バッチ処理プログラム)でデータを収集することで、対象のTwitterアカウントのフォロー数・フォロワー数の増減を記録したり、定期的にAWS CloudWatchのようなクラウド監視ツールにメトリクスを送信してデータを蓄積し、監視・分析に使うなどバッチ処理と簡単に連携できます。

Twitterアカウントのフォロー数、フォロワー数、フォロー数とフォロワー数の差分を取得するシェルスクリプト(バッチ処理プログラム) ~フォロー数・フォロワー数の増減の記録、定期的なメトリクスの登録・監視に使えるバッチ処理~

基本的な方針はTwitterの公開アカウントのURL(https://twitter.com/<@を除くアカウント名>)からフォロー数、フォロワー数を取得して差分とともに表示します。

Twitterアカウントのフォロー数、フォロワー数、フォロー数とフォロワー数の差分を取得するシェルスクリプト(バッチ処理プログラム)

具体的な処理としてはTwitterアカウントのURLの情報をcurlで取得し、フォロー数、フォローワー数に関する行から正規表現で数値を抽出します。

差分についてはフォロー数からフォロワー数を引いた単純な計算値です。

入力値のTwitterアカウント名の「@(アットマーク)」はあっても無くても処理できるようにしています。

[mag4j@localhost ~]# vim check_twitter_follow.sh
#!/bin/bash

TMP_DIR=/tmp
TMP_FILE=twitter_user_top.txt
TWITTER_URL=https://twitter.com

mkdir -p ${TMP_DIR}

TWITTER_ACCOUNT=$1

TWITTER_ACCOUNT=`echo "${TWITTER_ACCOUNT}" | sed 's/@//g'`

if [ "${TWITTER_ACCOUNT}" = "" ]; then
  echo "Usage: $(basename $0) [TWITTER_ACCOUNT]"
  exit 1
fi

TWITTER_URL="${TWITTER_URL}/${TWITTER_ACCOUNT}"

curl -sS ${TWITTER_URL} > ${TMP_DIR}/${TMP_FILE}

FOLLOWING=`cat ${TMP_DIR}/${TMP_FILE} | grep 'data-nav="following"' | sed 's/[^0-9]//g'`
FOLLOWERS=`cat ${TMP_DIR}/${TMP_FILE} | grep 'data-nav="followers"' | sed 's/[^0-9]//g'`

echo "Following: ${FOLLOWING}"
echo "Followers: ${FOLLOWERS}"
echo "Difference: $((FOLLOWING-FOLLOWERS))"

rm -rf ${TMP_DIR}/${TMP_FILE}

Twitterアカウントのフォロー数、フォロワー数、フォロー数とフォロワー数の差分を取得するシェルスクリプト(バッチ処理プログラム)の使用例

[mag4j@localhost ~]# check_twitter_follow.sh @mag4j
Account: @mag4j
Following: 39312
Followers: 35920
Difference: 3392
Reference: Tech Blog citing related sources