ownCloud + andoroid + picasa + flickr連携

1,734 views

Published on

#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

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,734
On SlideShare
0
From Embeds
0
Number of Embeds
183
Actions
Shares
0
Downloads
8
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

ownCloud + andoroid + picasa + flickr連携

  1. 1. OwnCloud + Andoroid + Picasa + Flickr連携 KenichiroMATOHARA(matoken) <matoken@kagolug.org> BoF東海道らぐの夏祭り!ライトニングトーク 大会 in OSC京都 2014-08-02(Sat)
  2. 2. KenichiroMATOHARA ● ID : matoken ● http://matoken.org/ ● 興味 – Linux – FLOSS – OpenSteetmap – 電子工作 – :
  3. 3. 鹿児島らぐはじめました ● 04月に出来たばかり ● http://kagolug.org/ ● 鹿児島のお友達に教えてあげてね
  4. 4. OwnCloud + Andoroid + Picasa + Flickr連携
  5. 5. Android ● 写真の自動アップロード機能 ● 自動的にバックアップされていてとても便利 ● Google+だと写真を選択して投稿も楽々 ● …でも
  6. 6. ● アプリケーションがそれぞれにアップロード している – Google+/Dropbox… ● データ通信もそれぞれ必要だしバッテリーも 減る ● Androidからは1回だけアップロードしてアッ プロード先でそれぞれに転送できないか?
  7. 7. これを 携帯ネットワーク
  8. 8. こうしたい 携帯ネットワーク 固定回線
  9. 9. …そういえば昔こんなことを ● "Linux で Eye-Fi Card を設定・各種ストレー ジサービ スに転送する" http://www.slideshare.net/matoken/koedo-lug -c80eyefi
  10. 10. ownCloud ● Dropboxみたいなファイル共有ソフト(最近はグ ループウェアみたいな機能もあって色々便利) ● PHPで出来ていて自分のサーバに導入できる ● Win/Mac/Linux/Andorid/iOS各種Clientあり – WebDavプロトコルも動くのでdavにアクセスできたら環 境を選ばない ● AndroidのownCloudアプリには写真の自動アップ ロード機能がある – ownCloudに一本化してownCloudサーバ上で処理 (Google+/FlickrへUpload)できないか?
  11. 11. 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でも!)
  12. 12. Android版ownCloudの自動アップ ロード機能 ● 写真を撮影すると自動的に登録した ownCloudディレクトリの下の data/アカウ ント名/files/InstantUpload 以下にアップ ロードされる ● ここを監視する
  13. 13. inotify APIでディレクトリを監視 ● Linuxのinotyfy APIを使いディレクトリの状態 を監視できる ● inotify をお手軽に使えるコマンド inotifywait/inotifywatch の入ったinotify-tools pkg を導入(Debian/Ubuntu) $ sudo apt-get install inotify-tools
  14. 14. 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
  15. 15. ● -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 テンポラリファイルが作られる ファイルが開かれる 転送されたデータ書き込み (転送中…) ファイルクローズ 本来のファイル名に改名
  16. 16. ● -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
  17. 17. ● てことで inotifywait -m -e moved_to data/mk/files/InstantUpload/ ● でアップロードされたファイル名が取得でき ることがわかった – 転送済みのタイミング :)
  18. 18. Google+(Picasa) ● Google+の画像はPicasaと統合されている ● 2048x2048以下のサイズであれば容量制限な しにUpload可能 :) ● ブラウザ上のGoogle+からアップロードする と自動的に2048x2048以下にリサイズされる → 無制限 ● コマンドラインからGoogleの操作の出来る GoogleCLというツールがある
  19. 19. ● ブラウザ上のGoogle+からでも設定によって は縮小されずにアップロードされそう. https://plus.google.com/settings
  20. 20. 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が操作できるようになる
  21. 21. 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
  22. 22. ● 現在はアルバム'Instant Upload'では「投稿か らの写真」にアップロードされなくなってい る ● list-albamsコマンドでアルバムのリストを取 得し,それらしいアルバムを試していくと '自動バックアップ'というアルバムが該当す ることが判った.
  23. 23. 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
  24. 24. 実際のコマンド ● 縮小(Imagemagic利用) convert -resize 2048x -quality 100 画像ファイル 名 /tmp/縮小ファイル名 ● 投稿 google picasa post '自動バックアップ' /tmp/縮小 ファイル名
  25. 25. Google+投稿時に選択できるよう になった
  26. 26. Flickr ● Yahoo!米の写真共有サービス ● 有料版だと無制限アップロードだった – 現在はAdFreeとAdFree+容量2Tのプランが出来た – 無制限時からの有料ユーザは引き続き無制限 ● 無料版でも1T利用可能になった
  27. 27. Flickrへの自動投稿 ● libflickr-upload-perl パッケージの flickr_uploadコマンドを利用する $ sudo apt-get install libflickr-upload-perl
  28. 28. 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
  29. 29. Flickrでの投稿 % flickr_upload --auth_token TOKEN --public 0 --friend 0 --family 0 --tag='"InstantUpload"' 画像 ファイル ● --auth_token 前のページで取得した認証トークン ● --public 0 非公開にする --friend 0 友達に非公開にする ● --family 0 家族に非公開にする --tag='"InstantUpload"' タグ付け
  30. 30. 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;
  31. 31. #-- 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
  32. 32. 実行時の様子 $ ./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  :
  33. 33. 問題点 ● Google+は広範囲の画像ファイルを検索, アップロードしていた – ownCloudアプリはカメラアプリで撮影したもの (DCIM/Camera以下)のみ ● カメラアプリ以外で撮影した写真やスクリー …ンショットは自動保存されない . ● Scriptとか用意しなくても実はDropbox+IFTT とかでも行けたんじゃ? – 少し確認したところでは無理そう
  34. 34. 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+

×