「Yahoo!天気情報」の版間の差分

3,835 バイト追加 、 2020年5月11日 (月)
→‎sukemaru 版: 画像を追加
(→‎sukemaru 版: 画像を追加)
36行目: 36行目:


== sukemaru 版 ==
== sukemaru 版 ==
<blockquote>
<blockquote>
・気象情報がドキュメント内に書きこまれても困りますよね?<br>
・気象情報がドキュメント内に書きこまれても困りますよね?<br>
・アウトプットバーが開くとジャマじゃないですか?<br>
・アウトプットバーが開くとジャマじゃないですか?<br>
・ダイアログ表示だと警告サウンドがウルサイかもしれません…<br>
・メッセージボックスだと警告サウンドがウルサイかもしれません…<br>
→ ポップアップメニューだったら「イイ感じ」じゃん!
→ ポップアップメニューだったら「イイ感じ」じゃん!
</blockquote>
</blockquote><br clear=all>
[[ファイル:Yahoo! 天気情報.png|link=|ポップアップメニュー/ダイアログ表示]]
<br clear=all><br>
kuro 版をベースにして '''<q>ポップアップメニュー</q>、<q>アウトプットバー</q>、<q>メッセージボックス</q>''' のいずれで表示するかを選択できるようにしました。
<br>
 
==== ポップアップメニュー ====
設定項目 <code>outputEnable</code> と <code>alertEnable</code> の '''両方が <span style="color:#c00;">false</span>''' ならポップアップメニューで表示します。
* 「― Yahoo! 天気・災害 ―」の行をクリックすると、気象情報のページをブラウザで開きます。
* 「― Yahoo! 天気・災害 ―」以外の場所をクリックした場合は、ポップアップを閉じます。
* ポップアップメニューは <kbd>Space</kbd> キーでキャンセルできるようにしてあります。
 
==== アウトプット ====
設定項目 <code>outputEnable</code> が <b style="color:#0000c0;">true</b> ならアウトプットバーに表示します。
<br>
<br>
kuro 版をベースにして <q>ポップアップメニュー</q><q>アウトプットバー</q><q>ダイアログ</q> のいずれで表示するかを選択できるようにしました。<br>
 
ポップアップメニューは <kbd>Space</kbd> キーでキャンセルできるようにしてあります。<br><br>
==== メッセージボックス ====
また、ポップアップメニューの場合のみ、WEB ブラウザで気象情報のページを開くことができます。<br>
設定項目 <code>alertEnable</code> <b style="color:#0000c0;">true</b> ならメッセージボックスで表示します。
* 設定項目 <code>confirmEnable</code> <b style="color:#0000c0;">true</b> のときは確認ダイアログ、<b style="color:#c00;">false</b> のときは警告ダイアログで表示します。
* 設定項目 <code>confirmEnable</code> が <b style="color:#0000c0;">true</b> のとき、<kbd>OK</kbd> をクリックすると、気象情報のページをブラウザで開きます。
<br>
 
ピンポイント天気の URL は、「[https://weather.yahoo.co.jp/weather/ Yahoo!天気・災害]」のページ内(左上あたり)にある検索ボックスに郵便番号を入力して、開いたページで取得できます。[https://www.yahoo-help.jp/app/answers/detail/p/616/a_id/44558/~/%E5%B8%82%E5%8C%BA%E7%94%BA%E6%9D%91%E3%81%94%E3%81%A8%E3%81%AE%E5%A4%A9%E6%B0%97%E6%83%85%E5%A0%B1%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84%EF%BC%88%E3%83%94%E3%83%B3%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%A4%A9%E6%B0%97%EF%BC%89]
ピンポイント天気の URL は、「[https://weather.yahoo.co.jp/weather/ Yahoo!天気・災害]」のページ内(左上あたり)にある検索ボックスに郵便番号を入力して、開いたページで取得できます。[https://www.yahoo-help.jp/app/answers/detail/p/616/a_id/44558/~/%E5%B8%82%E5%8C%BA%E7%94%BA%E6%9D%91%E3%81%94%E3%81%A8%E3%81%AE%E5%A4%A9%E6%B0%97%E6%83%85%E5%A0%B1%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84%EF%BC%88%E3%83%94%E3%83%B3%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%A4%A9%E6%B0%97%EF%BC%89]
<br><br>
<br>
 
==== ソースコード ====
;ダウンロード >> 「[[ファイル:Yahoo!_天気情報.zip]]」(アイコン入り)
;ダウンロード >> 「[[ファイル:Yahoo!_天気情報.zip]]」(アイコン入り)
最終更新: 2020/05/11(第2版)
<source lang="javascript">
<source lang="javascript">
#title = "Yahoo! 天気情報..."
#title = "Yahoo! 天気情報..."
61行目: 83行目:
  * www:    http://www.haijin-boys.com/
  * www:    http://www.haijin-boys.com/
  * ---------------------------------------------------------
  * ---------------------------------------------------------
  * Modified by sukemaru, 2020/01/02
  * Modified by sukemaru, 2020/01/02 - 2020/05/11
* https://www.haijin-boys.com/wiki/Yahoo!天気情報#sukemaru_版
* 2020/05/11: ダイアログ表示の変更 (警告 ⇒ 確認)
*            現在日時のステータス表示を追加
  * ---------------------------------------------------------
  * ---------------------------------------------------------
*
  * 設定 outputEnable と alertEnable の両方が false ならポップアップメニューで表示。
  * 設定 outputEnable と alertEnable の両方が false ならポップアップメニューで表示。
  * ポップアップメニューの「Yahoo! 天気・災害」をクリックすると
  * ポップアップメニューの「― Yahoo! 天気・災害 ―」の行をクリックすると
  * 気象情報をブラウザで開きます。
  * 気象情報をブラウザで開きます。
  * 「Yahoo! 天気・災害」以外の場所をクリックした場合は、ポップアップを閉じます。
  * (※ confirmEnable = true  なら確認ダイアログを出してからブラウザで開く)
* 「― Yahoo! 天気・災害 ―」以外の場所をクリックした場合は、ポップアップを閉じます。
  */
  */


76行目: 103行目:
// ■ ダイアログに表示
// ■ ダイアログに表示
var alertEnable  = false;
var alertEnable  = false;
// ■ ブラウザで開くまえに確認ダイアログを表示
var confirmEnable = true;


// ■ 地域を指定 (URL)
// ■ 地域を指定 (URL)
95行目: 125行目:
// ---------- ▲ 設定項目 ▲ ----------
// ---------- ▲ 設定項目 ▲ ----------


Status = " " + DateTimeEx( new Date() );


// RSS を取得
var x = new ActiveXObject( "Microsoft.XMLDOM" );
var x = new ActiveXObject( "Microsoft.XMLDOM" );
x.async = false;
x.async = false;
104行目: 136行目:
for ( var i = 0, iLen = items.length; i < iLen; i ++ ) {
for ( var i = 0, iLen = items.length; i < iLen; i ++ ) {
   var children = items[i].childNodes;
   var children = items[i].childNodes;
   for ( var j = 0, cLen = children.length; j < cLen; j ++ ) {
   for ( var j = 0, cLen = children.length, c; j < cLen; j ++ ) {
     if ( children[j].nodeName == "title" ) {
     c = children[j];
       a.push( children[j].text );
    if ( c.nodeName == "title" ) {
       a.push( c.text );
     }
     }
     if ( ! dateTime && children[j].nodeName == "pubDate" ) {
     if ( ! dateTime && c.nodeName == "pubDate" ) {
       dateTime = DateTime( children[j].text );
       dateTime = DateTimeEx( c.text );
     }
     }
   }
   }
}
}
var reg = / - Yahoo!天気・災害$/gm;
var reg = / - Yahoo!天気・災害$/gm;
var url = weatherURL ? weatherURL : "https://weather.yahoo.co.jp/weather/";
var confirmStr = "気象情報をブラウザで開きますか? ";


// アウトプットバーで表示
// アウトプットバーで表示
if ( outputEnable ) {
if ( outputEnable ) {
   OutputBar.Writeln( dateTime + " 更新" + "\n"
   OutputBar.Writeln( dateTime + " 更新 \n"
                   + "- Yahoo!天気・災害 - \n"
                   + "- Yahoo!天気・災害 - \n"
                   + a.join( "\n" ).replace( reg, "" ) + "\n" );
                   + a.join( "\n" ).replace( reg, "" ) + "\n" );
126行目: 161行目:
if ( alertEnable ) {
if ( alertEnable ) {
   a.splice( a.length-3, 0, "" );
   a.splice( a.length-3, 0, "" );
   Alert( " - Yahoo!天気・災害 - \n " + dateTime + " 更新\n\n"
   var messageStr = " - Yahoo!天気・災害 - \n " + dateTime + " 更新 \n\n"
      + a.join( "\n" ).replace( reg, "\t" ) );
                + a.join( "\n" ).replace( /(\d+)(?=日)/g, PadSpc )
                                .replace( /【 ([^ ]{2}) 】/g, "【  $1  】" )
                                .replace( /】\s*/g, "】  " )
                                .replace( reg, " " ).replace( / (\S+)$/gm, "\t$1" );
  if ( ! confirmEnable ) {
    Alert( messageStr );
  }
  else if ( Confirm( messageStr + "\n\n" + confirmStr ) ) {
    new ActiveXObject( "WScript.Shell" ).Run( url );
  }
}
}


// ポップアップメニューで表示
// ポップアップメニューで表示
if ( ! outputEnable && ! alertEnable ) {
if ( ! outputEnable && ! alertEnable ) {
  // ■ true なら確認ダイアログを出してから開く / false なら確認なしで開く
  var confirmEnable = true;
  var confirmStr = "気象情報をブラウザで開きますか? ";
   var menuPos = 1; // ■ 1 ならマウス位置 / 0 ならキャレット位置にポップアップ
   var menuPos = 1; // ■ 1 ならマウス位置 / 0 ならキャレット位置にポップアップ
   var menu = CreatePopupMenu();
   var menu = CreatePopupMenu();
   a.splice( 1, 0, "" ); a.splice( 9, 0, "" );
   a.splice( 1, 0, "" );
  a.splice( 9, 0, "" );
   a.unshift( " ― Yahoo! 天気・災害 ― ", " " + dateTime + " 更新& ", "" );
   a.unshift( " ― Yahoo! 天気・災害 ― ", " " + dateTime + " 更新& ", "" );
   for ( var i = 0, len = a.length; i < len; i++ ) {
   for ( var i = 0, len = a.length; i < len; i++ ) {
     menu.Add( a[i].replace( reg, "" ).replace( / - /, "\t" )
     menu.Add( a[i].replace( reg, "" ).replace( /(\d+)(?=日)/, PadSpc )
                  .replace( /【 ([^ ]{2}) 】/, "【  $1  】" ).replace( /】\s*/g, "】  " )
                  .replace( reg, " " ).replace( / - (\S+)$/, "\t$1" )
                                // .replace( /】\s*/, "】  " ).replace( / - /, "\t" )
             , ( i == 0 ) ? 1 : 0
             , ( i == 0 ) ? 1 : 0
             , a[i] ? 0 : meMenuSeparator );
             , a[i] ? 0 : meMenuSeparator );
   }
   }
   var r = menu.Track( menuPos );
   if ( menu.Track( menuPos ) == 1 && ( ! confirmEnable || Confirm( confirmStr ) ) ) {
  if ( r == 1 && ( ! confirmEnable || Confirm( confirmStr ) ) ) {
    var url = weatherURL ? weatherURL : "https://weather.yahoo.co.jp/weather/";
     new ActiveXObject( "WScript.Shell" ).Run( url );
     new ActiveXObject( "WScript.Shell" ).Run( url );
   }
   }
}
}


function DateTime( dt ) {
Status = " " + DateTimeEx( new Date() );
 
 
/**
* 関数 DateTimeEx( date )
* 引数の日時を日本時間  "YYYY年M月D日 h時mm分"  の文字列で返す(秒なし)
*/
function DateTimeEx( dt ) {
   var dd = new Date( Date.parse( dt ) );
   var dd = new Date( Date.parse( dt ) );
   var m = dd.getMinutes(); mm = m < 10 ? "0" + m : m;
   var m = dd.getMinutes(), mm = m < 10 ? "0" + m : m;
   return dd.getFullYear() + "年"
   return dd.getFullYear() + "年" + ( dd.getMonth() + 1 ) + "月" + dd.getDate() + "日 "
      + ( dd.getMonth() + 1 ) + "月"
      + dd.getDate() + "日 "
       + dd.getHours() + "時" + mm + "分";
       + dd.getHours() + "時" + mm + "分";
}
/**
* 関数 DateTime( bar, utc )
* 現在日時を日本時間  "YYYY-MM-DD hh:mm:ss UTC+0900"  の文字列で返す
* 引数 bar は年月日の区切り文字 ( デフォルト: "/" )
* 引数 utc は文字列  "UTC+0900"  の表示の設定用 ( true / false )
* 引数を省略した場合は  "YYYY/MM/DD hh:mm:ss"  の文字列で返す
*/
function DateTime( bar, utc, dd ) {
  bar = bar || "/";
  dd = dd || new Date();
  var yymmdd = dd.getFullYear() + bar + ( dd.getMonth() + 1 ) + bar + dd.getDate();
  var hhmmss = utc ? dd.toTimeString()
                  : dd.toLocaleTimeString();
  return PadZero( yymmdd + " " + hhmmss );
    /**
    * 関数 PadZero( str )
    * 文字列中の半角1ケタの数字を0埋めして2ケタで返す
    * 小数点(半角ドット)以下は0埋めしない
    */
    function PadZero( str ) {
      return String( str ).replace( /[0-9]+/g , function( $0 ) {
        return $0.length < 2 ? "0" + $0 : $0;
      } );
    }
}
/**
* 関数 PadSpc( str )
* 文字列中の半角1ケタの数字を0埋めして2ケタで返す
* 小数点(半角ドット)以下は0埋めしない
*/
function PadSpc( str ) {
  return String( str ).replace( /[0-9]+/g , function( $0 ) {
    return $0.length < 2 ? " " + $0 : $0;
  } );
}
}
</source>
</source>
1,199

回編集

スポンサーリンク