Dropboxからスクリプトへ

自分で書いたテキストデータを読み込んで、これをHTMLで整形して表示するようなスクリプトを書いて使っていたのだが、

データを書き換えるたびにいちいち更新してアップロードしなおすのがめんどくさかった。

なんとかこの手間を省いて、簡単に更新できるようにならんか、

というところでDropboxを活用する方法を思いついた。


サーバー上にHTMLに整形するスクリプトを配置して、

この入力データをDropboxからダウンロードしてくるようにすればいいわけだ。

これならDropboxと同期しているPCならどこからでも編集できて、

サーバーに更新しろと指示を与えるだけで、どこでも更新することが出来る。

これはかなり便利そうだ。


どうやってDropbox使うのがいいのか?

以前Mechanizeを使ってDropboxにバックアップを取るスクリプトを書いたが……(参考 : Dropboxにバックアップデータを投げつける )

もうちょっと簡単な方法はないか、と思って調べてたら、こんなものが。

WebService::Dropbox

DropboxにApp登録をして、それで使うようだ。

というわけでDropboxにApp登録してみた。

My apps (Dropbox)

ここでアクセス出来る範囲をApp folderかFull dropboxか選ぶ。

App folderが推奨のようだが、単にそのアプリで使うファイルを置いておくだけならこちらの方がいいでしょうね。

このアプリからはAppsフォルダ以下に作られるそのアプリ専用のフォルダだけアクセス出来る。


では次にユーザー認証、といっても1人しか使わんので簡単に。

use WebService::Dropbox;
my $dropbox = WebService::Dropbox->new({
    key => '...',
    secret => '...'
});
print 'Access this URL:',$dropbox->login('http://hdmr.org/'),"\n";
<STDIN>;
$dropbox->auth;
print 'access_token: ',$dropbox->access_token,"\n";
print 'access_secret: ',$dropbox->access_secret,"\n";

loginでコールバックのURLを指定して認証用のURLを得る。

これにアクセスして認証をしたら、戻ってきてaccess_token,access_secretを得る。

これを保存しておけばOK。

認証を行うとAppsフォルダ以下にそのアプリ専用のフォルダが出来る。

今回はここに読み込むテキストファイルを置いておいた。


あとは実際に使うだけ。

データをダウンロードしてくる方法はこんな感じ。

$dropbox->access_token('...');
$dropbox->access_secret('...');
$dropbox->root('sandbox');
my $fh_get = IO::File->new('temp.txt','>');
$dropbox->files('input.txt',$fh_get)  or die $dropbox->error;
$fh_get->close;

認証して得たaccess_token,access_secretを指定する。

そしてrootでsandboxを指定する。アプリ専用のフォルダを使う場合はこうしておかないといけない。

あとは受け取るファイルを開いてそのオブジェクトを渡してダウンロードしてくる。

わりに簡単に使えるなと思った。


あとはこのスクリプトをWebから指示を出して動かせるようにしておけば、

どこからでもDropboxのデータを編集して更新できる。

これは便利だ。

Dropboxの使い道というのもいろいろあるな、と今回作って感じた。