#!/usr/bin/env ruby require 'qte' require 'qpe' require "timeout" require "date" require "open-uri" require "rexml/document" require 'ping' require "rbuconv" include Qte include Qpe $APPLICATION_NAME = "yahoonewsTTR" class BerryBaseWidget < QWidget def initialize(parent) super(parent) end def close() return true end def showing() end def repaintFont(font) end def getWidgetName() return "" end end class Berry < QWidget WIDGET_COUNT = 2 RSS_LIST_WIDGET_ID = 0 RSS_DESC_VIEW_WIDGET_ID = 1 def initialize() super() catchEvent() setCaption($APPLICATION_NAME) @widgetStack = QWidgetStack.new(self) @rssListWidget = BerryRSSListWidget.new(self) @rssDescViewWidget = BerryRSSDescViewWidget.new(self) @widgetStack.addWidget(@rssListWidget, RSS_LIST_WIDGET_ID) @widgetStack.addWidget(@rssDescViewWidget, RSS_DESC_VIEW_WIDGET_ID) @verticalLayout = QVBoxLayout.new(self) @verticalLayout.addWidget(@widgetStack, 1) @commMode = false @recentWidgetId = nil changeScreen(RSS_LIST_WIDGET_ID) end def changeScreen(id) @recentWidetId = @currentWidgetId @currentWidgetId = id @widgetStack.raiseWidget(@currentWidgetId) getWidget(id).showing() if getWidget(id).getWidgetName() != "" then setCaption(tr("#{$APPLICATION_NAME} - #{getWidget(id).getWidgetName()}")) else setCaption(tr("#{$APPLICATION_NAME}")) end end def getRecentWidgetId() return @recentWidgetId end def getWidget(id) if id == RSS_LIST_WIDGET_ID then return @rssListWidget end if id == RSS_DESC_VIEW_WIDGET_ID then return @rssDescViewWidget end return nil end def closeEvent(event) if (getWidget(@currentWidgetId).close()) then event.accept() end end end class BerryRSSListWidget < BerryBaseWidget def initialize(parent) super(parent) @parent = parent setCaption(QString::fromUtf8("YahoonewsTTR")) bg = QVButtonGroup.new(self) bg.setGeometry(0,0,638,150) @yhpath = "/home/samba/SD_Card/Documents/Image_Files/" @yhpathset = "/home/zaurus/Settings/" if (!FileTest.exist?(@yhpathset + "yhttr.xml")) $yhpaths = "/home/samba/SD_Card/Documents/Image_Files/" $yhpathm = "/home/zaurus/Documents/Image_Files/" $yhpathc = "/home/samba/CF_Card/Documents/Image_Files/" $kaisouchr = "." $n1m = "false" $n2m = "false" $n3m = "false" $n4m = "false" end if QPEApplication.desktop.width == 640 then $slc = true else $slc = false end @Menu = QPopupMenu.new() @ms = @Menu.insertItem(QString::fromUtf8("取得開始"), self, "getyahoo", CTRL+Key_G) @mo = @Menu.insertItem(QString::fromUtf8("お好み取得開始"), self, "getyahoo2", CTRL+Key_F) @me = @Menu.insertItem(QString::fromUtf8("取得中止"), self, "stopgetyahoo", CTRL+Key_S) @Menu.setItemEnabled(@me,false) @Menu.insertItem(QString::fromUtf8("TTexttReaderで開く"), self, "runttr", CTRL+Key_J) @Menu.insertItem(QString::fromUtf8("TTexttReaderで開く(高速)"), self, "runttrk", CTRL+Key_K) @Menu.insertItem(QString::fromUtf8("お好みリストを開く"), self, "okonomi", CTRL+Key_B) @setting1 = QPopupMenu.new() @setting1.insertItem(QString::fromUtf8("スポーツ"), self, "cateset1", CTRL+Key_Q) @setting1.insertItem(QString::fromUtf8("経済総合"), self, "cateset2", CTRL+Key_W) @setting1.insertItem(QString::fromUtf8("株式"), self, "cateset3", CTRL+Key_E) @setting1.insertItem(QString::fromUtf8("社会"), self, "cateset4", CTRL+Key_R) @setting1.insertItem(QString::fromUtf8("政治"), self, "cateset5", CTRL+Key_T) @setting1.insertItem(QString::fromUtf8("海外"), self, "cateset6", CTRL+Key_Y) @setting1.insertItem(QString::fromUtf8("市況"), self, "cateset7", CTRL+Key_U) @setting1.insertItem(QString::fromUtf8("産業"), self, "cateset8", CTRL+Key_I) @setting1.insertItem(QString::fromUtf8("エンターテーメント"), self, "cateset9", CTRL+Key_O) @setting1.insertItem(QString::fromUtf8("コンピュータ"), self, "cateset10", CTRL+Key_P) @setting1.insertItem(QString::fromUtf8("アクセスランキング 総合"), self, "catesetr1", CTRL+Key_1) @setting1.insertItem(QString::fromUtf8("アクセスランキング スポーツ"), self, "catesetr2", CTRL+Key_2) @setting1.insertItem(QString::fromUtf8("アクセスランキング 経済総合"), self, "catesetr3", CTRL+Key_3) @setting1.insertItem(QString::fromUtf8("アクセスランキング 国内"), self, "catesetr4", CTRL+Key_4) @setting1.insertItem(QString::fromUtf8("アクセスランキング 海外"), self, "catesetr5", CTRL+Key_5) @setting1.insertItem(QString::fromUtf8("アクセスランキング エンターテーメント"), self, "catesetr6", CTRL+Key_6) @setting1.insertItem(QString::fromUtf8("アクセスランキング コンピュータ"), self, "catesetr7", CTRL+Key_7) @setting1.insertItem(QString::fromUtf8("個別記事"), self, "cateset11", CTRL+Key_L) @setting1.insertItem(QString::fromUtf8("日付指定"), self, "cateset0", CTRL+Key_A) @setting2 = QPopupMenu.new() @setting2.insertItem(QString::fromUtf8("新規保存"), self, "onradio1", CTRL+Key_N) @setting2.insertItem(QString::fromUtf8("上書き保存"), self, "onradio2", CTRL+Key_M) @md = @setting2.insertItem(QString::fromUtf8("各種設定"), self, "savedirectory", CTRL+Key_D) @menuBar = QPEMenuBar.new(self) @menuBar.insertItem(tr("Menu"), @Menu) @menuBar.insertItem(QString::fromUtf8("カテゴリー"), @setting1) @menuBar.insertItem(QString::fromUtf8("設定"), @setting2) bg.setTitle(QString::fromUtf8("Yahoo!ニュース 取得カテゴリ設定")) @l6 = QLabel.new(QString::fromUtf8("各カテゴリの取得記事数(1-100)"),self) @l1 = QLineEdit.new("25",self) @r1 = QRadioButton.new(QString::fromUtf8("新規"),self) @r2 = QRadioButton.new(QString::fromUtf8("上書き"),self) @r1.setChecked(true) @m1 = QComboBox.new(self) @m1.insertItem("SD") @m1.insertItem(QString::fromUtf8("本体")) @m1.insertItem("CF") @tw = QTabWidget.new(self) @tw.setGeometry(10,55,310,255) @w0 = QWidget.new(self) @w1 = QWidget.new(self) @tw.addTab(@w0,QString::fromUtf8("カテゴリ")) @tw.addTab(@w1,QString::fromUtf8("アクセスランキング")) @c1 = QCheckBox.new(QString::fromUtf8("Q.スポーツ"),@w0) @c2 = QCheckBox.new(QString::fromUtf8("W.経済総合"),@w0) @c3 = QCheckBox.new(QString::fromUtf8("E.株式"),@w0) @c4 = QCheckBox.new(QString::fromUtf8("R.社会"),@w0) @c5 = QCheckBox.new(QString::fromUtf8("T.政治"),@w0) @c6 = QCheckBox.new(QString::fromUtf8("Y.海外"),@w0) @c7 = QCheckBox.new(QString::fromUtf8("U.市況"),@w0) @c8 = QCheckBox.new(QString::fromUtf8("I.産業"),@w0) @c9 = QCheckBox.new(QString::fromUtf8("O.エンターテーメント"),@w0) @c10 = QCheckBox.new(QString::fromUtf8("P.コンピュータ"),@w0) @cr1 = QCheckBox.new(QString::fromUtf8("1.総合"),@w1) @cr2 = QCheckBox.new(QString::fromUtf8("2.スポーツ"),@w1) @cr3 = QCheckBox.new(QString::fromUtf8("3.経済総合"),@w1) @cr4 = QCheckBox.new(QString::fromUtf8("4.国内"),@w1) @cr5 = QCheckBox.new(QString::fromUtf8("5.海外"),@w1) @cr6 = QCheckBox.new(QString::fromUtf8("6.エンターテーメント"),@w1) @cr7 = QCheckBox.new(QString::fromUtf8("7.コンピュータ"),@w1) @c11 = QCheckBox.new(QString::fromUtf8("L.個別設定"),self) @e2 = QMultiLineEdit.new(self) @c0 = QCheckBox.new(QString::fromUtf8("A.日付指定"),self) day = Date.today @date = day.to_s.sub(/-/,"").sub(/-/,"") @l0 = QLineEdit.new(@date,self) @m = QPushButton.new(QString::fromUtf8("取得開始( Ctrl + G )"),self) @m4 = QPushButton.new(QString::fromUtf8("お好み取得開始( Ctrl + F )"),self) @m3 = QPushButton.new(QString::fromUtf8("取得中止( Ctrl + S )"),self) @m3.setEnabled(false) @m2 = QPushButton.new(QString::fromUtf8("TTexttReaderで開く"),self) @l2 = QLabel.new(QString::fromUtf8("status"),self) @e1 = QLineEdit.new("",self) @e1.setReadOnly(true) if $slc then bg.setGeometry(0,30,639,465) @l6.setGeometry(330,50,200,30) @l1.setGeometry(510,50,30,30) @r1.setGeometry(330,90,120,30) @r2.setGeometry(405,90,120,30) @m1.setGeometry(555,50,70,30) @c1.setGeometry(10,15,130,30) @c2.setGeometry(10,55,130,30) @c3.setGeometry(10,95,130,30) @c4.setGeometry(10,135,130,30) @c5.setGeometry(10,175,130,30) @c6.setGeometry(150,15,130,30) @c7.setGeometry(150,55,130,30) @c8.setGeometry(150,95,130,30) @c9.setGeometry(150,135,170,30) @c10.setGeometry(150,175,170,30) @cr1.setGeometry(10,15,130,30) @cr2.setGeometry(10,55,130,30) @cr3.setGeometry(10,95,130,30) @cr4.setGeometry(10,135,130,30) @cr5.setGeometry(10,175,130,30) @cr6.setGeometry(150,15,170,30) @cr7.setGeometry(150,55,170,30) @c11.setGeometry(330,123,130,30) @e2.setGeometry(330,155,290,120) @l0.setGeometry(470,280,80,30) @c0.setGeometry(330,280,130,30) @m.setGeometry(10,315,200,40) @m4.setGeometry(220,315,200,40) @m3.setGeometry(430,315,200,40) @m2.setGeometry(495,90,130,30) @l2.setGeometry(10,365,300,30) @e1.setGeometry(75,365,555,30) else @l6 = QLabel.new(QString::fromUtf8("取得記事数(1-100)"),self) @m = QPushButton.new(QString::fromUtf8("取得開始( Ctrl+G )"),self) @m4 = QPushButton.new(QString::fromUtf8("お好み取得開始( Ctrl+F )"),self) @m3 = QPushButton.new(QString::fromUtf8("取得中止( Ctrl+S )"),self) bg.setGeometry(0,30,475,590) @l6.setGeometry(325,55,100,30) @l1.setGeometry(430,55,30,30) @r1.setGeometry(325,95,100,30) @r2.setGeometry(385,95,70,30) @m1.setGeometry(325,135,70,30) @c1.setGeometry(10,15,130,30) @c2.setGeometry(10,55,130,30) @c3.setGeometry(10,95,130,30) @c4.setGeometry(10,135,130,30) @c5.setGeometry(10,175,130,30) @c6.setGeometry(150,15,130,30) @c7.setGeometry(150,55,130,30) @c8.setGeometry(150,95,130,30) @c9.setGeometry(150,135,170,30) @c10.setGeometry(150,175,170,30) @cr1.setGeometry(10,15,130,30) @cr2.setGeometry(10,55,130,30) @cr3.setGeometry(10,95,130,30) @cr4.setGeometry(10,135,130,30) @cr5.setGeometry(10,175,130,30) @cr6.setGeometry(150,15,170,30) @cr7.setGeometry(150,55,170,30) @c11.setGeometry(10,313,130,30) @e2.setGeometry(10,353,460,100) @l0.setGeometry(250,313,80,30) @c0.setGeometry(150,313,130,30) @m.setGeometry(10,460,150,40) @m4.setGeometry(165,460,150,40) @m3.setGeometry(320,460,150,40) @m2.setGeometry(325,175,130,30) @l2.setGeometry(10,500,300,20) @e1.setGeometry(10,525,460,30) end load(@yhpathset + "yhttr.xml") @yh_proxy = "" #"http://proxy.toshiba.co.jp:8080/" # URI.parse("http://proxy.toshiba.co.jp:8080/") #@kaisouchr = "." connect(@m,QSIGNAL("clicked()"), self, 'getyahoo') connect(@m4,QSIGNAL("clicked()"), self, 'getyahoo2') connect(@m3,QSIGNAL("clicked()"), self, 'stopgetyahoo') connect(@m2,QSIGNAL("clicked()"), self, 'runttr') connect(@r1,QSIGNAL("clicked()"), self, 'offradio1') connect(@r2,QSIGNAL("clicked()"), self, 'offradio2') $option = ARGV[0] $netop = ARGV[1] if ( $option =~ /run/ ) then getyahoo end end def pathset case @m1.currentItem.to_i when 0 if ($n3m =~ /true/) then if @r1.isChecked then @yhpath = $yhpaths + @date + "/" else @yhpath = $yhpaths + @sdate + "/" end else @yhpath = $yhpaths end when 1 if ($n3m =~ /true/) then if @r1.isChecked then @yhpath = $yhpathm + @date + "/" else @yhpath = $yhpathm + @sdate + "/" end else @yhpath = $yhpathm end when 2 if ($n3m =~ /true/) then if @r1.isChecked then @yhpath = $yhpathc + @date + "/" else @yhpath = $yhpathc + @sdate + "/" end else @yhpath = $yhpathc end end end def pathset2 case @m1.currentItem.to_i when 0 if ($n3m =~ /true/) then if @r1.isChecked then @yhpath2 = $yhpaths + @date + "/" else @yhpath2 = $yhpaths + @sdate + "/" end else @yhpath2 = $yhpaths end when 1 if ($n3m =~ /true/) then if @r1.isChecked then @yhpath2 = $yhpathm + @date + "/" else @yhpath2 = $yhpathm + @sdate + "/" end else @yhpath2 = $yhpathm end when 2 if ($n3m =~ /true/) then if @r1.isChecked then @yhpath2 = $yhpathc + @date + "/" else @yhpath2 = $yhpathc + @sdate + "/" end else @yhpath2 = $yhpathc end end end def runttr pathset2 begin system("qcop QPE/Application/TTextReader 'openEuc(QString)' " + @yhpath2 + "yahoo_news.html") rescue @e1.setText(QString::fromUtf8("TTexttReader open error")) end end def runttrk pathset2 begin system("qcop QPE/System 'execute(QString,QString)' TTextReader " + @yhpath2 + "yahoo_news.html") rescue @e1.setText(QString::fromUtf8("TTexttReader open error")) end end def offradio1 @r2.setChecked(false) end def offradio2 @r1.setChecked(false) end def onradio1 @r1.setChecked(true) @r2.setChecked(false) end def onradio2 @r1.setChecked(false) @r2.setChecked(true) end def cateset1 if @c1.isChecked then @c1.setChecked(false) else @c1.setChecked(true) end end def cateset2 if @c2.isChecked then @c2.setChecked(false) else @c2.setChecked(true) end end def cateset3 if @c3.isChecked then @c3.setChecked(false) else @c3.setChecked(true) end end def cateset4 if @c4.isChecked then @c4.setChecked(false) else @c4.setChecked(true) end end def cateset5 if @c5.isChecked then @c5.setChecked(false) else @c5.setChecked(true) end end def cateset6 if @c6.isChecked then @c6.setChecked(false) else @c6.setChecked(true) end end def cateset7 if @c7.isChecked then @c7.setChecked(false) else @c7.setChecked(true) end end def cateset8 if @c8.isChecked then @c8.setChecked(false) else @c8.setChecked(true) end end def cateset9 if @c9.isChecked then @c9.setChecked(false) else @c9.setChecked(true) end end def cateset10 if @c10.isChecked then @c10.setChecked(false) else @c10.setChecked(true) end end def catesetr1 if @cr1.isChecked then @cr1.setChecked(false) else @cr1.setChecked(true) end end def catesetr2 if @cr2.isChecked then @cr2.setChecked(false) else @cr2.setChecked(true) end end def catesetr3 if @cr3.isChecked then @cr3.setChecked(false) else @cr3.setChecked(true) end end def catesetr4 if @cr4.isChecked then @cr4.setChecked(false) else @cr4.setChecked(true) end end def catesetr5 if @cr5.isChecked then @cr5.setChecked(false) else @cr5.setChecked(true) end end def catesetr6 if @cr6.isChecked then @cr6.setChecked(false) else @cr6.setChecked(true) end end def catesetr7 if @cr7.isChecked then @cr7.setChecked(false) else @cr7.setChecked(true) end end def cateset11 if @c11.isChecked then @c11.setChecked(false) else @c11.setChecked(true) end end def cateset0 if @c0.isChecked then @c0.setChecked(false) else @c0.setChecked(true) end end def stopgetyahoo if @t != nil then @t.kill() begin if (FileTest.exist?(@categ + ".dat")) then yahoodat(@categ) #File.delete(@categ + ".dat") end rescue end @e1.setText(QString::fromUtf8("取得中止 -> output yahoo_news.html")) @Menu.setItemEnabled(@ms,true) @Menu.setItemEnabled(@mo,true) @Menu.setItemEnabled(@me,false) @setting2.setItemEnabled(@md,true) @m.setEnabled(true) @m4.setEnabled(true) @m3.setEnabled(false) $netop = "" $option = "" begin if (FileTest.exist?(@categ + ".txt")) File.delete(@categ + ".txt") end if (FileTest.exist?("weather.txt")) File.delete("weather.txt") end rescue end GC.start end end def savedirectory dlg = SaveDirectoryDialog.new(self) res = dlg.exec() end def getlistwindow @e1.setText(QString::fromUtf8("Please Wait")) $checker = true @okflag3 = false @parent.getWidget(Berry::RSS_DESC_VIEW_WIDGET_ID).screenInit() @parent.changeScreen(Berry::RSS_DESC_VIEW_WIDGET_ID) while $checker end @categ = "list" begin count = 0 totalcount = $urllist.size if (totalcount > 0) fp2 = File.open("list.dat","w") fp2.puts(" ") $urllist.each do |line| count = count + 1 @e1.setText(QString::fromUtf8("お好み記事取得中 " + count.to_s + "\/" + totalcount.to_s)) begin timeout(60) { open(line) do |f| f.each_line() do |linehtml| fp2.puts(linehtml) end end } rescue rescue TimeoutError end end fp2.close $urllist = [] @catename = ["a4aab9a5a4df"].pack("H*") yahoodat('list') end rescue @okflag3 = true end end def getsetting @Menu.setItemEnabled(@ms,false) @Menu.setItemEnabled(@mo,false) @Menu.setItemEnabled(@me,true) @setting2.setItemEnabled(@md,false) @m.setEnabled(false) @m4.setEnabled(false) @m3.setEnabled(true) @okflag = true @okflag2 = true @newsmaxc = @l1.text.to_str @newsmax = @newsmaxc.to_i pathset save(@yhpathset + "yhttr.xml") if ( ($n1m =~ /true/) != nil ) | ($netop =~ /up/) then @e1.setText(QString::fromUtf8("接続確認")) if (Ping.pingecho('www.yahoo.co.jp',5,"80")) then if ($netop =~ /down/) then $netop = "up" end else @e1.setText(QString::fromUtf8("接続待ち")) begin system("qcop QPE/Network 'connectRequest(QString,QString)'") rescue end sleep 10 while ( !(Ping.pingecho('www.yahoo.co.jp',5,"80")) ) do @e1.setText(QString::fromUtf8("接続中")) sleep 1.5 @e1.setText(QString::fromUtf8("接続中 .")) sleep 1.5 @e1.setText(QString::fromUtf8("接続中 ..")) sleep 1.5 @e1.setText(QString::fromUtf8("接続中 ...")) sleep 1.5 @e1.setText(QString::fromUtf8("接続中 ....")) sleep 1.5 @e1.setText(QString::fromUtf8("接続中 .....")) end @e1.setText(QString::fromUtf8("接続完了")) end end if (!FileTest.exist?(@yhpath)) Dir.mkdir(@yhpath) end begin if @r1.isChecked then fp = File.open(@yhpath + "yahoo_news.html","w") day = Time.now yhdate = $kaisouchr + "Yahoo!news " + day.year.to_s + "-" + day.month.to_s + "-" + day.day.to_s + " " + day.hour.to_s + ":" + day.min.to_s fp.puts(yhdate) fp.close if ($n4m =~ /true/) then @e1.setText(QString::fromUtf8("画像削除中")) begin Dir::open(@yhpath) {|d| d.each {|f| if ( f =~ /jpg/ ) then if (FileTest.exist?(@yhpath + f)) File.delete(@yhpath + f) end end } } rescue end end else fp = File.open(@yhpath + "yahoo_news.html","a") day = Time.now yhdate = $kaisouchr + "Yahoo!news " + day.year.to_s + "-" + day.month.to_s + "-" + day.day.to_s + " " + day.hour.to_s + ":" + day.min.to_s fp.puts(yhdate) fp.close end rescue @e1.setText(QString::fromUtf8("保存先エラー")) return end end def okonomi begin @t = Thread.start do Thread.pass getsetting getlistwindow begin if @okflag3 then @e1.setText(QString::fromUtf8("")) elsif !@okflag then @e1.setText(QString::fromUtf8("network error! 取得失敗したカテゴリーがあります。 -> output yahoo_news.html")) elsif !@okflag2 then @e1.setText(QString::fromUtf8("network error! 取得失敗したカテゴリーがあります。 -> output yahoo_news.html")) else @e1.setText(QString::fromUtf8("取得完了 -> output yahoo_news.html complete!")) end rescue end @Menu.setItemEnabled(@ms,true) @Menu.setItemEnabled(@mo,true) @Menu.setItemEnabled(@me,false) @setting2.setItemEnabled(@md,true) @m.setEnabled(true) @m4.setEnabled(true) @m3.setEnabled(false) begin if (($n2m =~ /true/) != nil ) | ($netop =~ /down/) then system("qcop QPE/Network 'stop()'") end rescue end GC.start if ( $option =~ /run/ ) then close() end end rescue return end end def getyahoo2 begin @t = Thread.start do Thread.pass getsetting tempurl = "" tempcate = "" tempcate2= "" @okflag = true @okflag2 = true fp2 = File.open("list_c.txt","w") fp2.close dayold = @l0.text.to_str if @c1.isChecked then @e1.setText(QString::fromUtf8("スポーツ記事一覧取得開始")) seturl('spo',dayold) getyahoourl2(@cateurl,'spo','off') end if @c2.isChecked then @e1.setText(QString::fromUtf8("経済総合記事一覧取得開始")) seturl('bus_all',dayold) getyahoourl2(@cateurl,'bus_all','off') end if @c3.isChecked then @e1.setText(QString::fromUtf8("株式記事一覧取得開始")) seturl('biz',dayold) getyahoourl2(@cateurl,'biz','off') end if @c4.isChecked then @e1.setText(QString::fromUtf8("社会記事一覧取得開始")) seturl('soci',dayold) getyahoourl2(@cateurl,'soci','off') end if @c5.isChecked then @e1.setText(QString::fromUtf8("政治記事一覧取得開始")) seturl('pol',dayold) getyahoourl2(@cateurl,'pol','off') end if @c6.isChecked then @e1.setText(QString::fromUtf8("海外記事一覧取得開始")) seturl('int',dayold) getyahoourl2(@cateurl,'int','off') end if @c7.isChecked then @e1.setText(QString::fromUtf8("市況記事一覧取得開始")) seturl('brf',dayold) getyahoourl2(@cateurl,'brf','off') end if @c8.isChecked then @e1.setText(QString::fromUtf8("産業記事一覧取得開始")) seturl('ind',dayold) getyahoourl2(@cateurl,'ind','off') end if @c9.isChecked then @e1.setText(QString::fromUtf8("エンターテーメント記事一覧取得開始")) seturl('ent',dayold) getyahoourl2(@cateurl,'ent','off') end if @c10.isChecked then @e1.setText(QString::fromUtf8("コンピュータ記事一覧取得開始")) seturl('sci',dayold) getyahoourl2(@cateurl,'sci','off') end if @cr1.isChecked then @e1.setText(QString::fromUtf8("総合記事(ランキング)一覧取得開始")) seturlran('all',dayold) @catename = ["c1edb9e728a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end if @cr2.isChecked then @e1.setText(QString::fromUtf8("スポーツ記事(ランキング)一覧取得開始")) seturlran('spo',dayold) @catename = ["a5b9a5dda1bca5c428a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end if @cr3.isChecked then @e1.setText(QString::fromUtf8("経済総合記事(ランキング)一覧取得開始")) seturlran('bus',dayold) @catename = ["b7d0bad1c1edb9e728a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end if @cr4.isChecked then @e1.setText(QString::fromUtf8("国内記事(ランキング)一覧取得開始")) seturlran('dom',dayold) @catename = ["b9f1c6e228a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end if @cr5.isChecked then @e1.setText(QString::fromUtf8("海外記事(ランキング)一覧取得開始")) seturlran('int',dayold) @catename = ["b3a4b3b028a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end if @cr6.isChecked then @e1.setText(QString::fromUtf8("エンターテーメント記事(ランキング)一覧取得開始")) seturlran('ent',dayold) @catename = ["a5a8a5f3a5bfa1bca5c6a1bca5e1a5f3a5c828a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end if @cr7.isChecked then @e1.setText(QString::fromUtf8("コンピュータ記事(ランキング)一覧取得開始")) seturlran('sci',dayold) @catename = ["a5b3a5f3a5d4a5e5a1bca5bf28a5e9a5f3a5ada5f3a5b029"].pack("H*") getyahoourl2(@cateurl,@catename,'off') end #getlistwindow if @c11.isChecked then @e2.text.to_str.each do |line| if ( line =~ /^\#/ ) != nil then else if ( line =~ /^\/fc/ ) != nil then tempurl = "http://dailynews.yahoo.co.jp" + line tempcate = line tempcate2 = tempcate.split('/') @kobetu = tempcate2[3] @e1.setText(QString::fromUtf8("個別設定記事(" + @kobetu + ")一覧取得開始")) getyahoourl2(tempurl,@kobetu,'on') end if ( line =~ /^\/cate/ ) != nil then tempcate = line tempcate2 = tempcate.split('/') @kobetu = tempcate2[2] @e1.setText(QString::fromUtf8("その他カテゴリ記事(" + @kobetu + ")一覧取得開始")) seturl(@kobetu,dayold) getyahoourl2(@cateurl,@kobetu,'off') end end end end getlistwindow if @c11.isChecked then @e2.text.to_str.each do |line| if ( line =~ /^\#/ ) != nil then else if ( line =~ /^\/weather/ ) != nil then lineurl = line.split(',') @tempurl = "http://weather.yahoo.co.jp" + lineurl[0] getweather(@tempurl) tempcate = lineurl[0] tempcate2 = tempcate.split('/') if lineurl[1] != nil then if lineurl[1] =~ /off/ then else if lineurl[1].to_i <= 6 then @tempurl = "http://weather.yahoo.co.jp/weather/raincloud/" + tempcate2[3] + "/index.html" + "?c=" + lineurl[1] else @tempurl = "http://weather.yahoo.co.jp/weather/raincloud/" + tempcate2[3] + "/index.html" + "?c=6" end getweather2(@tempurl) end else @tempurl = "http://weather.yahoo.co.jp/weather/raincloud/" + tempcate2[3] + "/index.html" getweather2(@tempurl) end end end end end if (@okflag3 && !@c11.isChecked) then @e1.setText(QString::fromUtf8("")) elsif !@okflag then @e1.setText(QString::fromUtf8("network error! 取得失敗したカテゴリーがあります。 -> output yahoo_news.html")) elsif !@okflag2 then @e1.setText(QString::fromUtf8("network error! 取得失敗したカテゴリーがあります。 -> output yahoo_news.html")) else @e1.setText(QString::fromUtf8("取得完了 -> output yahoo_news.html complete!")) end @Menu.setItemEnabled(@ms,true) @Menu.setItemEnabled(@mo,true) @Menu.setItemEnabled(@me,false) @setting2.setItemEnabled(@md,true) @m.setEnabled(true) @m4.setEnabled(true) @m3.setEnabled(false) begin if (($n2m =~ /true/) != nil ) | ($netop =~ /down/) then system("qcop QPE/Network 'stop()'") end rescue end GC.start if ( $option =~ /run/ ) then close() end end rescue return end end def getyahoo begin @t = Thread.start do Thread.pass getsetting tempurl = "" tempcate = "" tempcate2= "" dayold = @l0.text.to_str if @c1.isChecked then @e1.setText(QString::fromUtf8("スポーツ記事一覧取得開始")) seturl('spo',dayold) getyahoourl(@cateurl,'spo','off') yahoodat('spo') end if @c2.isChecked then @e1.setText(QString::fromUtf8("経済総合記事一覧取得開始")) seturl('bus_all',dayold) getyahoourl(@cateurl,'bus_all','off') yahoodat('bus_all') end if @c3.isChecked then @e1.setText(QString::fromUtf8("株式記事一覧取得開始")) seturl('biz',dayold) getyahoourl(@cateurl,'biz','off') yahoodat('biz') end if @c4.isChecked then @e1.setText(QString::fromUtf8("社会記事一覧取得開始")) seturl('soci',dayold) getyahoourl(@cateurl,'soci','off') yahoodat('soci') end if @c5.isChecked then @e1.setText(QString::fromUtf8("政治記事一覧取得開始")) seturl('pol',dayold) getyahoourl(@cateurl,'pol','off') yahoodat('pol') end if @c6.isChecked then @e1.setText(QString::fromUtf8("海外記事一覧取得開始")) seturl('int',dayold) getyahoourl(@cateurl,'int','off') yahoodat('int') end if @c7.isChecked then @e1.setText(QString::fromUtf8("市況記事一覧取得開始")) seturl('brf',dayold) getyahoourl(@cateurl,'brf','off') yahoodat('brf') end if @c8.isChecked then @e1.setText(QString::fromUtf8("産業記事一覧取得開始")) seturl('ind',dayold) getyahoourl(@cateurl,'ind','off') yahoodat('ind') end if @c9.isChecked then @e1.setText(QString::fromUtf8("エンターテーメント記事一覧取得開始")) seturl('ent',dayold) getyahoourl(@cateurl,'ent','off') yahoodat('ent') end if @c10.isChecked then @e1.setText(QString::fromUtf8("コンピュータ記事一覧取得開始")) seturl('sci',dayold) getyahoourl(@cateurl,'sci','off') yahoodat('sci') end if @cr1.isChecked then @e1.setText(QString::fromUtf8("総合記事(ランキング)一覧取得開始")) seturlran('all',dayold) getyahoourl(@cateurl,'rall','off') @catename = ["c1edb9e728a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rall') end if @cr2.isChecked then @e1.setText(QString::fromUtf8("スポーツ記事(ランキング)一覧取得開始")) seturlran('spo',dayold) getyahoourl(@cateurl,'rspo','off') @catename = ["a5b9a5dda1bca5c428a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rspo') end if @cr3.isChecked then @e1.setText(QString::fromUtf8("経済総合記事(ランキング)一覧取得開始")) seturlran('bus',dayold) getyahoourl(@cateurl,'rbus','off') @catename = ["b7d0bad1c1edb9e728a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rbus') end if @cr4.isChecked then @e1.setText(QString::fromUtf8("国内記事(ランキング)一覧取得開始")) seturlran('dom',dayold) getyahoourl(@cateurl,'rdom','off') @catename = ["b9f1c6e228a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rdom') end if @cr5.isChecked then @e1.setText(QString::fromUtf8("海外記事(ランキング)一覧取得開始")) seturlran('int',dayold) getyahoourl(@cateurl,'rint','off') @catename = ["b3a4b3b028a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rint') end if @cr6.isChecked then @e1.setText(QString::fromUtf8("エンターテーメント記事(ランキング)一覧取得開始")) seturlran('ent',dayold) getyahoourl(@cateurl,'rent','off') @catename = ["a5a8a5f3a5bfa1bca5c6a1bca5e1a5f3a5c828a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rent') end if @cr7.isChecked then @e1.setText(QString::fromUtf8("コンピュータ記事(ランキング)一覧取得開始")) seturlran('sci',dayold) getyahoourl(@cateurl,'rsci','off') @catename = ["a5b3a5f3a5d4a5e5a1bca5bf28a5e9a5f3a5ada5f3a5b029"].pack("H*") yahoodat('rsci') end if @c11.isChecked then @e2.text.to_str.each do |line| if ( line =~ /^\#/ ) != nil then else if ( line =~ /^\/fc/ ) != nil then tempurl = "http://dailynews.yahoo.co.jp" + line tempcate = line tempcate2 = tempcate.split('/') @kobetu = tempcate2[3] @e1.setText(QString::fromUtf8("個別設定記事(" + @kobetu + ")一覧取得開始")) getyahoourl(tempurl,@kobetu,'on') yahoodat(@kobetu) end if ( line =~ /^\/weather/ ) != nil then lineurl = line.split(',') @tempurl = "http://weather.yahoo.co.jp" + lineurl[0] getweather(@tempurl) tempcate = lineurl[0] tempcate2 = tempcate.split('/') if lineurl[1] != nil then if lineurl[1] =~ /off/ then else if lineurl[1].to_i <= 6 then @tempurl = "http://weather.yahoo.co.jp/weather/raincloud/" + tempcate2[3] + "/index.html" + "?c=" + lineurl[1] else @tempurl = "http://weather.yahoo.co.jp/weather/raincloud/" + tempcate2[3] + "/index.html" + "?c=6" end getweather2(@tempurl) end else @tempurl = "http://weather.yahoo.co.jp/weather/raincloud/" + tempcate2[3] + "/index.html" getweather2(@tempurl) end end if ( line =~ /^\/cate/ ) != nil then tempcate = line tempcate2 = tempcate.split('/') @kobetu = tempcate2[2] @e1.setText(QString::fromUtf8("その他カテゴリ記事(" + @kobetu + ")一覧取得開始")) seturl(@kobetu,dayold) getyahoourl(@cateurl,@kobetu,'off') yahoodat(@kobetu) end end end end if !@okflag then @e1.setText(QString::fromUtf8("network error! 取得失敗したカテゴリーがあります。 -> output yahoo_news.html")) elsif !@okflag2 then @e1.setText(QString::fromUtf8("network error! 取得失敗したカテゴリーがあります。 -> output yahoo_news.html")) else @e1.setText(QString::fromUtf8("取得完了 -> output yahoo_news.html complete!")) end @Menu.setItemEnabled(@ms,true) @Menu.setItemEnabled(@mo,true) @Menu.setItemEnabled(@me,false) @setting2.setItemEnabled(@md,true) @m.setEnabled(true) @m4.setEnabled(true) @m3.setEnabled(false) begin if (($n2m =~ /true/) != nil ) | ($netop =~ /down/) then system("qcop QPE/Network 'stop()'") end rescue end GC.start if ( $option =~ /run/ ) then close() end end rescue return end end def seturl(setcate,setday) if @c0.isChecked then @cateurl = "http://headlines.yahoo.co.jp/hl?c=" + setcate + "&t=l&d=" + setday else @cateurl = "http://headlines.yahoo.co.jp/hl?c=" + setcate + "&t=l" end end def seturlran(setcate,setday) @cateurl = "http://headlines.yahoo.co.jp/accr?ty=t&c=" + setcate end def getyahoourl2(yahoourl, cate, yhoption) @newsmaxc = @l1.text.to_str @newsmax = @newsmaxc.to_i @categ = "list" begin fp1 = File.open("list_c.txt","a") fp1.puts("option yahoonewsTTR " + yhoption) fp1.puts("yahoonewsTTR " + cate) begin timeout(60) { open(yahoourl) do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end if ( yhoption =~ /off/ ) != nil then if ( cate =~ /^r/ ) != nil then if ( @newsmax > 20 ) then @newsmax = 20 end end if ( @newsmax > 25 ) then begin timeout(60) { open(yahoourl + "&p=1") do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end end if ( @newsmax > 50 ) then begin timeout(60) { open(yahoourl + "&p=2") do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end end if ( @newsmax > 75 ) then begin timeout(60) { open(yahoourl + "&p=3") do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end end end if ( yhoption =~ /on/ ) != nil then if ( @newsmax > 25 ) then @newsmax = 25 end end #@okflag = true fp1.close rescue @okflag = false return end show() end def getyahoourl(yahoourl, cate, yhoption) @newsmaxc = @l1.text.to_str @newsmax = @newsmaxc.to_i @categ = cate begin fp1 = File.open(cate + ".txt","w") begin timeout(60) { open(yahoourl) do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end if ( yhoption =~ /off/ ) != nil then if ( cate =~ /^r/ ) != nil then if ( @newsmax > 20 ) then @newsmax = 20 end end if ( @newsmax > 25 ) then begin timeout(60) { open(yahoourl + "&p=1") do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end end if ( @newsmax > 50 ) then begin timeout(60) { open(yahoourl + "&p=2") do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end end if ( @newsmax > 75 ) then begin timeout(60) { open(yahoourl + "&p=3") do |f| f.each_line() do |line| fp1.puts(line) end end } rescue TimeoutError end end end if ( yhoption =~ /on/ ) != nil then if ( @newsmax > 25 ) then @newsmax = 25 end end #@okflag = true fp1.close rescue @okflag = false return end show() templine = [] yhurl = "" buf = "" ulMode = false status = "" titleMode = false @catename = "" catemp = "" fp1 = File.open(cate + ".txt","r") fp1.each do |line| if (line =~ /
")
tempstr = tempstr.gsub(/ .*<\/p><\/div>/, "") tempstr = tempstr.gsub(/ /, " ")
tempstr = tempstr.gsub(/alt=\"Photo\" Vspace=\"2\" hspace=\"2\"> /, "alt=\"Photo\" Vspace=\"2\" hspace=\"2\"><\/td> ") # tempstr = tempstr.gsub(/<\/p><\/td>/, "<\/font><\/p><\/td>") # sedline = line.sub(/http:\/\/ca.c.yimg.*images\/........\/[a-z]*\//,".\/") sedline = tempstr.sub(/http:\/\/ca.c.yimg.*images\/........\/[a-z]*\//,".\/") sedline2 = sedline.sub(/http:\/\/ca.c.yimg.*images\/........\/[a-z]*_[a-z]*\//,".\/") templine.push sedline2.sub(/\.jpg /,"\.jpg") else tempstr = line.gsub(/^ |