OwnCloud + Andoroid + Picasa +
Flickr連携
KenichiroMATOHARA(matoken)
<matoken@kagolug.org>
BoF東海道らぐの夏祭り!ライトニングトーク 大会
in OSC京都
2014-08-02(Sat)
KenichiroMATOHARA
● ID : matoken
● http://matoken.org/
● 興味
– Linux
– FLOSS
– OpenSteetmap
– 電子工作
– :
鹿児島らぐはじめました
● 04月に出来たばかり
● http://kagolug.org/
● 鹿児島のお友達に教えてあげてね
OwnCloud + Andoroid + Picasa +
Flickr連携
Android
● 写真の自動アップロード機能
● 自動的にバックアップされていてとても便利
● Google+だと写真を選択して投稿も楽々
● …でも
● アプリケーションがそれぞれにアップロード
している
– Google+/Dropbox…
● データ通信もそれぞれ必要だしバッテリーも
減る
● Androidからは1回だけアップロードしてアッ
プロード先でそれぞれに転送できないか?
これを
携帯ネットワーク
こうしたい
携帯ネットワーク
固定回線
…そういえば昔こんなことを
● "Linux で Eye-Fi Card を設定・各種ストレー
ジサービ スに転送する"
http://www.slideshare.net/matoken/koedo-lug
-c80eyefi
ownCloud
● Dropboxみたいなファイル共有ソフト(最近はグ
ループウェアみたいな機能もあって色々便利)
● PHPで出来ていて自分のサーバに導入できる
● Win/Mac/Linux/Andorid/iOS各種Clientあり
– WebDavプロトコルも動くのでdavにアクセスできたら環
境を選ばない
● AndroidのownCloudアプリには写真の自動アップ
ロード機能がある
– ownCloudに一本化してownCloudサーバ上で処理
(Google+/FlickrへUpload)できないか?
ownCloudの導入
● 略
● UbuntuだといくやさんのPPAおすすめ
"ownCloud Client 1.6.0のパッケージ - いくやの斬
鉄日記"
http://blog.goo.ne.jp/ikunya/e/fbfab38bbdd63a3
0ce4db366a8b6ecf6
"Qt5アプリケーションのフォント設定 - いくやの斬鉄
日記"
http://blog.goo.ne.jp/ikunya/e/46b9097370dbcc
aa234d53728df869be
● DebianWheezyのpkgだとちょっと古いけど
今回の内容では問題ない(RaspberryPiでも!)
Android版ownCloudの自動アップ
ロード機能
● 写真を撮影すると自動的に登録した
ownCloudディレクトリの下の data/アカウ
ント名/files/InstantUpload 以下にアップ
ロードされる
● ここを監視する
inotify APIでディレクトリを監視
● Linuxのinotyfy APIを使いディレクトリの状態
を監視できる
● inotify をお手軽に使えるコマンド
inotifywait/inotifywatch の入ったinotify-tools
pkg を導入(Debian/Ubuntu)
$ sudo apt-get install inotify-tools
inotifywaitコマンドを試す
● option 無しだと1つのイベントで終了
% inotifywait data/mk/files/InstantUpload/
Setting up watches.
Watches established.
data/mk/files/InstantUpload/ CREATE
IMG_20140604_185820.jpg.ocTransferId51
94.part
● -m option でmonitor mode イベントをずっと
拾う.でも冗長.
% inotifywait -m data/mk/files/InstantUpload/
Setting up watches.
Watches established.
data/mk/files/InstantUpload/ CREATE
IMG_20140604_190315.jpg.ocTransferId6217.part
data/mk/files/InstantUpload/ OPEN
IMG_20140604_190315.jpg.ocTransferId6217.part
data/mk/files/InstantUpload/ MODIFY
IMG_20140604_190315.jpg.ocTransferId6217.part
:
data/mk/files/InstantUpload/ CLOSE_WRITE,CLOSE
IMG_20140604_190315.jpg.ocTransferId6217.part
data/mk/files/InstantUpload/ MOVED_FROM
IMG_20140604_190315.jpg.ocTransferId6217.part
data/mk/files/InstantUpload/ MOVED_TO IMG_20140604_190315.jpg
^C
テンポラリファイルが作られる
ファイルが開かれる
転送されたデータ書き込み
(転送中…)
ファイルクローズ
本来のファイル名に改名
● -e option で必要な MOVED_TO event だけを
拾う
% inotifywait -m -e moved_to
data/mk/files/InstantUpload/
Setting up watches.
Watches established.
data/mk/files/InstantUpload/ MOVED_TO
IMG_20140604_190738.jpg
● てことで
inotifywait -m -e moved_to 
data/mk/files/InstantUpload/
● でアップロードされたファイル名が取得でき
ることがわかった
– 転送済みのタイミング :)
Google+(Picasa)
● Google+の画像はPicasaと統合されている
● 2048x2048以下のサイズであれば容量制限な
しにUpload可能 :)
● ブラウザ上のGoogle+からアップロードする
と自動的に2048x2048以下にリサイズされる
→ 無制限
● コマンドラインからGoogleの操作の出来る
GoogleCLというツールがある
● ブラウザ上のGoogle+からでも設定によって
は縮小されずにアップロードされそう.
https://plus.google.com/settings
GoogleCL
● "googlecl - Command line tools for the
Google Data APIs - Google Project Hosting"
https://code.google.com/p/googlecl/
● pythonで出来ていてマルチプラットホームで
動作します.
● 導入するとgoogleコマンドが利用できるよう
にな
り,Blogger/Calendar/Contacts/Docs/Financ
e/Picasa/Youtubeが操作できるようになる
GoogleCLでGoogle+の「投稿から
の写真」領域にアップロード
● 以前(2011年冬)は 'Instant Upload'というアプ
バムにアップロードすると自動的に
2048x2048以下にリサイズされていた
– "Linux で写真を操作 - 写真の管理、現像、投稿 -"
http://www.slideshare.net/matoken/linux-3356
9739?qid=3de33ac3-f556-4795-bf82-89915918bea
6&v=default&b=&from_search=1
● 現在はオリジナルサイズでアップロードされ
→てしまうよう ディスクを消費して埋まっ
てしまう
● 2048x2048以下にリサイズしてからUpでok
● 現在はアルバム'Instant Upload'では「投稿か
らの写真」にアップロードされなくなってい
る
● list-albamsコマンドでアルバムのリストを取
得し,それらしいアルバムを試していくと
'自動バックアップ'というアルバムが該当す
ることが判った.
GoogleCL認証
● 利用できるよう認証をする.初回実行時に認証が走る.
% google --force-auth picasa list-albums
Please log in and/or grant access via your browser at:
https://www.google.com/accounts/OAuthAuthorizeToken
?
oauth_token=4%2F19Y3OMnTQtuJWWi31IR0sH8JgDKO
&hd=default
ブラウザが開かれるのでGoogleの認証を行う
※w3m でも行けるかと思ったが,2段階認証後JavaScriptが
必要と言われて失敗した.リモートサーバ環境 ではssh のX
転送でブラウザを開いて回避した
$ ssh -XC user@host
実際のコマンド
● 縮小(Imagemagic利用)
convert -resize 2048x -quality 100 画像ファイル
名 /tmp/縮小ファイル名
● 投稿
google picasa post '自動バックアップ' /tmp/縮小
ファイル名
Google+投稿時に選択できるよう
になった
Flickr
● Yahoo!米の写真共有サービス
● 有料版だと無制限アップロードだった
– 現在はAdFreeとAdFree+容量2Tのプランが出来た
– 無制限時からの有料ユーザは引き続き無制限
● 無料版でも1T利用可能になった
Flickrへの自動投稿
● libflickr-upload-perl パッケージの
flickr_uploadコマンドを利用する
$ sudo apt-get install libflickr-upload-perl
Tokenを取得する
● ブラウザにURLを入力して認証を行いEnterを入力する.表示
されたトークンを記録.この認証は別マシンで行ってもOK
% flickr_upload --auth
1. Enter the following URL into your browser
http://api.flickr.com/services/auth/?
api_key=8dcf37880da64acfe8e30bb1091376b7&perms=write
&frob=72157644983537186-197058a4fdf82491-
183451&api_sig=8e06c3da0b66cc512a3ec74131b3309b
2. Follow the instructions on the web page
3. Hit <Enter> when finished.
.
Your authentication token for this application is
XXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX
Flickrでの投稿
% flickr_upload --auth_token TOKEN --public 0
--friend 0 --family 0 --tag='"InstantUpload"' 画像
ファイル
● --auth_token 前のページで取得した認証トークン
● --public 0 非公開にする
--friend 0 友達に非公開にする
● --family 0 家族に非公開にする
--tag='"InstantUpload"' タグ付け
Script#!/usr/bin/perl
use strict;
use warnings;
my $WATCHDIR =
'/var/www/owncloud/data/mk/files/InstantUpload/';
my $FLICKR_TOKEN = 'xxxxxxxxxxxxxxxxxxxx-
xxxxxxxxxxxxxxxxx';
my $jpg;
open CMD, "/usr/bin/inotifywait -m -e moved_to --format %f
$WATCHDIR |";
while($jpg=<CMD>){
chomp $jpg;
my $small = $jpg;
#-- resize(Google+用)
$small =~s/.jpg$/-2048.jpg/i;
system("convert -resize 2048x -quality 100 $WATCHDIR/$jpg
/tmp/$small");
#-- Google+ post
system("google picasa post '自動バックアップ' /tmp/$small");
system("rm /tmp/$small");
#-- Flickr post
system("/usr/bin/flickr_upload --auth_token $FLICKR_TOKEN
--public 0 --friend 0 --family 0 --tag='"InstantUpload"'
$WATCHDIR/$jpg");
}
__END__
"inotyfy-post.pl"
https://gist.github.com/matoken/1e9a5455bf8ab6511c7d
実行時の様子
$ ./inotyfy-post.pl
Setting up watches.
Watches established.
Loading file /tmp/IMG_20140621_075659-2048.jpg to
album 自動バックアップ
Uploading
/var/www/owncloud/data/mk/files/InstantUpload//IMG
_20140621_075659.jpg...
Waiting for upload results (ctrl-C if you don't care)...
/
var/www/owncloud/data/mk/files/InstantUpload//IMG_
20140621_075659.jpg is at
http://www.flickr.com/tools/uploader_edit.gne?
ids=14282595917
 :
問題点
● Google+は広範囲の画像ファイルを検索,
アップロードしていた
– ownCloudアプリはカメラアプリで撮影したもの
(DCIM/Camera以下)のみ
● カメラアプリ以外で撮影した写真やスクリー
…ンショットは自動保存されない .
● Scriptとか用意しなくても実はDropbox+IFTT
とかでも行けたんじゃ?
– 少し確認したところでは無理そう
Credits & License
● Content by KenichiroMATOHARA(matoken)
http://matoken.org/
License: CC-BY-SA
● OpenOffice.org template by Raphaël Hertzog
http://raphaelhertzog.com/go/ooo-template
License: GPL-2+
● Background image by Alexis Younes “ayo”
http://www.73lab.com
License: GPL-2+

ownCloud + andoroid + picasa + flickr連携