#I-PADで自動投票 require 'win32ole' #****************************************************** #加入者番号 NUMBER = '' print "加入者番号 = ", NUMBER, "\n" #INET-ID INETID = '' print "INET-ID = ", INETID, "\n" #P-ARS番号 PARS = '' print "P-ARS番号 = ", PARS, "\n" #****************************************************** #定数をロードする名前空間を用意するために InternetExplorer モジュールを定義 module InternetExplorer end #Internet Explorerを起動する $ie = WIN32OLE.new("InternetExplorer.Application") $ie.visible = true #Internet Explorerの定数をロードする WIN32OLE.const_load($ie, InternetExplorer) #Internet Explorerのイベント オブジェクトを作る event = WIN32OLE_EVENT.new($ie, "DWebBrowserEvents2") #新規ウィンドウのイベントを受け取り、新規ウィンドウをキャンセルする event.on_event_with_outargs("NewWindow2") {|ppdisp, cancel, args| args[1] = true } #**メソッド定義**************************************** #ビジー ループ def ie_busy_loop(title) while ($ie.document.title == title) \ || $ie.busy \ || ($ie.ReadyState != InternetExplorer::READYSTATE_COMPLETE) WIN32OLE_EVENT.message_loop end end #コントロール取得(nameで探す) def ie_tag_item(tagname, itemname) control = nil collection = $ie.document.all.tags(tagname) collection .each { |coll| control = coll if coll["name"] == itemname } print tagname, ":", itemanem, " が見付かりません。" if control == nil return control end #コントロール取得(valueで探す) def ie_tag_item_value(tagname, itemvalue) control = nil collection = $ie.document.all.tags(tagname) collection .each { |coll| control = coll if coll["value"] == itemvalue } print tagname, ":", itemvalue, " が見付かりません。" if control == nil return control end #コントロール取得(name, valueで"INPUT"を探す) def ie_item_name_value(itemname, itemvalue) control = nil collection = $ie.document.all.tags("INPUT") collection .each { |coll| control = coll if (coll["name"] == itemname) && (coll["value"] == itemvalue) } print "INPUT:name=", itemname, ":value=" + itemvalue, " が見付かりません。" if control == nil return control end #コンボボックス 選択 def ie_select_value(control, value) collection = control.options count = 0 while count < collection.length option = collection.item(count) if option.innerText == value control.selectedIndex = count control.fireEvent("onchange") # Javascriptの関数を実行 return false end count = count + 1 end print value, "を選択できません。" return true end #****************************************************** #I-PAD投票トップページを開く #$ie.navigate("http://www.jra.go.jp/IPAT_TAIKEN/pw_010_i.html?") # テスト用 $ie.navigate("https://www.ipat.jra.go.jp/") WIN32OLE_EVENT.message_loop while $ie.busy || ($ie.ReadyState != InternetExplorer::READYSTATE_COMPLETE) #ログイン ページ if $ie.document.title != 'IPAT投票ログイン' print 'スクリプトで想定している IPAT投票ログイン ページではありません。投票の申込みを受け付けていない時間かもしれません。' exit end #別ウインドウを開かないようにする form = $ie.document.all.tags("FORM").item(0); form.target = "_self" #IPAD-ID入力欄を探す txt = ie_tag_item("INPUT", "inetid") exit if txt == nil txt.Value = INETID # ログイン ボタンを探す button = ie_tag_item_value("INPUT", 'ログインする') exit if button == nil #ログイン ボタンをクリック button.click ie_busy_loop('IPAT投票ログイン') #重要なお知らせ ページ if $ie.document.title == 'IPATお知らせ' #OK ボタンを検索する button = ie_tag_item_value("INPUT", ' O K ') exit if button == nil #OK ボタンをクリック button.click ie_busy_loop('IPATお知らせ') end #IPAT投票メインメニュー ページ if $ie.document.title != 'IPAT投票メインメニュー' print '想定している IPAT投票メインメニュー ページではありません。' exit end #投票入力 ボタンを探す button = ie_tag_item_value("INPUT", ' 投票入力 ') exit if button == nil #投票入力 ボタンをクリック button.click ie_busy_loop('IPAT投票メインメニュー') #IPAT投票入力 ページ if $ie.document.title != 'IPAT投票入力' print '想定している IPAT投票入力 ページではありません。' exit end #場名 name='JYO' #「"札幌","函館","福島","新潟","東京","中山","中京","京都","阪神","小倉"のいずれか」 #+「"(日)","(月)","(火)","(水)","(木)","(金)","(土)"のいずれか」 $jyo = ie_tag_item("SELECT", 'JYO') exit if $jyo == nil #レース name='Race' #「1〜12、全レース」 $race = ie_tag_item("SELECT", 'Race') exit if $race == nil #式別 name='Siki' #「"単勝","複勝","枠連","馬連","ワイド","馬単","3連複","3連単"」 $siki = ie_tag_item("SELECT", 'Siki') exit if $siki == nil #方式 name='Kumi' #"通常","ながし","ボックス","フォーメーション" #"通常","1着ながし","2着ながし","ボックス","フォーメーション" #"通常","軸1頭ながし","軸2頭ながし","ボックス","フォーメーション" #"通常","1着ながし","2着ながし","3着ながし","1,2着ながし","1,3着ながし","2,3着ながし","ボックス","フォーメーション" $kumi = ie_tag_item("SELECT", 'Kumi') exit if $kumi == nil #金額(100円単位) name='maisuu' $maisuu = ie_tag_item("INPUT", 'maisuu') exit if $maisuu == nil #セット name='MS' $set_button = ie_tag_item("INPUT", 'MS') exit if $set_button == nil #**投票用関数******************************* def button_click(itemvalue, itemname) return if itemname == nil button = ie_item_name_value(itemvalue, itemname) exit if button == nil button.click end # 場所, レース, 式別, 方式, 金額(100円単位), 馬番(枠番)1, 馬番(枠番)2, 馬番(枠番)3, 馬番(枠番)4 def tohyo(jyo_name, race_name, siki_name, kumi_name, maisuu_txt, uma_1, uma_2, uma_3, uma_4) # 場所 exit if ie_select_value($jyo, jyo_name) # レース exit if ie_select_value($race, race_name) # 式別 exit if ie_select_value($siki, siki_name) # 方式 if kumi_name == '通常' exit if ie_select_value($kumi, '通常       ') else exit if ie_select_value($kumi, kumi_name) end #金額(100円単位) $maisuu.value = maisuu_txt #投票選択 if (siki_name == "単勝") || (siki_name == "複勝") if kumi_name == "通常" button_click("uma", uma_1) else print "不明な方式(", kumi_name, ")\n" exit end elsif (siki_name == "枠連") || (siki_name == "馬連") || (siki_name == "ワイド") || (siki_name == "馬単") if kumi_name == "通常" if siki_name != "馬単" button_click("uma", uma_1) button_click("uma", uma_2) else #1着 button_click("uma", uma_1) #2着 button_click("umb", uma_2) end elsif kumi_name == "ながし" #馬単なし #軸 button_click("uma", uma_1) #相手 button_click("umb", uma_2) if (siki_name == "馬連") || (siki_name == "ワイド") button_click("umb", uma_3) button_click("umb", uma_4) end elsif kumi_name == "1着ながし" #馬単のみ #1着軸 button_click("uma", uma_1) #相手 button_click("umb", uma_2) button_click("umb", uma_3) button_click("umb", uma_4) elsif kumi_name == "2着ながし" #馬単のみ #2着軸 button_click("uma", uma_1) #相手 button_click("umb", uma_2) button_click("umb", uma_3) button_click("umb", uma_4) elsif kumi_name == "ボックス" button_click("uma", uma_1) button_click("uma", uma_2) button_click("uma", uma_3) button_click("uma", uma_4) elsif kumi_name == "フォーメーション" #枠1(枠連) or 馬1(馬連,ワイド) or 1着(馬単) button_click("uma", uma_1) button_click("uma", uma_2) #枠2(枠連) or 馬2(馬連,ワイド) or 2着(馬単) button_click("umb", uma_3) button_click("umb", uma_4) else print "不明な方式(", kumi_name, ")\n" exit end elsif siki_name == "3連複" if kumi_name == "通常" button_click("uma", uma_1) button_click("uma", uma_2) button_click("uma", uma_3) elsif kumi_name == "軸1頭ながし" #軸 button_click("uma", uma_1) #相手 button_click("umb", uma_2) button_click("umb", uma_3) button_click("umb", uma_4) elsif kumi_name == "軸2頭ながし" #軸 button_click("uma", uma_1) button_click("uma", uma_2) #相手 button_click("umb", uma_3) button_click("umb", uma_4) elsif kumi_name == "ボックス" button_click("uma", uma_1) button_click("uma", uma_2) button_click("uma", uma_3) button_click("uma", uma_4) elsif kumi_name == "フォーメーション" #馬1 button_click("uma", uma_1) #馬2 button_click("umb", uma_2) #馬3 button_click("umc", uma_3) button_click("umc", uma_4) else print "不明な方式(", kumi_name, ")\n" exit end elsif siki_name == "3連単" if kumi_name == "通常" #1着 button_click("uma", uma_1) #2着 button_click("umb", uma_2) #3着 button_click("umc", uma_3) elsif (kumi_name == "1着ながし") || (kumi_name == "2着ながし") || (kumi_name == "3着ながし") #1着軸 or 2着軸 or 3着軸 button_click("uma", uma_1) #相手 button_click("umb", uma_2) button_click("umb", uma_3) button_click("umb", uma_4) elsif kumi_name == "1,2着ながし" #1着 button_click("uma", uma_1) #2着 button_click("umb", uma_2) #3着 button_click("umc", uma_3) button_click("umc", uma_4) elsif kumi_name == "1,3着ながし" #1着 button_click("uma", uma_1) #2着 button_click("umb", uma_2) button_click("umb", uma_3) #3着 button_click("umc", uma_4) elsif kumi_name == "2,3着ながし" #1着 button_click("uma", uma_1) button_click("uma", uma_2) #2着 button_click("umb", uma_3) #3着 button_click("umc", uma_4) elsif kumi_name == "ボックス" button_click("uma", uma_1) button_click("uma", uma_2) button_click("uma", uma_3) button_click("uma", uma_4) elsif kumi_name == "フォーメーション" #1着 button_click("uma", uma_1) #2着 button_click("umb", uma_2) #3着 button_click("umc", uma_3) button_click("umc", uma_4) else print "不明な方式(", kumi_name, ")\n" exit end else print "不明な式別(", siki_name, ")\n" exit end # セット ボタンをクリック $set_button.click end #******************************************* #******************************************* require 'IPAD_tohyo.rb' #******************************************* #入力終了 name ='submit3' ボタンをクリックする submit_button = ie_tag_item("INPUT", 'submit3') exit if submit_button == nil submit_button.click ie_busy_loop('IPAT投票入力') #IPAT合計金額入力 ページ if $ie.document.title != 'IPAT合計金額入力' print 'スクリプトで想定している IPAT合計金額入力 ページではありません。' print $ie.document.title exit end #加入者番号 name="i" txt = ie_tag_item("INPUT", "i") txt.value = NUMBER #P-ARS番号 name="r" txt = ie_tag_item("INPUT", "r") txt.value = PARS #暗証番号(name="p")、合計金額(name="s")は手入力する #投票(value="投 票")ボタンは自分で押す