diff options
author | mitsugu oyama | 2010-10-25 04:29:52 +0900 |
---|---|---|
committer | mitsugu oyama | 2010-10-25 04:29:52 +0900 |
commit | c9c55dd68c82c933823e592ab0d3d9c35f3e6640 (patch) | |
tree | d8c08b97b1970d06fad88de5a9f9ff5a3dfc28a3 /jweather.js | |
parent | cde3e91c73bc0da8d9f100287c25324c42b2abae (diff) | |
download | vimperator-plugins-c9c55dd68c82c933823e592ab0d3d9c35f3e6640.tar.bz2 |
add jweather.js
日本の天気予報を表示、Yankする。
以下の一次細分区域まで対応したので公開する。
・北海道宗谷地方
・北海道上川地方
・北海道留萌地方
・千葉県北西部
・千葉県北東部
・千葉県南部
・滋賀県南部
・滋賀県北部
・京都府北部
・京都府南部
・大阪府
・奈良県北部
・奈良県南部
・和歌山県北部
・和歌山県南部
・兵庫県南部
・兵庫県北部
・沖縄県与那国島地方
Diffstat (limited to 'jweather.js')
-rw-r--r-- | jweather.js | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/jweather.js b/jweather.js new file mode 100644 index 0000000..76e4be3 --- /dev/null +++ b/jweather.js @@ -0,0 +1,168 @@ +// INFO // +var INFO = +<plugin name="jweather.js" version="0.1" + summary="jweather.js" + xmlns="http://vimperator.org/namespaces/liberator"> + <author email="mitsugu.oyama@gmail.com">Mitsugu Oyama</author> + <license href="http://opensource.org/licenses/mit-license.php">MIT</license> + <project name="Vimperator" minVersion="2.3"/> + <p>You can check Japanese Weather Report by this plugin.</p> + <item> + <tags>'jweather'</tags> + <spec>:jw<oa>eather</oa> <a>region</a></spec> + <description> + <p>You can check Japanese Weather Report by this plugin.</p> + <p>See. <link topic="http://www.weathermap.co.jp/hitokuchi_rss/">http://www.weathermap.co.jp/hitokuchi_rss/</link></p> + </description> + </item> +</plugin>; + +commands.addUserCommand( + ['jw[eather]'], + 'display japanese weather report', + function(args){ + if(1!=args.length){ + liberator.echoerr('argument error'); + return false; + } + let region={ + 'souya':'1100', + 'kamikawa':'1200', + 'rumoi':'1300', + + 'chiba_hokusei':'4510', + 'chiba_hokutou':'4520', + 'chiba_nanbu':'4530', + + 'shiga_nanbu':'6010', + 'shiga_hokubu':'6020', + 'kyoto_hokubu':'400', + 'kyoto_nanbu':'6100', + 'osaka':'6200', + 'nara_hokubu':'6410', + 'nara_nanbu':'6420', + 'wakayama_hokubu':'6510', + 'wakayama_nanbu':'6520', + 'hyogo_nanbu':'6310', + 'hyogo_hokubu':'6320', + + 'yonaguni':'9500' + }; + if(!region[args[0]]){ + liberator.echoerr('nothing region'); + return false; + } + let rssUrl="http://feedproxy.google.com/hitokuchi_"+region[args[0]]; + let rssDoc; + + let getProb=function(){ + let ret=""; + let non="--"; + let prob=rssDoc.getElementsByTagName("wm:rainfall").item(0). + getElementsByTagName("wm:prob"); + let probNo=prob.length; + if(probNo<4){ + let maxNon=4-probNo; + for(let i=0;i<maxNon;i++) ret=ret+non+"/"; + } + for(let i=0;i<probNo;i++){ + if(i!=(probNo-1)) + ret=ret+prob.item(i).childNodes.item(0).nodeValue+"/"; + else + ret=ret+prob.item(i).childNodes.item(0).nodeValue; + } + return ret; + }; + + let getTemp=function(){ + let ret; + let unit=rssDoc.getElementsByTagName("wm:temperature") + .item(0).getAttribute("unit"); + let max=rssDoc.getElementsByTagName("wm:max") + .item(0).childNodes.item(0).nodeValue; + if(max!="--") max=max+unit; + let min=rssDoc.getElementsByTagName("wm:min") + .item(0).childNodes.item(0).nodeValue; + if(min!="--") min=min+unit; + return max+"/"+min+" "; + }; + + let dispWeather=function(){ + let prefecture=rssDoc.getElementsByTagName("wm:prefecture") + .item(0).childNodes.item(0).nodeValue; + let region=rssDoc.getElementsByTagName("wm:region") + .item(0).childNodes.item(0).nodeValue; + let weather=rssDoc.getElementsByTagName("wm:weather") + .item(0).childNodes.item(0).nodeValue; + liberator.echo( + prefecture+ + "("+region+") "+ + weather+" "+ + getTemp()+" "+ + getProb() + ); + util.copyToClipboard( + prefecture+ + "("+region+") "+ + weather+" "+ + getTemp()+" "+ + getProb(), + true + ); + }; + + let getWeatherRss=function(){ + let xhr=new XMLHttpRequest(); + xhr.open("GET",rssUrl,true); + xhr.onreadystatechange=function(aEvt){ + if(xhr.readyState==4){ + if(xhr.status==200){ + rssDoc=xhr.responseXML; + dispWeather(); + }else{ + liberator.echo("RSS data recieve error!!"); + } + } + } + xhr.send(null); + }; + getWeatherRss(); + }, + { + completer: function(context,arg){ + context.title=['region']; + context.ignoreCase=true; + context.anchored=false; + let allSuggestions=[ + ["souya","\u5b97\u8c37\u5730\u65b9"], + ["kamikawa","\u4e0a\u5ddd\u5730\u65b9"], + ["rumoi","\u7559\u840c\u5730\u65b9"], + + ["chiba_hokusei","\u5343\u8449\u770c\u5317\u897f\u90e8"], + ["chiba_hokutou","\u5343\u8449\u770c\u5317\u6771\u90e8"], + ["chiba_nanbu","\u5343\u8449\u770c\u5357\u90e8"], + + ["shiga_nanbu","\u6ecb\u8cc0\u770c\u5357\u90e8"], + ["shiga_hokubu","\u6ecb\u8cc0\u770c\u5317\u90e8"], + ["kyoto_hokubu","\u4eac\u90fd\u5e9c\u5317\u90e8"], + ["kyoto_nanbu","\u4eac\u90fd\u5e9c\u5357\u90e8"], + ["osaka","\u5927\u962A"], + ["nara_hokubu","\u5948\u826f\u770c\u5317\u90e8"], + ["nara_nanbu","\u5948\u826f\u770c\u5357\u90e8"], + ["wakayama_hokubu","\u548c\u6b4c\u5c71\u770c\u5317\u90e8"], + ["wakayama_nanbu","\u548c\u6b4c\u5c71\u770c\u5357\u90e8"], + ["hyogo_nanbu","\u5175\u5eab\u770c\u5357\u90e8"], + ["hyogo_hokubu","\u5175\u5eab\u770c\u5317\u90e8"], + + ["yonaguni","\u4e0e\u90a3\u56fd\u5cf6"] + ]; + context.completions = allSuggestions; + }, + argCount: 0, + hereDoc: false, + bang: false, + count: true, + literal: true + }, + true +); |