Picasa は死んだので,頑張って自由を取り戻そうとした話

Picasa は死んだ.

Picasa API は消え去った.

今や,ブラウザ経由か,アプリ経由でしか,画像アップロードができない.

アプリに至っては,細かい調整が効かず,フォルダにあるもの全てがアップロードされる.

Google Photos にもっと自由を.


コマンドラインでアップロードできたら,楽だろうに.

実は,1年前にそういうものを書いている.

Google Photos の容量無制限を活用すべく,非公開API使ってアップローダ作った.

これが,Picasa の悲劇によって,アルバム機能が動かなくなった.

折角の機会だったので,書き直した.

NPM

Node.js 製だが,バイナリも用意した.

手元に,Windows x64 と Ubuntu x64 しかないので,動作確認まではしてない.

使うまでに,少し手間がいるのだが,設定さえ終われば,

$ upload-gphotos file.jpg

こんな感じだ.叩くと,ユーザ名とパスワードを訊かれる.

動画も画像もいける.返ってくる JSON を取っておくと,幸せになれる.

このツール,2段階認証があると使えないので,予備アカウントとかで使うといい.


以下,実装などの話.


Google Photos の API には,atという謎パラメータが必要.

この謎パラメータは,Google Photos のコード内にあるようだが所在不明.

追記 普通にあった.そういうの気持ちが萎える.

生成する関数までは見つけたので,jsdomで実行させることで取得する.

アップロードに関する話は,同人誌で書いた

テンション上がると,uglifyされたコード読むの楽しい.宝探し的な感じ,多分.


Node.js のバイナリは,jaredallard/nexe で生成した.

nexe は,require()を見て取り込むコードを決めるようだ.

最初は,winstonjs/winstonでログ出力していたが, requireを動的に決めているようでダメだった.

結局,nomiddlename/log4js-nodeを使うことにした.


CI を使って,バイナリを生成することにした.

Travis CIAppveyor を使った.

Travis CI では, linuxosxバイナリを作る. Appveyor では, Windowsバイナリを作る.

次のサイトを参考にした.

また,npm publishさせるのは他の CI サービスにしようとして, Circle CI を使った.

そして,Greenkeeper で依存パッケージが更新されたら PR がくるようにする.


ドキュメントもちょっと書いておこうと思った.

ESDoc を使うことにした.

ESDoc は,ホスティングサービスがあって,公開が楽だった.


正直,自分のためにしか作っていないので雑.

勉強も兼ねて,いろんなサービスを使ってみた.

CI とかも初めて使った.

本当はテストを走らせるべきなのかな?


ほとんど趣味でしかコードを書いたことがないので, テストの書き方を全く知らない,書いたこともない.

こういう外の API を叩く系って, どうやってテストすればいいのだろうか.