Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ

1,909 views

Published on

鹿児島らぐの鹿児島Linux勉強会-第02回-発表

LingrBotを作ってみた
OwnClowd+Andoroid+Picasa+Flickr連携
Chromecast をLinuxで遊ぶ

Published in: Technology

LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ

  1. 1. LingrBot を作ってみた / ownCloud+Andoroid+Picasa+Flickr 連 携 /Chromecast を Linux で遊ぶ KenichiroMATOHARA(matoken) <matoken@kagolug.org> Linux - 02 -鹿児島 勉強会 第 回 2014-06-28(Sat) サンエールかごしま 4F 中研修室 3
  2. 2. KenichiroMATOHARA ● ID : matoken ● http://matoken.org/ ● 興味 ● Linux ● FLOSS ● OpenSteetmap ● 電子工作 ● :
  3. 3. 今日のネタ ● LingrBot を作ってみた ● OwnCloud+Andoroid+Picasa+Flickr 連携 ● Chromecast を Linux で遊ぶ
  4. 4. LingrBot を作ってみた
  5. 5. Lingr? ● Web チャットサービス ● IRC に似ている ● IRC との違い ● 常駐したりしなくてもログが保存される ● 専用クライアントは必要なくブラウザだけで ok ● Lingr-IRC GW プログラムを使ったら IRC Client でも 利用できるので IRC 派にも安心 ? # IRC はやったことがない人にはどうも敷居が高いら …しい .
  6. 6. 鹿児島らぐの Lingr ROOM ● http://lingr.com/room/kagolug ● ML との連携がしたい ● ML にメッセージが投稿されたら Subject を Lingr に投稿
  7. 7. Lingr には bot 用の API がある ● https://github.com/lingr/lingr/wiki/Lingr-Bot-AP I ● cgi などを用意しておけば Room に投稿され 内容が見える ● get メソッドだけで投稿も可能
  8. 8. bot 登録 ● 以下のページで bot を登録します. ● “Lingr” http://lingr.com/bot/create ● 登録内容 ● Bot id : 任意 ● Callback URL : この URL に room の内容が飛 んできます.その内容から反応したりすること が出来ます.とりあえず最低限 HTTP で 200 を 返すものを用意して指定.
  9. 9. メッセージ受信用の cgi を作成 ● ひとまず受け答えはしないつもりなので HTTP 200 を返すだけの Script を用意 ● 用意しなかったりエラーがあると room にエ …ラーメッセージが #!/usr/bin/perl print "Content-type: text/plainnn";
  10. 10. 投稿テスト ● get だけで投稿できるので試しに投稿してみます. ● 次のページで情報が入手できます http://lingr.com/developer ● bot_verifier は載っていませんが, bot ID と Secret から 求められます. ● $ echo -n 'KagolugML_botxxxxxxxxxxxxxxxxxxxxxxxxxxx'|sha1sum B3c03556dca8dfffb8c509cb709817044c98ad87 - ● この場合 b3c03556dca8dfffb8c509cb709817044c98ad87 が bot_verifier です.
  11. 11. 投稿先の room : kagolug bot ID : KagolugML_bot bot_verifier : b3c03556dca8dfffb8c509cb709817044c98ad87 ● 以下のようにアクセスしてみると room にメッセージ が投稿されました, % w3m -dump ‘http://lingr.com/api/room/say? room=kagolug&bot=KagolugML_bot&text= はろーわー るど &bot_verifier=b3c03556dca8dfffb8c509cb709817044c 98ad87‘
  12. 12. メールから Linger に投稿 ● 鹿児島らぐの ML だけを登録したメールアド レスを用意. ● そのアドレスの .forward に以下の Sctipt を呼ぶように "|exec /home/mk/bin/ml2lingr.pl" のような感じで設定しておきます,後はメー ルが届くとこの Script が呼ばれて Room に 投稿されます.
  13. 13. Script#!/usr/bin/perl use strict; use warnings; use Encode; use Email::MIME; use Email::MIME::ContentType; use LWP::Simple; my $ROOM = 'kagolug'; my $BOT_NAME = 'KagolugML_bot'; # echo -n 'botIDSecret' | sha1sum my $BOT_VERIFIER = 'b3c03556dca8dfffb8c509cb709817044c98ad87'; my $mail=''; while(my $line=<STDIN>){ $mail .= $line; } my $parsed = Email::MIME->new($mail); my $Subject = encode( 'utf8', $parsed->header('Subject') ) . "n"; my $url = "http://lingr.com/api/room/say? room=$ROOM&bot=$BOT_NAME&text=$Subject&bot_verifier=$BOT_VERIFIER"; print get("$url");             初期設定とか        メール受信              メール Subject 取り出し                                URL 作成 & 投稿
  14. 14. ● irc の bot とか書くよりずっとお手軽に書け ました. ● 今回は単に投稿するだけですが, cgi で room のメッセージを解析して反応するとか すると bot らしくなりますね. http://matoken.org/blog/blog/2014/06/25/lingr _bot/
  15. 15. OwnCloud + Andoroid + Picasa + Flickr 連携
  16. 16. Android ● 写真の自動アップロード機能 ● 機動的にバックアップされていてとても便利 ● Google+ だと写真を選択して投稿も楽々 ● …でも
  17. 17. ● アプリケーションがそれぞれにアップロード している ● Google+/Dropbox… ● データ通信もそれぞれ必要だしバッテリーも 減る ● Android からは 1 回だけアップロードしてア ップロード先でそれぞれにサーバに転送でき ないか ?
  18. 18. これを 携帯ネットワーク
  19. 19. こうしたい 携帯ネットワーク 固定回線
  20. 20. …そういえば昔こんなことを ● "Linux で Eye-Fi Card を設定・各種ストレ ージサービ スに転送する " http://www.slideshare.net/matoken/koedo-lug -c80eyefi
  21. 21. ownCloud ● Dropbox みたいなファイル共有ソフト ● PHP で出来ていて自分のサーバに導入できる ● Win/Mac/Linux/Andorid/iOS 各種 Client あり ● WebDav プロトコルも動くので dav にアクセス できたら環境を選ばない ● Android の ownCloud アプリには写真の自動 アップロード機能がある ● ownCloud に一本化して ownCloud サーバ上で処 理 (Google+/Flickr へ Upload) できないか ?
  22. 22. 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
  23. 23. ownCloud の自動アップロード機 能 ● 写真を撮影すると自動的に登録した ownCloud ディレクトリの下の data/ アカウ ント名 /files/InstantUpload 以下にアップロ ードされる ● ここを監視する
  24. 24. inotify API でディレクトリを監視 ● Linux の inotyfy API を使いディレクトリの状 態を監視できる ● inotify をお手軽に使えるコマンド inotifywait/inotifywatch の入った inotify-tools pkg を導入 (Debian/Ubuntu) $ sudo apt-get install inotify-tools
  25. 25. 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
  26. 26. ● -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 テンポラリファイルが作られる ファイルが開かれる 転送されたデータ書き込み ( …転送中 ) ファイルクローズ 本来のファイル名に改名
  27. 27. ● -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
  28. 28. ● てことで inotifywait -m -e moved_to data/mk/files/InstantUpload/ ● でアップロードされたファイル名が取得でき ることがわかった ● 転送済みのタイミング :)
  29. 29. Google+(Picasa) ● Google+ の画像は Picasa と統合されている ● 2048x2048 以下のサイズであれば容量制限 なしに Upload 可能 :) ● ブラウザ上の Google+ からアップロードす ると自動的に 2048x2048 以下にリサイズさ →れる 無制限 ● コマンドラインから Google の操作の出来る GoogleCL というツールがある
  30. 30. ● ブラウザ上の Google+ からでも設定によっ ては縮小されずにアップロードされそう. https://plus.google.com/settings
  31. 31. 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 が操作できるようになる
  32. 32. GoogleCL で Google+ の「投稿か らの写真」領域にアップロード ● 以前 (2011 年冬 ) は 'Instant Upload' というア プバムにアップロードすると自動的に 2048x2048 以下にリサイズされていた ● "Linux で写真を操作 - 写真の管理、現像、投稿 -" http://www.slideshare.net/matoken/linux-3356973 9?qid=3de33ac3-f556-4795-bf82-89915918bea6&v=de fault&b=&from_search=1 ● 現在はオリジナルサイズでアップロードされて →しまうよう ディスクを消費して埋まってし まう ● 2048x2048 以下にリサイズしてから Up で ok
  33. 33. ● 現在はアルバム 'Instant Upload' では「投稿 からの写真」にアップロードされなくなって いる ● list-albams コマンドでアルバムのリストを取 得し,それらしいアルバムを試していくと ' 自動バックアップ ' というアルバムが該当す ることが判った.
  34. 34. 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
  35. 35. 実際のコマンド ● 縮小 (Imagemagic利用 ) convert -resize 2048x -quality 100 画像ファイ ル名 /tmp/ 縮小ファイル名 ● 投稿 google picasa post ' 自動バックアップ ' /tmp/ 縮小ファイル名
  36. 36. Google+ 投稿時に選択できるよう になった
  37. 37. Flickr ● Yahoo! 米の写真共有サービス ● 有料版だと無制限アップロードだった ● 現在は AdFree と AdFree+ 容量 2T のプランが出 来た ● 無制限時からの有料ユーザは引き続き無制限 ● 無料版でも 1T 利用可能になった
  38. 38. Flickr への自動投稿 ● libflickr-upload-perl パッケージの flickr_upload コマンドを利用する $ sudo apt-get install libflickr-upload-perl
  39. 39. 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
  40. 40. Flickr での投稿 % flickr_upload --auth_token TOKEN --public 0 --friend 0 --family 0 --tag='"InstantUpload"' 画像 ファイル ● --auth_token 前のページで取得した認証トークン ● --public 0 非公開にする --friend 0 友達に非公開にする ● --family 0 家族に非公開にする --tag='"InstantUpload"' タグ付け
  41. 41. 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;
  42. 42. #-- 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
  43. 43. 実行時の様子 $ ./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   :
  44. 44. 問題点 ● Google+ は広範囲の画像ファイルを検索,ア ップロードしていた ● ownCloud アプリは写真アプリで撮影したもの (DCIM 以下 ) のみ ● 写真アプリ以外で撮影した写真やスクリーン …ショットは自動保存されない . ● Script とか用意しなくても実は Dropbox+IFTT とかでも行けたんじゃ ? ● 少し確認したところでは無理そう
  45. 45. Chromecast を Linux で遊ぶ
  46. 46. Chromecast? ● Google が先日販売を開始した無線 Lan で映 像データを受けて HDMI で出力するストリー ミングデバイス.結構お安い ? ● "Chromecast" http://www.google.com/intl/ja/chrome/devices /chromecast/index.html
  47. 47. Linux で使えるん ? ● API もあるし, Chrome の拡張機能もあるよ うなので最悪 Chrome の画面は映せると思う ….安いしポチる. ● GooglePlay でポチったら国際宅配便で香港 から発送 orz ● 国内購入組より数日遅れで届く
  48. 48. セットアップ ● Chromecast に microUSB で給電 ● Chromecast が WiFi の AP になるので接続す る ● 気になるメッセージが表示されるけどそのま ま進んで AP の設定(普段使う AP )をして 完了
  49. 49. Chromecast の初期化 ● Chromecast の物理ボタンが一個あるがこれ を長押しすると初期化され,再セットアップ が可能 (このボタンなんだろうと押したら初期化さ れた >< )
  50. 50. Chrome/Chromeium にアプリ導入 ● "Chrome ウェブストア - Google Cast" https://chrome.google.com/webstore/detail /google-cast/boadgeojelhgndaghljhdicfkmll pafd?utm_campaign=en&utm_source=en-et-na- us-oc-webstrapp&utm_medium=et "Chrome ウェブストア - Google Cast (Beta)" https://chrome.google.com/webstore/detail /google-cast-beta/dliochdbjfkdbacpmhlcpml eaejidimm?utm_campaign=en&utm_source=en-e t-na-us-oc-webstrapp&utm_medium=et
  51. 51. 利用方法 ● 接続したい PC を Chromecast と同じネット ワークに接続して Chrome の Chromecast 拡 張機能ボタンを押すと選択できる. ● 指定したタブをキャスト出来る ● Youtube 等の対応 site ではキャストボタンが 利用できる
  52. 52. 画面全体をキャストは 今のところ出来無さそ う
  53. 53. 設定 ● オプションから画像の品質の設定が可能
  54. 54. ● ベータ版は設定が多い ● 「 Additional receiver IPs 」とか気になる設 定が
  55. 55. 色々試す ● バンダイチャンネル・ニコニコ動画 ● フルスクリーンにすると普通にキャストされる ● AdobeFlash 経由で元々結構 CPU を必要とする のに更にキャスト分の CPU が必要 ● キャスト先と PC 両方で映像が表示されるが,音 声はキャスト先のみ.映像は遅延するので PC の 画面を見るとストレス. ● Tweetdeck(Chrome で動く Twitter アプリ ) ● 何もしない時に流すのに良さそう.
  56. 56. (実はバンダイチャンネルとかは古い Android で再生するほうが PC が熱くならな …い分快適だったり ) 2011 年発売の Xperia Pro で バンダイチャンネル視聴
  57. 57. ● Slideshare ● フルスクリーンにすると違和感なく動作する ● J-comi ● マンガ.いちばん高解像度 (720p) にしても台詞 が読めなかった orz
  58. 58. ● .mp4 ファイルを直に再生 ● 特に問題なく再生できる.ブラウザで表示,再 生できるものなら何でも良さそう ● ownCloud 経由 ● 快適に映像が楽しめる
  59. 59. DVI に変換 ● 縦横比が少しおかしくなるが映った ● 音声はどこからも取り出せ無さそう HDMI メスーメス HDMI->DVI 変換 DVI オスーオス
  60. 60. VGA に変換 ● 初めの起動画面は映るけどその後写らない & デバイスが見つからない. ● 恐らく起動時の解像度はいけるけどその後の 高解像度に非対応で Chromecast が寝る ● このアダプタは 3.5mm ステレ オジャックが 付いていて音声 が取り出せる ので残念
  61. 61. みんなで使える ? ● 同じネットワークで Google アカウントが同 じじゃないと使えないぽい ● プロジェクタなどに Chromecast を繋いでリ モートでみんなで表示するようなことは Chromecast だけでは出来ない ><
  62. 62. Linux での使い勝手 ● HDMI モニタがある & 映像をよく見るならお すすめ ● NAS を使うと NAS->PC->Chromecast と無 駄な通信が発生する. NAS から直に再生し たい ● VLC が対応予定らしいので期待 ● GoogleI/O で機能増えたらしいけど未だ未確 認 ><
  63. 63. 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+

×