読者です 読者をやめる 読者になる 読者になる

Dropbox にスクリーンショットを保存する Gyazo サーバ

便利なスクリーンショット共有ツール Gyazo ですが、運用のためか広告が大量に貼られ始めたので、自分でGyazoサーバを立てることにしました。
Gyazoソースコードはクライアント、サーバスクリプトともにgyazo/Gyazo - GitHubにあるのですぐ立てることができるのですが、そのまま使っても面白くないので、スクリーンショットDropboxに保存するようにして、ついでにsinatraで書き換えました。

https://github.com/superbrothers/gyazo-dropbox

流れは、

  1. クライアントでキャプチャ
  2. スクリーンショットをサーバへ送信
  3. サーバでリクエストを受信
  4. DropboxのAppフォルダにスクリーンショットを保存
  5. Dropboxからスクリーンショットの共有URLを取得
  6. 共有URLを返却

となっています。

Dropboxの認証にOAuthを利用するため、Dropbox Appを作成してApp Key, App Secretの取得、Access Token, Access Secretの取得が必要です。

サーバの設定

Gyazo App作成、App Key, App Secret取得

https://www.dropbox.com/developers/apps

「Create an App」からアプリを作成して、App key, App Secretを取得してください。

Access Token, Access Secret取得

Access Token, Access Secretの取得には、Dropboxが用意しているサンプルコードを利用します。
https://www.dropbox.com/developers/reference/sdk

dropbox-ruby-sdkに含まれるcli_example.rbをエディタで展開して、取得したApp Key, App Secretを記述してから実行します。
出力される内容に沿ってAccess TokenとAccess Secretを取得してください。

実行環境を用意

ソースコードをcloneします。

$ git clone https://github.com/superbrothers/gyazo-dropbox 

取得したApp Key, App Secret, Access Token, Access Secretは環境変数に設定します。herokuで動かす場合は以下のようにして設定してください。

$ heroku config:add app_key=APP_KEY app_secret=APP_SECRET access_token=ACCESS_TOKEN access_secret=ACCESS_SECRET

クライアントの設定

Gyazo.app/Contents/Resources/script を編集してポスト先を変更します。
41行目、42行目のHOSTとCGIの定数を変更します。HOSTをサーバを置くホスト名、CGIを「/」に変更してください。

HOST = 'サーバを置くホスト名'
CGI = '/'


スクリーンショットは、Dropboxの /App/{App Name}/ に保存されます。

まとめ

Dropboxはライブラリを用意していて偉い。gyazo-dropboxではDropbox Desktop Appを使っているとスクショがローカルにも保存されることになります。
Access Token, Access Secretのみの取得で使えるようにしてもよかったのですが、本家Gyazoからみてどうなのかわからなかったのでやりませんでした。