Facebook のいいね数などのカウント数をターミナルから取得するコマンド

特定のウェブページに対する Facebook のいいね数などのカウントをチェックするコマンドです。

# get facebook count
# usage: facebook_get_count https://www.google.co.jp
function facebook_get_count {

  if [ "$#" -ne 1 ]; then
    echo 'usage: $FUNCNAME [url]'
    return
  fi

  curl -s http://graph.facebook.com/?id=${1} | node -e \
    "\
     s=process.openStdin();\
     d=[];\
     s.on('data',function(c){\
       d.push(c);\
     });\
     s.on('end',function(){\
       console.log(JSON.stringify(JSON.parse(d.join('')),null,2));\
     });\
    "
}

.bashrc などに登録しておけば以下のとおりに出力してくれます。

$ facebook_get_count https://www.google.co.jp
{
  "id": "http://www.google.co.jp",
  "shares": 164030,
  "comments": 19
}

やっていることは curl してレスポンスを node で prettify しているだけなのですが、ターミナルでぱっとチェックしたいときに便利かと思います。

JSON.stringify() で JSON を整形する部分については StackOerflow を参考にさせていただきました。