Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iEPGデジタル関連 to_s()の拡張 RubyでPVRを作ろう!その9

外部のキャプチャコマンドをsystem()関数などでキックするにもiEPGDの情報からからファイル名を生成する必要がありますね。開始時間、番組名、チャンネル名とかで決めうちで作ってもいいような気がしますが、チューナー制御コマンドへの対応も必要でしょう。
相変わらず行き当たりばったりですが、後でプログラムのコードを直さなくてもいいように、要約情報を作成する関数を作ることにします。

機能面ではto_s()に似たものになるので、to_s()を拡張します。linuxのdateコマンドのプレースホルダ機能みたいに、引数に %keyword とするとキーワードの値で置き換えてくれるようにしました。録画の日時や時間は、%Dとかにします。
微妙に悩ましいのは、そのためのデータをどうやって保持するかですが、必要なデータはここでガチには決まらないので、例によってhashで持つことにします(えへへ)。前に、開始終了時間をキャッシュ的に持ち、更新時の管理のために::UptoDate()というメソッドを作りましたが、このメソッドも拡張して、hashデータの管理もここでするようにしました。
 
それにしても、Rubyの文字列操作や正規表現はべんりですねぇ。正規表現をプログラム言語の機能として取り込んだのはなにが最初なんでしょう? bch? Perl?

  def to_s( format = nil )
    if format != nil
      for key, value in @formatHelper
        format = format.gsub( /#{key}/, value )
      end
      return format 
    end

    #to reproduce .tvipd file single content mode
   このへんは一緒なので省略
  end # to_s

  # make @timeStart, @timeEnd & @formatHelper upto date
  def UptoDate
    timeNow = Time.now
    year = (self[ "year:" ] == "" ) ?  timeNow.year : self[ "year:" ].to_i
    month = (self[ "month:" ] == "" ) ?  timeNow.month : self[ "month:" ]
    day = (self[ "date:" ] == "" ) ?  timeNow.month : self[ "date:" ]
    _start = self["start:"].split(":")
    _end = self["end:"].split(":")

    @timeStart = Time.local( year, month, day, _start[0], _start[1] )
    @timeEnd = Time.local( year, month, day, _end[0], _end[1] )
    if @timeEnd <= @timeStart
        @timeEnd += 24*60*60
    end
    # for @formatHelper
    @formatHelper = Hash::new
    @formatHelper.default = ""
    # time related
    @formatHelper[ "%D" ] = @timeStart.strftime("%Y_%m_%d"
    @formatHelper[ "%eD"] = @timeEnd.strftime("%Y_%m_%d") 
    @formatHelper[ "%T" ] = @timeStart.strftime("%H%M") 
    @formatHelper[ "%eT"] = @timeEnd.strftime("%H%M") 
    # iEPGD keyword related
    keywords =Array.new
    if self[ "version:" ] == "1"
      keywords = @@V1Mandatory + @@V1Axuary 
    else 
      keywords = @@V2Mandatory + @@V2Axuary 
    end  
    keywords.each {|key| 
      @formatHelper[ "%#{key}" ] = self[ key ] 
    }
    # '%' itself
    @formatHelper[ "%%"] = "%" 
  end #def UptoDate



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/642-bce98f67
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。