yahoonewsTTR - ネット接続を確実に
ヤフーニュース取得ソフトyahoonewsTTRがVer.0.9.0にアップデートしました。
今回の変更点は
コマンドラインからの自動取得する機能は良いですよね、定時に自動でのニュースの取得が行いやすくなりました。特にupdownオプションはネット接続中か否かを気にせずに実行できるのでポイント高いですね。
で、試してみたのですが、私の環境(無線LAN)でネットの自動接続を行わせると、なぜか接続完了した後でnetwork errorになって記事の取得に失敗することが多いですね、前のバージョンでは起こらなかったのですけど。
そこでRubyの勉強がてらソースを少しいじらせてもらいました、ついでにネット接続が失敗してもリトライするようにもしてみました。例によってRubyはちゃんと理解してないのでかなり怪しいですけどなんとか動作してるみたいです(^^;
通信が確立しているかの判断は、さきらさんのcron_inet.rbを参考にさせていただきました(っていうか、ほとんどそのままです)
まず、online?メソッド(っていうんですか?)をgetyahooの上に追加
def online? if (/^0\.0\.0\.0\s+([^\s]+)\s/ =~ `/sbin/route -n| /bin/grep "^0.0.0.0"`) then ip = "www.yahoo.co.jp" #ip = $1 ping_str = `ping -c 3 #{ip}` if (/time=/ =~ ping_str) then return true end end false end
つぎにgetyahooの接続処理部分をコメントアウトして置き換え、systemでqcopコマンド実行させるのにbegin〜endで囲まないと上手く動作しないのは何故だろう?
if ( ($n1m =~ /true/) != nil ) | ($netop =~ /up/) then @e1.setText(QString::fromUtf8("接続確認")) if ( online? ) then if ($netop =~ /down/) then $netop = "up" end else @e1.setText(QString::fromUtf8("接続待ち")) while ( !online? ) do @e1.setText(QString::fromUtf8("接続中")) begin system("qcop QPE/Network 'connectRequest(QString,QString)'") rescue end sleep 25 end @e1.setText(QString::fromUtf8("接続完了")) end end # begin # if ( ($n1m =~ /true/) != nil ) | ( ($netop =~ /up/) )then # system("qcop QPE/Network 'connectRequest(QString,QString)'") # end # rescue # end # # # if ( ($n1m =~ /true/) != nil ) | ($netop =~ /up/) then # begin # @e1.setText(QString::fromUtf8("接続確認")) # open("http://img.yahoo.co.jp/images/clear.gif") do |f| # end # if ($netop =~ /down/) then # $netop = "up" # end # rescue # @e1.setText(QString::fromUtf8("接続待ち")) # sleep 21 # end # end