Picasa は死んだので,頑張って自由を取り戻そうとした話
Picasa は死んだ.
今や,ブラウザ経由か,アプリ経由でしか,画像アップロードができない.
アプリに至っては,細かい調整が効かず,フォルダにあるもの全てがアップロードされる.
Google Photos にもっと自由を.
コマンドラインでアップロードできたら,楽だろうに.
実は,1年前にそういうものを書いている.
これが,Picasa の悲劇によって,アルバム機能が動かなくなった.
折角の機会だったので,書き直した.
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 CI では, linux と osx のバイナリを作る. Appveyor では, Windows のバイナリを作る.
次のサイトを参考にした.
- Creating Multiplatform Precompiled Binaries for Node.js Modules
- EmergingTechnologyAdvisors/node-serialport
- forexample/github-binary-release
また,npm publish
させるのは他の CI サービスにしようとして,
Circle CI を使った.
そして,Greenkeeper で依存パッケージが更新されたら PR がくるようにする.
ドキュメントもちょっと書いておこうと思った.
ESDoc を使うことにした.
ESDoc は,ホスティングサービスがあって,公開が楽だった.
正直,自分のためにしか作っていないので雑.
勉強も兼ねて,いろんなサービスを使ってみた.
CI とかも初めて使った.
本当はテストを走らせるべきなのかな?
ほとんど趣味でしかコードを書いたことがないので, テストの書き方を全く知らない,書いたこともない.
こういう外の API を叩く系って, どうやってテストすればいいのだろうか.