SlideShare a Scribd company logo
1 of 22
Download to read offline
(仮)と(仮)と
自動自動TweetTweet
についてについて
2015/01/10 Sat
10
お約束
この発表は個人的な物で
仕事や所属等は全然関係
ありません。
誤記や間違い等あれば
ご指摘頂けると
助かります。
@takatayoshitake
自己紹介
@takatayoshitake
あけましておめでとうございます
広島を中心に勉強会に出没。
オープンソースカンファレンス広島の
お手伝いやいろんな勉強会で
Ustとかやってます。
広島サーバユーザ友の会(仮称)や
日本CloudStackユーザ会 広島支部等
も最近はじめました。一応・・・ OSC広島の公式キャラクター
「あきちゃん」
http://j.mp/osc14hiaki
会場のみなさんに質問
A. 知ってる
B. 知らない
広島広島ITIT勉強会カレンダー勉強会カレンダー((仮仮))
についてについて
全員知ってたらここで終了
知らない方が居たら
次のページへ進む
広島IT勉強会カレンダー(仮)
http://j.mp/hiitcal #hiitcal
始まり
昔のブログで
「勉強会・セミナー参加予定・履歴 カレンダー」
を公開していたら意外に見てるって人が居た。
広島でも勉強会が増えてきて自分が参加出来
ないもの増えてきたので別のカレンダーにして
公開してみた。
主な情報源
AZusaar!!(あずさー)
http://azusaar.appspot.com/
スキルミガキ広島
http://skill-migaki.com/hiroshima/
@IT イベントカレンダー+ログ
https://event.atmarkit.co.jp/
IT 勉強会カレンダー(本家)
https://www.google.com/calendar/embed?src=fvijvohm91uifvd9hratehf65k@group.cal
endar.google.com
広島勉強会計画予定カレンダー(仮)
(非公開)
その他 Twitter , Facebook , doorkeeper の通知等
bit.ly アクセス状況
https://bitly.com/hiitcal+
広島IT勉強会カレンダー(仮)
https://www.google.com/calendar/embed?src=5udlp7brhcnbuv0mq7t0jcmh04@gro
up.calendar.google.com&ctz=Asia/Tokyo
Created May 27, 2013 by tkty
2013/5/27~2015/1/10 1504 clicks
広島IT勉強会カレンダー(仮)の
Twitterアカウントを
先週(2015/1/3)作成しました
https://twitter.com/hiitcal/status/551358088364560384
アイコンは Inkscape で作成
カレンダーの内容を
Twitter のハッシュタグ #hiitcal
で手動でツイートしてましたが
いいかげん面倒に成って来たので
自動化してみました
環境
ConoHa VPS CentOS 6.6
標準では ruby-1.8.7
gem install twitter
エラーが出る場合はruby-devel が必要
yum install ruby-devel
仕組み
hiitcal_tweet.sh
メインプログラム wget で googleカレンダーから iCal 取得
ics2lst.rb
iCal を 1行のリストに変換
tweetline.rb
標準入力から読み込んだ内容をツイート
最新のファイルはこちらから
https://github.com/takata/hiitcal
#!/bin/bash
# get hiitcal & tweet URL http://j.mp/hiitcal
script_dir="$(cd "$(dirname "${BASH_SOURCE:-$0}")"; pwd)"
cd $script_dir
test -f basic.ics.2 && mv basic.ics.2 basic.ics.3
test -f basic.ics.1 && mv basic.ics.1 basic.ics.2
test -f basic.ics && mv basic.ics basic.ics.1
wget --quiet --output-document=basic.ics
https://www.google.com/calendar/ical/5udlp7brhcnbuv0mq7t0jcmh04%40group.calendar.google.com/public/basic.ics
test -s basic.ics || { echo "calendar-get-error" ; exit 1; }
test -f basic.lst.2 && mv basic.lst.2 basic.lst.3
test -f basic.lst.1 && mv basic.lst.1 basic.lst.2
test -f basic.lst && mv basic.lst basic.lst.1
cat basic.ics | ./ics2lst.rb | sort > basic.lst
diff basic.lst.1 basic.lst | egrep "^> " | cut -c3- > basic.lst.diff
test -s basic.lst.diff || { exit 0; }
cat basic.lst.diff | 
awk '{print "[更新] "$0" #hiitcal http://j.mp/hiitcal"}' 
> tweet.lst
if test -s tweet.lst ; then
cat tweet.lst | ./tweetline.rb
fi
hiitcal_tweet.sh
#!/usr/bin/ruby
# GoogleCalenter(ics) to Textlist
dtstart = ""
description = ""
summary = ""
dtnow = Time.now
dtlocal = dtnow
for line in STDIN
str = line.chomp
case str
when /^DTSTART:20/
dtstarttmp = str.gsub(/DTSTART:/,"")
year = dtstarttmp[0..3]
month = dtstarttmp[4..5]
day = dtstarttmp[6..7]
hour = dtstarttmp[9..10]
min = dtstarttmp[11..12]
sec = dtstarttmp[13..14]
dtgm = Time.gm(year, month, day, hour, min, sec)
dtlocal = dtgm + 60 * 60 * 9
dtstart = dtlocal.strftime("%Y-%m-%d %H:%M")
when /^DESCRIPTION:/
description = str.gsub(/DESCRIPTION:/,"")
when /^ /
description = description + str.gsub(/^ /,"")
when /^SUMMARY:/
summary = str.gsub(/SUMMARY:/,"")
when /END:VEVENT/
if dtlocal > dtnow then
print dtstart," ",summary," ",description,"n"
dtlocal = dtnow
end
end
end
ics2lst.rb
#!/usr/bin/ruby
# tweet line
require 'rubygems'
require 'twitter'
require 'pp'
sleeptime = 10
@client = Twitter::REST::Client.new(
:consumer_key => "[consumer_key]",
:consumer_secret => "[consumer_secret]",
:access_token => "[access_token]",
:access_token_secret => "[access_token_secret]"
)
for line in STDIN
twstr = line.chomp
@client.update(twstr)
sleep(sleeptime)
end
tweetline.rb
twitter consumer_key 取得
https://apps.twitter.com/
詳しい説明は検索してね
ics → lst
BEGIN:VEVENT
DTSTART:20140301T050000Z
DTEND:20140301T080000Z
DTSTAMP:20150109T220502Z
UID:3o0tnn5fpn308ck75tdumt2ut8@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;X-NUM-GUE
STS=0:mailto:5udlp7brhcnbuv0mq7t0jcmh04@group.calendar.google.com
CREATED:20140212T150359Z
DESCRIPTION:http://ltdd.doorkeeper.jp/events/9051
LAST-MODIFIED:20140212T150416Z
LOCATION:ShakeHands (広島市中区紙屋町1-4-6 アウルスタイル紙屋町 3F)
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:[広島]LT駆動開発 01 - 発表することで勉強しよう
TRANSP:OPAQUE
END:VEVENT
2015-01-10 10:00 [広島] #LT駆動 開発 10 – LTではじめる2015 http://ltdd.doorkeeper.jp/events/18315
ics
lst
ツイートする内容
2015-01-16 13:00 [広島]a-blog cms DAY in Hiroshima 2015/01 #ablogcms
https://www.facebook.com/events/768921726527916/?ref=51&source=1
[更新] 2015-01-16 13:00 [広島]a-blog cms DAY in Hiroshima 2015/01 #ablogcms
https://www.facebook.com/events/768921726527916/?ref=51&source=1 #hiitcal http://j.mp/hiitcal
basic.lst.diff
tweet.lst
前日との差分を diff で抽出
diff basic.lst.1 basic.lst | egrep "^> " | cut -c3- > basic.lst.diff
前後に説明やURLをawkで追加
cat basic.lst.diff | 
awk '{print "[更新] "$0" #hiitcal http://j.mp/hiitcal"}' 
> tweet.lst
課題
繰り返しの場合や終日だとデータ形式が違う
BEGIN:VEVENT
DTSTART;TZID=Asia/Tokyo:20150117T103000
DTEND;TZID=Asia/Tokyo:20150117T123000
これはこれでツイートして欲しくない未定のデータを登録しておけるので
結果オーライ
最初しばらくはハッシュタグが検索されない?
他の方をフォローしたり普通に呟いてたら5日目くらいで改善しました。
まとめ
●
広島IT勉強会は個人的な
備忘録として更新しています。
●
色々な方から情報を頂いて
成り立っています。
●
勉強会情報絶賛募集中!!
ご清聴ありがとうございました。

More Related Content

Viewers also liked

Kitchenbathportfolio3
Kitchenbathportfolio3Kitchenbathportfolio3
Kitchenbathportfolio3
RaquelT
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture Portfolio
Charles Powers
 
10:30 AM ET Q4 2008 Tenneco Inc. Earnings Conference
 10:30 AM ET 	Q4 2008 Tenneco Inc. Earnings Conference 10:30 AM ET 	Q4 2008 Tenneco Inc. Earnings Conference
10:30 AM ET Q4 2008 Tenneco Inc. Earnings Conference
finance46
 
autozone AZO_04AR
autozone  AZO_04ARautozone  AZO_04AR
autozone AZO_04AR
finance46
 
hormel foods hrl_990330_200_120
hormel foods  hrl_990330_200_120hormel foods  hrl_990330_200_120
hormel foods hrl_990330_200_120
finance46
 

Viewers also liked (18)

Kitchenbathportfolio3
Kitchenbathportfolio3Kitchenbathportfolio3
Kitchenbathportfolio3
 
Phylosophy
PhylosophyPhylosophy
Phylosophy
 
Green Decorating 11.29.09
Green Decorating 11.29.09Green Decorating 11.29.09
Green Decorating 11.29.09
 
毕业年,行走无疆界
毕业年,行走无疆界毕业年,行走无疆界
毕业年,行走无疆界
 
Bhamashah Award 2012
Bhamashah Award 2012Bhamashah Award 2012
Bhamashah Award 2012
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture Portfolio
 
Sosialemedier it-trender2011 - bare for løye
Sosialemedier it-trender2011 - bare for løyeSosialemedier it-trender2011 - bare for løye
Sosialemedier it-trender2011 - bare for løye
 
Clever Advertising
Clever AdvertisingClever Advertising
Clever Advertising
 
10:30 AM ET Q4 2008 Tenneco Inc. Earnings Conference
 10:30 AM ET 	Q4 2008 Tenneco Inc. Earnings Conference 10:30 AM ET 	Q4 2008 Tenneco Inc. Earnings Conference
10:30 AM ET Q4 2008 Tenneco Inc. Earnings Conference
 
Минкомсвязь об использовании ЕСИА кредитными организациями
Минкомсвязь об использовании ЕСИА кредитными организациямиМинкомсвязь об использовании ЕСИА кредитными организациями
Минкомсвязь об использовании ЕСИА кредитными организациями
 
AIESEC HUST 09Fall 招新——人文学院
AIESEC HUST 09Fall 招新——人文学院AIESEC HUST 09Fall 招新——人文学院
AIESEC HUST 09Fall 招新——人文学院
 
autozone AZO_04AR
autozone  AZO_04ARautozone  AZO_04AR
autozone AZO_04AR
 
Thats Cool
Thats CoolThats Cool
Thats Cool
 
Charitwy - Australian Non-Profits and Twitter
Charitwy - Australian Non-Profits and TwitterCharitwy - Australian Non-Profits and Twitter
Charitwy - Australian Non-Profits and Twitter
 
hormel foods hrl_990330_200_120
hormel foods  hrl_990330_200_120hormel foods  hrl_990330_200_120
hormel foods hrl_990330_200_120
 
Cloudstackをみんなでつくってみよう! in 広島 【第2回】XenServer編(計画中)
Cloudstackをみんなでつくってみよう! in 広島 【第2回】XenServer編(計画中)Cloudstackをみんなでつくってみよう! in 広島 【第2回】XenServer編(計画中)
Cloudstackをみんなでつくってみよう! in 広島 【第2回】XenServer編(計画中)
 
Rocodromo 1º bachiller
Rocodromo 1º bachillerRocodromo 1º bachiller
Rocodromo 1º bachiller
 
Об инициативе украиского правительства касательно регистрации Интернет-изданий
Об инициативе украиского правительства касательно регистрации Интернет-изданийОб инициативе украиского правительства касательно регистрации Интернет-изданий
Об инициативе украиского правительства касательно регистрации Интернет-изданий
 

More from Yoshitake Takata

20150704-innovationegg04-conoha
20150704-innovationegg04-conoha20150704-innovationegg04-conoha
20150704-innovationegg04-conoha
Yoshitake Takata
 

More from Yoshitake Takata (20)

20170805-osckyoto-lt-hiroshima
20170805-osckyoto-lt-hiroshima20170805-osckyoto-lt-hiroshima
20170805-osckyoto-lt-hiroshima
 
来週11/27(日) OSC広島のご紹介
来週11/27(日) OSC広島のご紹介来週11/27(日) OSC広島のご紹介
来週11/27(日) OSC広島のご紹介
 
[参考情報]OSC広島のお知らせ
[参考情報]OSC広島のお知らせ[参考情報]OSC広島のお知らせ
[参考情報]OSC広島のお知らせ
 
スマホのパケットを節約したいけど音泉をもっと楽しみたい
スマホのパケットを節約したいけど音泉をもっと楽しみたいスマホのパケットを節約したいけど音泉をもっと楽しみたい
スマホのパケットを節約したいけど音泉をもっと楽しみたい
 
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみたアニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
 
一部のWebアクセスだけ回線を切り替える方法
一部のWebアクセスだけ回線を切り替える方法一部のWebアクセスだけ回線を切り替える方法
一部のWebアクセスだけ回線を切り替える方法
 
IT関係の認定試験と取得費用について
IT関係の認定試験と取得費用についてIT関係の認定試験と取得費用について
IT関係の認定試験と取得費用について
 
今年は広島関連のアニメがすごい!
今年は広島関連のアニメがすごい!今年は広島関連のアニメがすごい!
今年は広島関連のアニメがすごい!
 
広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています
 
Ubuntuで起動画面を美雲あんずさんに変更してみた!
Ubuntuで起動画面を美雲あんずさんに変更してみた!Ubuntuで起動画面を美雲あんずさんに変更してみた!
Ubuntuで起動画面を美雲あんずさんに変更してみた!
 
20150704-innovationegg04-conoha
20150704-innovationegg04-conoha20150704-innovationegg04-conoha
20150704-innovationegg04-conoha
 
OpenWebBoardを触ってみた(仮)
OpenWebBoardを触ってみた(仮)OpenWebBoardを触ってみた(仮)
OpenWebBoardを触ってみた(仮)
 
Webの通信を暗号化で安全に!無料ではじめるSSL証明書入門
Webの通信を暗号化で安全に!無料ではじめるSSL証明書入門Webの通信を暗号化で安全に!無料ではじめるSSL証明書入門
Webの通信を暗号化で安全に!無料ではじめるSSL証明書入門
 
冴えないFileSystem(ファイルシステム)の育て方
冴えないFileSystem(ファイルシステム)の育て方冴えないFileSystem(ファイルシステム)の育て方
冴えないFileSystem(ファイルシステム)の育て方
 
Puppetを試してみた 〜スタンドアローン〜(途中)
Puppetを試してみた 〜スタンドアローン〜(途中)Puppetを試してみた 〜スタンドアローン〜(途中)
Puppetを試してみた 〜スタンドアローン〜(途中)
 
構成管理入門以前 〜ミラーyumリポジトリを作ってみよう〜
構成管理入門以前 〜ミラーyumリポジトリを作ってみよう〜構成管理入門以前 〜ミラーyumリポジトリを作ってみよう〜
構成管理入門以前 〜ミラーyumリポジトリを作ってみよう〜
 
二月は広島の勉強会がすごい
二月は広島の勉強会がすごい二月は広島の勉強会がすごい
二月は広島の勉強会がすごい
 
やはり日本の技術基準適合証明はまちがっている?
やはり日本の技術基準適合証明はまちがっている?やはり日本の技術基準適合証明はまちがっている?
やはり日本の技術基準適合証明はまちがっている?
 
広島を盛り上げる新しいサービスをつくろう!~レッドハッカソン ひろしま~
広島を盛り上げる新しいサービスをつくろう!~レッドハッカソン ひろしま~広島を盛り上げる新しいサービスをつくろう!~レッドハッカソン ひろしま~
広島を盛り上げる新しいサービスをつくろう!~レッドハッカソン ひろしま~
 
CloudStack&日本CloudStackユーザ会のご紹介(仮)
CloudStack&日本CloudStackユーザ会のご紹介(仮)CloudStack&日本CloudStackユーザ会のご紹介(仮)
CloudStack&日本CloudStackユーザ会のご紹介(仮)
 

広島IT勉強会カレンダー(仮)と自動Tweetについて