HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0106
たこYahooの翻訳の結果を取得5解決


たこ

リンク

2008/1/6(Sun) 14:47:14|NO.13022

input かなんかに入力した内容をYahooの翻訳ページに自動で入力させて、
結果を取得するプログラムを作りたいのですが、
どのようにプログラムすればいいか分かる方教えてください。



この記事に返信する


eller

リンク

2008/1/6(Sun) 19:53:35|NO.13023

たこさん、こんにちは。

> 翻訳ページに自動で入力させて、結果を取得するプログラム
直接の回答ではありませんが、APIを利用することで同等の動作が可能です。
http://muumoo.jp/news/2007/05/09/0translationapi.html
http://muumoo.jp/news/2007/12/29/0translationapi.html



たこ

リンク

2008/1/8(Tue) 22:48:32|NO.13042

回答ありがとうございました
いろいろ試してみましたができませんでした
早くもあきらめたので解決にしておきます



a

リンク

2008/1/16(Wed) 20:42:39|NO.13101

ちょっと作ってみた。かなりの手抜き版だけどね


pos 10,10 sdim text1, 8*1024 text1 = "ここに翻訳したい文章を入力してください。" mesbox text1, 500, 200 : oi_text1 = stat cx = ginfo_cx : cy = ginfo_cy pos cx, cy : button gosub " 翻訳 ", *honyaku pos cx+100, cy : button gosub " クリア ", *clear pos cx+200, cy : combox mode,,"英→日\n日→英" pos cx, ginfo_cy sdim text2, 8*1024 mesbox text2, 500, 200 : oi_text2 = stat stop *clear objprm oi_text1, "" objprm oi_text2, "" return *honyaku if(busy) { return } busy = 1 objprm oi_text2, "翻訳中・・・" newcom HTTP, "MSXML2.XMLHTTP" if( varuse(HTTP) == 0 ) { dialog "MSXML2.XMLHTTP の初期化に失敗" : end } newcom ADOS, "ADODB.Stream" if( varuse(ADOS) == 0 ) { dialog "ADODB.Stream の初期化に失敗" : end } newcom ScriptControl, "ScriptControl" if( varuse(ScriptControl) == 0 ) { dialog "ScriptControl の初期化に失敗" : end } ScriptControl("Language") = "JScript" eid = "CR-EJ", "CR-JE" form_data = "" form_data += ScriptControl("Run","encodeURIComponent", "both") + "=" + ScriptControl("Run","encodeURIComponent", "TH") form_data += "&" form_data += ScriptControl("Run","encodeURIComponent", "text") + "=" + ScriptControl("Run","encodeURIComponent", text1) form_data += "&" form_data += ScriptControl("Run","encodeURIComponent", "clearFlg") + "=" + ScriptControl("Run","encodeURIComponent", "1") form_data += "&" form_data += ScriptControl("Run","encodeURIComponent", "eid") + "=" + ScriptControl("Run","encodeURIComponent", eid(mode)) form_data += "&" form_data += ScriptControl("Run","encodeURIComponent", "trn_textText") + "=" + ScriptControl("Run","encodeURIComponent", " ") ADOS->"Open" ADOS("Charset") = "ascii" ADOS->"WriteText" form_data ADOS("Position") = 0 ADOS("Type") = 1 pd = ADOS(".Read") ADOS->"Close" url = "http://honyaku.yahoo.co.jp/transtext" HTTP->"Open" "POST", url, 1 HTTP->"SetRequestHeader" "Content-Type", "application/x-www-form-urlencoded" HTTP->"Send" pd repeat 10 * 30 ;timeout 30秒 wait 10 if( HTTP("readyState") == 4 ) { break } loop if( HTTP("readyState") == 4 ) { s = HTTP("responseText") ;2つ目のTEXTAREAの中身抽出のつもり…手抜きだけど mark = "<textarea " s = strmid(s, instr(s, 0, mark)+strlen(mark), 0x7FFFFFFF) mark = "<textarea " s = strmid(s, instr(s, 0, mark)+strlen(mark), 0x7FFFFFFF) mark = ">" s = strmid(s, instr(s, 0, mark)+strlen(mark), 0x7FFFFFFF) mark = "</textarea>" s = strmid(s, 0, instr(s, 0, mark)) objprm oi_text2, s } else { HTTP->"Abort" objprm oi_text2, "▲タイムアウトしました" } HTTP = 0 ADOS = 0 ScriptControl = 0 busy = 0 return

Yahoo翻訳はUTF8だから、JScriptのencodeURIComponent使って手抜きしてみた。
他のエンコードだと、もう少し手間が必要になる。



たこ

リンク

2008/1/17(Thu) 23:01:54|NO.13112

あっ、ありがとうございます。
僕がしたかった動作をしました。
どう動作しているか調べて、
今作っているソフトの参考にさせていただきます



a

リンク

2008/1/18(Fri) 00:10:48|NO.13116

ScriptControlまで使ってややこしそうな事やってますが
ScriptControl("Run","encodeURIComponent", 〜〜〜)
の部分はURLでよく見かける
%8Cf%8E%A6%94%C2
みたいな文字列に変換してるだけです。(UTF8)



ADOS->"Open" ADOS("Charset") = "ascii" ADOS->"WriteText" form_data ADOS("Position") = 0 ADOS("Type") = 1 pd = ADOS(".Read") ADOS->"Close"
の部分、HSP3.1だとわざわざADODB.Stream使わなくてもいいみたい

sarrayconv pd, form_data, 2, strlen(form_data)
これで、VT_UI1のSafeArray 簡単に作れるんだ…。
ヘルプブラウザのsarrayconvの解説古いみたいだから、
HTMLのプログラミングマニュアル内の「COMコンポーネント呼び出し」を参考に。



ONION software Copyright 1997-2021(c) All rights reserved.