gakkieのBlog

初Rubyと携帯電話

このエントリーを含むはてなブックマークはてなブックマーク - 初Rubyと携帯電話 この記事をクリップ!Livedoorクリップ - 初Rubyと携帯電話 Yahoo!ブックマークに登録 BuzzurlにブックマークBuzzurlにブックマーク @niftyクリップに追加 このエントリをつぶやくこのWebページのtweets Share on Tumblr FC2ブックマークへ追加 newsing it! この記事をChoix! Googleブックマークに追加 Bookmark this on Delicious Digg This FriendFeedで共有

英語の勉強をしたくてここのPodcastを聞くことにしました。
ただ、ものぐさな僕はiPodをPCにつなげるのが面倒なので、
どうにか携帯に送ることを画策しました。

というわけで、

  1. podcastのRSSを取得
  2. RSSの必要な情報だけ編集
  3. 携帯にメールで送信

ということを、以前からちょっとだけ気になってたRubyで書くことにしました。

初RubyなのでHello Worldからでしたが、
だいたい2時間でここまで完成。

1 #!/usr/bin/ruby
2
3 require 'net/http'
4 require 'rexml/document'
5 require 'net/smtp'
6
7 # get rss files
8 host = 'pipes.yahoo.com'
9 response = ''
10 Net::HTTP.version_1_2
11 Net::HTTP.start(host, 80) {|http|
12 response = http.get('/pipes/pipe.run?_id=xM36Ym433BG6H2gzD9XErg&_render=rss')
13 }
14
15 # analyze xml response
16 title = ''
17 link = ''
18 description = ''
19 guid = ''
20 pubDate = ''
21 enclosureUrl = ''
22
23 doc = REXML::Document.new response.body
24 doc.elements.each("*/channel/item/*") {|element|
25 if element.name == 'title'
26 title = element.text
27 elsif element.name == 'description'
28 description = element.text
29 elsif element.name == 'pubDate'
30 pubDate = element.text
31 elsif element.name == 'enclosure'
32 enclosureUrl = element.attributes['url']
33 end
34 }
35
36 # mail to mobile
37 to = "" #←ここに携帯のアドレス
38 subj = "EnglishAsASecondLanguagePodcast -newest"
39 from = "podcastbot@gakkie.com"
40
41 body = <
42
43 title: #{title}
44 date: #{pubDate}
45
46 mp3: #{enclosureUrl}
47
48 #{description}
49
50 sent by gakkie.com
51 BODY
52
53 head = <
54 Subject: #{subj}
55 To: #{to}
56 From: #{from}
57
58 HEAD
59
60 src = head + body
61 mail = Net::SMTPSession.new('gakkie.com', 25)
62 mail.start
63 mail.sendmail(src, from, to)
64 mail.finish
65

使ったRSSは生のモノじゃなくて、pipesに食わせました。
MySQLとかと組み合わせて、
送ってないMP3だけ送るとかっていうロジックを書くのが面倒だったので、
(というか文法の勉強が面倒だったので、)
更新するタイミング(月、水、金)とちょっとずらしてcronで送っちゃえと思ったからです。
# Ruby初心者なので許してください。
というわけで、crontab

# m h dom mon dow command
0 7 * * 2 /home//bin/getmp3.rb
0 7 * * 4 /home/
/bin/getmp3.rb
0 7 * * 1 /home/
/bin/getmp3.rb

これで、来週の朝からは携帯で英語の勉強が出来ちゃうぜ!
って思ったら、ぼくの携帯ではMP3をサポートしてませんでしたとさ。
トホホ。




Leave a Reply