2013年09月06日

fbcmd - Facebook Command Line Interface Utility

Facebook を見るのにいちいちアプリやブラウザを起動するのも面倒。 さっとステータス確認、投稿することが出来ないものかと考えてしまうスピード・マニア、 Facebook 上のデータを機械的に収集・分析するのにブリッジ・アプリケーションを探しているデータ・マニアにオススメするのが今日ご紹介する fbcmd 。

fbcmd facebook cli


fbcmd のインストールと設定


プロジェクト・ホームはこちら。 Twitter ならよく見かけますが、 Facebook の CLI クライアントって珍しいですよね。

GitHub - fbcmd


まずは、PHP 実行環境をインストールしましょう。 Mac OS なら必要なし。 僕は Ubuntu をメインに使っているので次のコマンドで関連パッケージをインストール。

$ sudo apt-get install php5-cli php5-curl


さあ、 fbcmd をダウンロードしましょう。 僕( Ubuntu )だったら wget で落としますが、

$ wget https://raw.github.com/dtompkins/fbcmd/master/fbcmd_update.php


Mac OS なら curl の方が良いかもしれませんね。

$ curl -O https://raw.github.com/dtompkins/fbcmd/master/fbcmd_update.php


無事 fbcmd_update.php を手に入れたら実行して初期化します。

$ php fbcmd_update.php
fbcmd update utility [version 3.0]
http://fbcmd.dtompkins.com/update

Preference file:                 [/home/netbuffalo/.fbcmd/prefs.php]

Software development branch:     [master]
Software library destination:    [/usr/local/lib/fbcmd/]
Copy script to bin dir?:         [Yes]
Bin dir location:                [/usr/local/bin/]
Script name:                     [fbcmd]
Auto-restart when necessary:     [Yes]

... snip ...


指示通りインストール前に sudo 付きでもう一度 fbcmd_update.php を実行。

$ sudo php fbcmd_update.php sudo

fbcmd update utility [version 3.0]
http://fbcmd.dtompkins.com/update


最後に次のコマンドでインストール。

$ php fbcmd_update.php install

fbcmd update utility [version 3.0]
http://fbcmd.dtompkins.com/update

Update: COMPLETE!

fbcmd version: [none] --> [1.1]

Note: fbcmd_update.php is now at [/usr/local/lib/fbcmd/fbcmd_update.php]
so you can remove the old one at [/path/to/fbcmd/fbcmd_update.php]


後もう少し。 Facebook で認証してあげたらおしまい。 次のコマンドでブラウザを起動して、

$ fbcmd go access


fbcmd がデフォルトのブラウザを呼び出せたら Facebook へログイン、さらに次のコマンドでアクセス・トークンを生成します。

$ fbcmd go auth

ブラウ上で連携を許可するとトークンが表示されますよ。

fbcmd create access token


このトークンを fbcmd auth で登録しましょう。

$ fbcmd auth * YOUR TOKEN *

fbcmd [v1.1] AUTH Code accepted.
Welcome to FBCMD, 鈴木 太郎!

most FBCMD commands require additional permissions.
to grant default permissions, execute: fbcmd addperm


認証に成功しましたね。 あともう一つ。 より自由に操作出来るようパーミッションを追加します。

$ fbcmd addperm


ブラウザでリクエストを承認すれば全ておしまい。

fbcmd addperm


fbcmd go access 、 fbcmd go auth でブラウザが起動しないという場合は、fbcmd のみを単体で実行・出力されるメッセージに含まれる URL を直接ブラウザに入力してアクセスしましょう(それぞれ Step 1, Step 2 の URL )。

$ fbcmd

Welcome to fbcmd! [version 1.1]
This application needs to be authorized to access your facebook account.

Step 1: Allow basic (initial) access to your acount via this url:
https://www.facebook.com/dialog/oauth?client_id=xxx&redirect_uri=...
to launch this page, execute: fbcmd go access

Step 2: Generate an offline authorization code at this url:
http://www.facebook.com/code_gen.php?v=1.0&api_key=...
to launch this page, execute: fbcmd go auth


fbcmd コマンドを使った Facebook の操作方法あれこれ


自分のウォールは次のコマンドで確認出来ます。

$ fbcmd stream

結果はこう。

fb stream command


友人の投稿に対してコメントすることも可能。

$ fbcmd comment [post_id] 'コメント'

post_id は stream 結果の左隅にある数字を簡略的に使うか、$ fbcmd stream -sid で明示的に確認しましょう。


友人のウォールを見るなら fstream を使うのが便利。 この例では”田中 さん”の投稿だけをリストしています。

$ fbcmd fstream '田中 さん'


新規投稿だけを見るなら new オプションも付けましょう。

$ fbcmd fstream '田中 さん' new 


イイネ( Like )も同じ書式。

$ fbcmd like [post_id]


ここまで覚えれば fbcmd をラッピングしたスクリプトを作って上司、先輩の投稿を片っ端から自動でイイネすることだって出来ますよ(イイネ疲れの防止に是非どうぞ)。


さて、自分が投稿するときには post を使います。

$ fbcmd post 'はじめての fbcmd'


post には3つのオプション( IMG | MP3 | FLASH )があり、画像、音楽、動画を投稿することも出来ます。

例えば画像を投稿するならこう。

$ fbcmd POST IMG '金魚' 'http://farm6.staticflickr.com/5470/9278141166_b1145b5ffb_n.jpg' 0

どれも URL が事前にわかっていないと投稿出来ないのがキズですが。


勿論、シェル上で動くわけですから動的なコマンドと組み合わせる事もできますよ。

$ fbcmd post "Mac 買いました! $(uname -rv)"

fbcmd post command shell


この他にもローカルにある画像ファイルを Facebook のアルバムにアップロードする addpic (ファイル指定) 、addpicd (ディレクトリ単位の一括アップロード)、ダウンロードする opics 、メールの受信トレイを確認出来る finbox など便利なオプションが沢山。

興味を持った方はこちらのコマンド・リファレンスをどうぞ。

Commands - fbcmd :: wiki


fbcmd の出力で発生する改行時の文字化けが気になったら・・・


fbcmd はターミナル(端末)の幅に合わせて出力結果の成形していますが、この際に利用している wordwrap 関数は日本語(マルチバイト)には対応しておらず自動分割が行われた際に文字化けが発生します。

[#]   NAME              TYPE        MESSAGE

[1]   田中 さん    link post  FBCMNDを使えばFacebookをCLIから楽し
                                    ��よー。

ターミナル・サイズの変更では解決しない場合の対応方法は2つ。 

設定ファイル( ~/.fbcmd/prefs.php )を編集して print_wrap_min_width を定義、改行されないよう大きめの値(1カラムあたりの最低文字数)を設定するか、

<?php
  $fbcmdPrefs['update_branch'] = 'master';
  $fbcmdPrefs['install_script_name'] = 'fbcmd';
  $fbcmdPrefs['install_lib_dir'] = '/usr/local/lib/fbcmd/';
  $fbcmdPrefs['install_copy_to_bin'] = '1';
  $fbcmdPrefs['install_bin_dir'] = '/usr/local/bin/';
  $fbcmdPrefs['install_lib_mkdir_mode'] = '0777';
  $fbcmdPrefs['install_data_mkdir_mode'] = '0700';
  $fbcmdPrefs['install_auto_restart'] = '1';
  $fbcmdPrefs['mkdir_mode'] = '0777';
  $fbcmdPrefs['print_wrap_min_width'] = '80';
?>


fbcmd の実体である /usr/local/lib/fbcmd/fbcmd.php スクリプトを編集して、wordwrap を止めるか。

#$wrapped = wordwrap($rightCol,$wrapWidth,"\n",$fbcmdPrefs['print_wrap_cut']);
$wrapWidth = 30;
$wrapped = preg_replace('/(.{'.$wrapWidth.'})/u', '${1}'."\n", $rightCol);


それでは、より楽しい FB ライフを。
(実は僕 Facebook が苦手で全然使って無いんですよね・・・)


Facebookアプリ プログラミング入門
長谷川 智希
秀和システム
売り上げランキング: 25,658

ネット・バカ インターネットがわたしたちの脳にしていること
ニコラス・G・カー
青土社
売り上げランキング: 27,781

Posted by netbuffalo at 21:47│Comments(0)TrackBack(0) Linux | ユーティリティ


この記事へのトラックバックURL

コメントする

名前
 
  絵文字