34
OwnCloud + Andoroid + Picasa + Flickr連携 KenichiroMATOHARA(matoken) <[email protected] > BoF 東海道らぐの夏祭り!ライトニングトーク 大会 in OSC京都 2014-08-02(Sat)

ownCloud + andoroid + picasa + flickr連携

Embed Size (px)

DESCRIPTION

#osckansai 東海道らぐLT スライド "オープンソースカンファレンス2014 Kansai@Kyoto - イベント案内 | 2014-08-02 (土): 東海道らぐの夏祭り!ライトニングトークBoF大会" https://www.ospn.jp/osc2014-kyoto/modules/eguide/event.php?eid=15 "東海道らぐの夏祭り!ライトニングトークBoF大会 in OSC京都 - 東海道らぐ | Doorkeeper" http://tokaidolug.doorkeeper.jp/events/13185

Citation preview

Page 1: ownCloud + andoroid + picasa + flickr連携

OwnCloud + Andoroid + Picasa + Flickr連携

KenichiroMATOHARA(matoken)<[email protected]>

BoF東海道らぐの夏祭り!ライトニングトーク 大会 in OSC京都

2014-08-02(Sat)

Page 2: ownCloud + andoroid + picasa + flickr連携

KenichiroMATOHARA

● ID : matoken● http://matoken.org/● 興味

– Linux

– FLOSS

– OpenSteetmap– 電子工作– :

Page 3: ownCloud + andoroid + picasa + flickr連携

鹿児島らぐはじめました

● 04月に出来たばかり● http://kagolug.org/● 鹿児島のお友達に教えてあげてね

Page 4: ownCloud + andoroid + picasa + flickr連携

OwnCloud + Andoroid + Picasa + Flickr連携

Page 5: ownCloud + andoroid + picasa + flickr連携

Android

● 写真の自動アップロード機能● 自動的にバックアップされていてとても便利● Google+だと写真を選択して投稿も楽々● …でも

Page 6: ownCloud + andoroid + picasa + flickr連携

● アプリケーションがそれぞれにアップロードしている– Google+/Dropbox…

● データ通信もそれぞれ必要だしバッテリーも減る

● Androidからは1回だけアップロードしてアップロード先でそれぞれに転送できないか?

Page 7: ownCloud + andoroid + picasa + flickr連携

これを

携帯ネットワーク

Page 8: ownCloud + andoroid + picasa + flickr連携

こうしたい

携帯ネットワーク

固定回線

Page 9: ownCloud + andoroid + picasa + flickr連携

…そういえば昔こんなことを

● "Linux で Eye-Fi Card を設定・各種ストレー ジサービ スに転送する"

http://www.slideshare.net/matoken/koedo-lug-c80eyefi

Page 10: ownCloud + andoroid + picasa + flickr連携

ownCloud

● Dropboxみたいなファイル共有ソフト(最近はグループウェアみたいな機能もあって色々便利)

● PHPで出来ていて自分のサーバに導入できる● Win/Mac/Linux/Andorid/iOS各種Clientあり

– WebDavプロトコルも動くのでdavにアクセスできたら環境を選ばない

● AndroidのownCloudアプリには写真の自動アップロード機能がある– ownCloudに一本化してownCloudサーバ上で処理

(Google+/FlickrへUpload)できないか?

Page 11: ownCloud + andoroid + picasa + flickr連携

ownCloudの導入

● 略● UbuntuだといくやさんのPPAおすすめ

"ownCloud Client 1.6.0のパッケージ - いくやの斬鉄日記" http://blog.goo.ne.jp/ikunya/e/fbfab38bbdd63a30ce4db366a8b6ecf6"Qt5アプリケーションのフォント設定 - いくやの斬鉄日記" http://blog.goo.ne.jp/ikunya/e/46b9097370dbccaa234d53728df869be

● DebianWheezyのpkgだとちょっと古いけど今回の内容では問題ない(RaspberryPiでも!)

Page 12: ownCloud + andoroid + picasa + flickr連携

Android版ownCloudの自動アップロード機能

● 写真を撮影すると自動的に登録したownCloud ディレクトリの下の data/アカウント名/files/InstantUpload 以下にアップロードされる

● ここを監視する

Page 13: ownCloud + andoroid + picasa + flickr連携

inotify APIでディレクトリを監視

● Linuxのinotyfy APIを使いディレクトリの状態を監視できる

● inotify をお手軽に使えるコマンドinotifywait/inotifywatch の入ったinotify-tools pkg を導入(Debian/Ubuntu)

$ sudo apt-get install inotify-tools

Page 14: ownCloud + andoroid + picasa + flickr連携

inotifywaitコマンドを試す

● option 無しだと1つのイベントで終了

% inotifywait data/mk/files/InstantUpload/Setting up watches.Watches established. data/mk/files/InstantUpload/ CREATE IMG_20140604_185820.jpg.ocTransferId5194.part

Page 15: ownCloud + andoroid + picasa + flickr連携

● -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.partdata/mk/files/InstantUpload/ OPEN IMG_20140604_190315.jpg.ocTransferId6217.partdata/mk/files/InstantUpload/ MODIFY IMG_20140604_190315.jpg.ocTransferId6217.part :data/mk/files/InstantUpload/ CLOSE_WRITE,CLOSE IMG_20140604_190315.jpg.ocTransferId6217.partdata/mk/files/InstantUpload/ MOVED_FROM IMG_20140604_190315.jpg.ocTransferId6217.partdata/mk/files/InstantUpload/ MOVED_TO IMG_20140604_190315.jpg^C

テンポラリファイルが作られる

ファイルが開かれる

転送されたデータ書き込み(転送中…)

ファイルクローズ

本来のファイル名に改名

Page 16: ownCloud + andoroid + picasa + flickr連携

● -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

Page 17: ownCloud + andoroid + picasa + flickr連携

● てことでinotifywait -m -e moved_to \ data/mk/files/InstantUpload/

● でアップロードされたファイル名が取得できることがわかった– 転送済みのタイミング :)

Page 18: ownCloud + andoroid + picasa + flickr連携

Google+(Picasa)

● Google+の画像はPicasaと統合されている● 2048x2048以下のサイズであれば容量制限なしにUpload 可能 :)

● ブラウザ上のGoogle+からアップロードすると自動的に2048x2048 以下にリサイズされる→ 無制限

● コマンドラインからGoogleの操作の出来るGoogleCLというツールがある

Page 19: ownCloud + andoroid + picasa + flickr連携

● ブラウザ上のGoogle+からでも設定によっては縮小されずにアップロードされそう.https://plus.google.com/settings

Page 20: ownCloud + andoroid + picasa + flickr連携

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/Finance/Picasa/Youtubeが操作できるようになる

Page 21: ownCloud + andoroid + picasa + flickr連携

GoogleCLでGoogle+の「投稿からの写真」領域にアップロード

● 以前(2011年冬) は 'Instant Upload'というアプバムにアップロードすると自動的に2048x2048以下にリサイズされていた– "Linux で写真を操作 - 写真の管理、現像、投稿 -"

http://www.slideshare.net/matoken/linux-33569739?qid=3de33ac3-f556-4795-bf82-89915918bea6&v=default&b=&from_search=1

● 現在はオリジナルサイズでアップロードされ → てしまうよう ディスクを消費して埋まっ

てしまう● 2048x2048以下にリサイズしてからUpでok

Page 22: ownCloud + andoroid + picasa + flickr連携

● 現在はアルバム'Instant Upload'では「投稿からの写真」にアップロードされなくなっている

● list-albamsコマンドでアルバムのリストを取得し,それらしいアルバムを試していくと'自動バックアップ'というアルバムが該当することが判った.

Page 23: ownCloud + andoroid + picasa + flickr連携

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

Page 24: ownCloud + andoroid + picasa + flickr連携

実際のコマンド

● 縮小(Imagemagic利用)

convert -resize 2048x -quality 100 画像ファイル名 /tmp/縮小ファイル名

● 投稿google picasa post '自動バックアップ' /tmp/縮小ファイル名

Page 25: ownCloud + andoroid + picasa + flickr連携

Google+投稿時に選択できるようになった

Page 26: ownCloud + andoroid + picasa + flickr連携

Flickr

● Yahoo!米の写真共有サービス● 有料版だと無制限アップロードだった

– 現在はAdFreeとAdFree+容量2Tのプランが出来た

– 無制限時からの有料ユーザは引き続き無制限

● 無料版でも1T利用可能になった

Page 27: ownCloud + andoroid + picasa + flickr連携

Flickrへの自動投稿

● libflickr-upload-perl パッケージのflickr_uploadコマンドを利用する

$ sudo apt-get install libflickr-upload-perl

Page 28: ownCloud + andoroid + picasa + flickr連携

Tokenを取得する

● ブラウザにURLを入力して認証を行いEnterを入力する.表示されたトークンを記録.この認証は別マシンで行ってもOK

% flickr_upload --auth1. 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 page3. Hit <Enter> when finished..

Your authentication token for this application is XXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX

Page 29: ownCloud + andoroid + picasa + flickr連携

Flickrでの投稿

% flickr_upload --auth_token TOKEN --public 0 --friend 0 --family 0 --tag='\"InstantUpload\"' 画像ファイル

● --auth_token 前のページで取得した認証トークン● --public 0 非公開にする

--friend 0 友達に非公開にする● --family 0 家族に非公開にする

--tag='\"InstantUpload\"' タグ付け

Page 30: ownCloud + andoroid + picasa + flickr連携

Script#!/usr/bin/perluse 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;

Page 31: ownCloud + andoroid + picasa + flickr連携

#-- 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

Page 32: ownCloud + andoroid + picasa + flickr連携

実行時の様子

$ ./inotyfy-post.plSetting 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 :

Page 33: ownCloud + andoroid + picasa + flickr連携

問題点

● Google+は広範囲の画像ファイルを検索,アップロードしていた– ownCloudアプリはカメラアプリで撮影したもの

(DCIM/Camera以下)のみ

● カメラアプリ以外で撮影した写真やスクリー…ンショットは自動保存されない .

● Scriptとか用意しなくても実はDropbox+IFTTとかでも行けたんじゃ?– 少し確認したところでは無理そう

Page 34: ownCloud + andoroid + picasa + flickr連携

Credits & License

● Content by KenichiroMATOHARA(matoken)http://matoken.org/License: CC-BY-SA

● OpenOffice.org template by Raphaël Hertzoghttp://raphaelhertzog.com/go/ooo-templateLicense: GPL-2+

● Background image by Alexis Younes “ayo”http://www.73lab.comLicense: GPL-2+