「MSN ウェザー 2.0 (日本語Ver./改良版)」の表示がおかしくなったので修正してみた(爆(18/8/6)
関連記事
- 難解なソースを追っかけてるけど謎多すぎで頭痛中(汗 脳血管が吹っ飛びかけらしい 【2024年06月21日(金)】
- 【#Javascript】Web版「Excel」の新しいマクロ機能「Office スクリプト」が一般リリース 【2021年05月31日(月)】
- 【#Laravel】laravel-echo&JS&オレオレ証明書の組み合わせで動かん! 【2021年05月31日(月)】
- Google、「Chrome 91」は23%高速化 V8エンジン改善で 【2021年05月31日(月)】
- 【#JQUERY】PHPでBASE64エンコード,JavaScriptでデコードした,HTML内全角が化ける件 【2021年02月13日(土)】
【追記 18/8/7】
予報エレメント数が動的に変化して,3個のケースと2個のケースがありました
2個の場合,前回掲載の修正では,また通信エラーが発生します
再修正して下記します
まだ,そんなものを使っているのかっ!とツッコミ入りそうじゃが
「Windows gadget」じゃげな
Windows10でも動いている(謎
だって便利なんだもん!くまモン!!
数日前から,「MSN ウェザー 2.0 (日本語Ver./改良版)」が表示しなくなった
通信中...でエラー
すぐ治るかと思ったけど,治らない
んで,今日,何が起っているか解析してみた
てっきり,MSN WEATHER APIのサーバーがサービス終了したのかと思っていた
APIを叩いてみた
http://weather.service.msn.com/data.aspx?src=vista&wealocations=wc:JAXX0110&weadegreetype=C&culture=ja-JPあらまっ!XMLが返信されてくる!サーバーは生きてるわ(笑
ってなると,XMLのエレメントの仕様を変えたかねぇ...
虱潰しで追っかけてみた...
ん?”forecast”エレメント3つ?確か予報は5つ出てたよなぁ...
ガジェットの通信部@JavaScriptを眺めてみたら,やっぱり5つ固定で出力しようとしてる
これかっ!
書き換えてみた
【追記 18/8/7】
電文によって予報エレメント数が3個のケースと2個のケースがありました
再修正して掲載します
以下は自己責任でお願いしますー
修正失敗するとガジェットが固まりましたです(大汗
MSNWeather2.0rev2.Gadget¥js¥weather.js
25行目付近
var gLocale = getLocalizedString('Locale'); var g_ForecastCount = 3; //この行,追加 System.Gadget.Flyout.onShow = refreshFlyoutValues;264行目付近
if (isNeedToConvert) { if (wdata.DegreeType == "F") { wdata.Temperature = f2c(wdata.Temperature); wdata.Feelslike = f2c(wdata.Feelslike); } else { wdata.Temperature = c2f(wdata.Temperature); wdata.Feelslike = c2f(wdata.Feelslike); } } g_ForecastCount = xmlDoc.documentElement.childNodes[0].childNodes.length - 2; //この行,追加 if (g_ForecastCount > 5) //この行,追加 { //この行,追加 g_ForecastCount = 5 //この行,追加 } //この行,追加 for (var i = 1; i <= g_ForecastCount; i++) //<-ここを5からg_ForecastCountに変更 { var node = xmlDoc.documentElement.childNodes[0].childNodes[i]; var SkyCode = parseInt(node.getAttribute("skycodeday"));
1176行目付近
for (var i=0;i<g_ForecastCount;i++) // <-ここを5からg_ForecastCountに変更 { with (oWeatherGadget.oMSNWeatherService.Forecast(i)) { var theDate = parseDateFromString(Date); var theLowTemp = Low;1504行目付近
for (var i=0;i<g_ForecastCount;i++) // <-ここを5からg_ForecastCountに変更 { with (oWeatherGadget.oMSNWeatherService.Forecast(i)) { var theDate = parseDateFromString(Date); var theLowTemp = Low;表示されるようになったべ(;´Д`)ハァハァ
予報が5日分から
ま,ええやろ
腕に覚えがある方は修正してみてくださいませ♪
この記事投稿後,しばらく予報数が最初の数(5個)に戻ってましたが
昨日(18/9/19)あたりから,5個になったり4個になったりしてまする@宮崎
↑の修正で5個でも4個でも正常表示してますよー