url="http://rss.weather.yahoo.co.jp/rss/days/4410.xml"
ここからRSSを取得して、
得られた
【 21日(木) 東京(東京) 】 晴後曇 - 10℃/0℃ - Yahoo!天気・災害
を正規表現で整形して
21日木曜日 東京の天気は 晴後曇 最高気温9℃最低気温0℃の予想です
に変化させてから、結月ゆかりさんに発話してもらう。
これはあくまでサンプルですが、ニュースなどもcronで定期的に発話させればいい感じになりそうです。
ニコニコ実況なんかもいいかも(高速発話で)
RSS取得と正規表現の整形を追加
あと、クリップボードからペーストする前に、いったん全選択してDELする処理を追加しました。
こうしないと前回の発話テキストが残って追加になるので。
#uselib "user32.dll" //-------------------------------------- // Win32API関数の記号定数 //-------------------------------------- #func keybd_event "keybd_event" int, int, int, int #uselib "Kernel32.dll" # func lstrcpy "lstrcpyA" sptr,sptr #cfunc GlobalAlloc "GlobalAlloc" sptr,sptr # func GlobalFree "GlobalFree" sptr #cfunc GlobalSize "GlobalSize" sptr #cfunc GlobalLock "GlobalLock" sptr # func GlobalUnlock "GlobalUnlock" sptr #uselib "User32.dll" #cfunc OpenClipboard "OpenClipboard" sptr # func CloseClipboard "CloseClipboard" # func EmptyClipboard "EmptyClipboard" #cfunc GetClipboardData "GetClipboardData" sptr # func SetClipboardData "SetClipboardData" sptr,sptr #cfunc IsClipboardFormatAvailable "IsClipboardFormatAvailable" sptr #const CF_TEXT (1) #const GHND ($0042) #const GMEM_SHARE ($2000) #const VK_DEL (8) #const VK_F5 (116) #define VK_CONTROL 0x11 #define KEYEVENTF_KEYUP 2 #include "mod_rss.as" #include "mod_regexp.as" speechVoiceroid "ヤフー天気取得中です" ; RSSリーダーサンプル ; url="http://rss.weather.yahoo.co.jp/rss/days/4410.xml" rssload desc, link, url, 6 ; if (stat=1) { errorMes "取得に失敗しました。" end } if (stat=2) { errorMes "RSSではありません。" end } speechVoiceroid "取得完了" temp = desc(2) temp = replace(temp,"【","") temp = replace(temp,"】","") temp = replace(temp,"- Yahoo!天気・災害","") temp = replace(temp,"東京(東京)","東京の天気は") temp = replace(temp,"((.+))","$1曜日") temp = replace(temp,"- ([\-0-9]+)℃","最高気温$1℃") temp = replace(temp,"/([\-0-9]+)℃","最低気温$1℃の予想です") mes desc(2) mes temp speechVoiceroid temp end #deffunc speechVoiceroid str a apiClipSave a exec "C:/Program Files (x86)/AHS/VOICEROID+/YukariEX/VOICEROID" wait 300 setShortCutKey 'A' setKey VK_DEL setShortCutKey 'V' setKey VK_F5 return 0 #deffunc setKey int a // 押す keybd_event a, 0, 0, 0 wait 10 // 離す keybd_event a, 0, 2, 0 wait 10 return 0 #deffunc setShortCutKey int a // 押す keybd_event VK_CONTROL, 0, 0, 0 keybd_event a, 0, 0, 0 wait 10 // 離す keybd_event a, 0, 2, 0 keybd_event VK_CONTROL, 0, 2, 0 wait 10 return 0 //-------------------------------------- // クリップボードにテキストを設定 //-------------------------------------- #deffunc apiClipSave str _text_,\ local hMem,\ local nSize,\ local pBuff,\ local dupStr nSize=strlen(_text_)+1 hMem=GlobalAlloc(GHND|GMEM_SHARE,nSize):if(hMem){ pBuff=GlobalLock(hMem) ;文字列型のクローン変数作成 dupptr dupStr,pBuff,nSize,2 dupStr=_text_ GlobalUnlock hMem if OpenClipboard(hWnd){ EmptyClipboard SetClipboardData CF_TEXT,hMem CloseClipboard return 1 } GlobalFree hMem } return 0 #deffunc errorMes str a speechVoiceroid a mes a return 0