retry code
久しぶりにコードを書いた。といっても30ステップ程度のスクリプトだけど。
最近radikoの録音が途中でサーバから切断される。それもTBSだけ。同じ時間に録っている文化放送は問題がない。
radikoolみたいに終了時刻を監視して再接続させたいな。
バッチファイルだと時間の計算がめんどくさい。で、Rubyを使ってみることにした。初Rubyだ。
Ruby入門的なコンテンツをいくつか読んでコーディング。
こんな感じ。
station = ARGV.shift program = ARGV.shift durings = ARGV.shift.to_i retry_count = 3 while retry_count > 0 do begin_time = Time.now # puts begin_time.strftime("%Y%m%d-%H%M%S") start_time = begin_time.strftime("%Y%m%d-%H%M%S") rtmpdump = "..." ffmpeg = "..." neroaacenc = "..." command = "#{rtmpdump} | #{ffmpeg} | #{neroaacenc}" # puts command system(command) end_time = Time.now # puts end_time.strftime("%Y%m%d-%H%M%S") progress_time = (end_time - begin_time).ceil # puts progress_time durings -= progress_time break if durings < 60 retry_count = 3 if progress_time > 60 retry_count -= 1 end
これをExerbでexeファイル化して使う。
早速昨日のキラキラで効果があったよ。14:13頃に切断後、15秒で再接続。