«前の日記(2009-07-08 (Wed)) 最新 次の日記(2009-07-11 (Sat))»

ありし日の気分(改)

2002|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|02|03|04|07|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|12|
2015|05|06|
2018|02|03|08|09|12|
2019|10|
2009年
7月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
昨日のカウンタ:
今日のカウンタ:

[RDF]

最近のトラックバック

2009-07-09 (Thu)

[iphone] twitterのreplyの通知をMMSで

twitter MMS

Push Notificationに対応した通知専用アプリでもtwitterクライアントでもいいので、それを作るというのが王道なのでしょうが、ちょっと手軽さを出したくて、別にMMSでもいいじゃんという気がしてTwitterのReplyを監視するのソースを変更させて頂いて、こんな風にしてみました。

適当なLinuxサーバがあったので、そこでcronでまわしています。


#!/usr/bin/ruby -Ku

=begin

  twitter_polling.rb

  originally written in:

  http://d.bulkitem.com/20080224.html#p01

  modified by SAkira 

=end

 

#$DEBUG   = true

$VERBOSE = true

 

#require 'rubygems'

#require 'ruby-growl'

require 'nkf'

require 'net/smtp'

require 'open-uri'

require 'rss'

require 'pstore'

 

class SendMail

  FromMailAddress = 'hogehoge@foo.bar'

  ToMailAddress = '*********@softbank.ne.jp'

  SMTPHost = '127.0.0.1'

  SMTPPort = 25

  def notify(key, id, status)

    output = key + " from " + id + "\n" + NKF.nkf('-u', status)

    Net::SMTP.start(SMTPHost, SMTPPort) do |smtp|

      smtp.send_message(output, FromMailAddress, ToMailAddress)

    end

  end

end

 

module Twitter

  AUTH_INFO = ['userid', 'passwd']

  REPLIES  = 'http://twitter.com/statuses/replies.rss'

  DATABASE = '.twitter_data.txt'

  

  class Status

    attr_accessor :uid, :date, :status, :guid

    def initialize

      @uid = nil

      @date = nil

      @status = nil

      @guid = nil

    end

  end

  

  class RepliesWatch

    def initialize(notifer)

      @notifer = notifer

      @data = nil

      @update = false

    end

    def load

      db = PStore.new(Twitter::DATABASE)

      db.transaction do

        @data = db['guid']

      end

      @data = Hash.new if @data.nil?

    end

    def save

      if @update

        db = PStore.new(Twitter::DATABASE)

        db.transaction do

          db['guid'] = @data

        end

      end

    end

    def get

      open(Twitter::REPLIES, {:http_basic_authentication => Twitter::AUTH_INFO}) do |f|

        if f.status == ['200', 'OK']

          begin

            rss = RSS::Parser::parse(f.read)

          rescue RSS::InvalidRSSError

            rss = RSS::Parser::parse(f.read, false)

          end

          tmp = Hash.new

          obj = Twitter::Status.new

          rss.items.each do |item|

            obj.uid, obj.status = item.title.split(': ', 2)

            obj.date = item.pubDate

            obj.guid = item.guid

            unless @data.has_key?(obj.guid.to_s)

              @notifer.notify("reply", obj.uid, obj.status)

              @update = true

            end

            tmp.store(obj.guid.to_s, obj.dup)

          end

          @data = tmp

        end

      end

    end

  end

end

 

begin

  tw = Twitter::RepliesWatch.new(SendMail.new)

  tw.load()

  tw.get()

  tw.save()

rescue Exception => e

  puts e.to_s

end

まぁ悪くない感じで動いているのではないかと…

本日のツッコミ(全2件) [ツッコミを入れる]
はただ (2009-07-20 (Mon) 16:53)

昨日見せていただいたときに

第18回 携帯電話とAsteriskをつなげる
http://itpro.nikkeibp.co.jp/article/COLUMN/20070405/267511/?P=3

(3)chan_cellphoneであるようにAsteriskがBluetooth経由でソフトバンクモバイルの端末を操ってSMSで通知されているのかと思いました.

さきら (2009-07-20 (Mon) 22:32)

そこまで必要ないですし、これで充分なんで。目的を達成できるのな手段はできるだけシンプルに。
ソフトバンクのMMSはEメールアドレスも持って、インターネットからのメールの受信もできるのは良い拡張だと思います。



C++でつくるUnreal Engineアプリ開発 for Windows & macOS  UE4でC++を使う方法を書いた本です。

«前の日記(2009-07-08 (Wed)) 最新 次の日記(2009-07-11 (Sat))»


2002|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|02|03|04|07|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|12|
2015|05|06|
2018|02|03|08|09|12|
2019|10|