LINEの写真を自動的にGooglePhotoに自動でアップロードする仕組みを作りたかった
はじめに
昨年子供が生まれ子供の写真を撮る機会がすごく増えました
それと同時に撮った写真を嫁さんに LINE で送ったり、嫁さんが撮った写真を送ってもらったりということも増えました
個人の写真の管理にはGoogle Photoを使っています
送ってもらった写真を都度 LINE からダウンロードすれば Google Photo アプリがバックグラウンドで同期してくれるので問題ないのですが
- ダウンロードするのを忘れる
- LINE のアルバムをダウンロードすると既にダウンロードしている写真までてダウンロードされてしまう
というオペレーション上の悩みがありました
なので、LINE に投稿された/した写真やアルバムを自動で Google Photo にアップロードすれば悩みも解消されると思いやってみる事にしました
が、しかし
タイトルから察した方もいるかもしれませんが、当初やりたかった
- LINE に写真がポストされたら Google Photo にアップロードする
- LINE にアルバムが作られたら Google Photo にアップロードする
- LINE のアルバムに写真が追加されたら Google Photo のアルバムにアップロードする
は最終的に実現することが出来ませんでした
理由としては
- Google Photo API が Service Account に対応していない
- LINE のアルバムが作成/更新されたイベントは Webhook で取得することが出来ない
という 2 点です
Google Photo API が Service Account に対応していない
Service accounts
The Library API does not support service accounts. Your application must use the other OAuth 2.0 flows available such as OAuth 2.0 for web server applications or OAuth 2.0 for mobile and desktop apps.
https://developers.google.com/photos/library/guides/authentication-authorization#service-accounts
プライベートな情報も多いので仕方ないのかもしれないですね…
LINE のアルバムが作成/更新されたイベントは Webhook で取得することが出来ない
API Documentを見ても
メッセージの内容を含むオブジェクト。メッセージには以下のタイプがあります。
テキスト
画像
動画
音声
ファイル
位置情報
スタンプ
とあり、アルバムは取得することが出来きません
残念ですが、2017 年 7 月時点のコメントではロードマップにも無いようです…
(現時点ではどうか分かりません)
lp2gd
出来ないのはしょうが無いので、実現できる範囲内でやってみました
結論としては、
- LINE に投稿された写真を Google Drive にアップロードする
というところに落ち着きました
コードはこちらです
流れとしてはこんな感じです
LINE から Webhook を受けて Google Drive にアップロードするまでを 1 つの Function にしてお良かったのですが Pub/Sub を使ってみたかったというのもあり
- LINE の Web hook を受け取る部分
- Google Drive に画像をアップロードする部分
と処理を分けてみました
これといって工夫したところも無いですが、きちんと deploy task を用意したのは良かった点かなと思います
(あまり触ってないプロジェクトだと、どうやって反映してたっけ…? となるので w)
さいごに
当初想定していたような機能は満たせなかったですが、ある程度使えるところに着地させたので及第点かなと
今後 LINE の API や Google Photo の API が更新されたらまたチャレンジしたいと思います
技術評論社
売り上げランキング: 144,038