「goo天気」をご利用くださいまして、ありがとうございます。
誠に勝手ながら「goo天気」のサービスは2023年9月27日をもちまして、終了させて頂くことになりました。
長年にわたり「goo天気」をご愛顧いただきましたお客様に、心より感謝申し上げるとともに、ご迷惑をおかけして誠に申し訳ございません。
今後とも引き続きgooのサービスをご利用いただけますと幸いです。
情報源: goo天気の終了について – goo天気
とうとう地震のRSS配信してる所が無くなってしまう。
うーん…。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<?php header('Content-Type: text/xml;charset=UTF-8'); $html = file_get_contents('https://earthquake.tenki.jp/bousai/earthquake/entries/level-3/'); $base_url = 'https://earthquake.tenki.jp'; $now = new DateTime(); $now_rfc2822 = $now->format(DateTimeInterface::RFC822); $now_PermaLink = $now->format('A').' Asia/Tokyo+9 '.$now->format('D M y'); // RSS ヘッダ $RSS =<<< EOD <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"> <channel> <title>過去の地震情報 震度3以上(日付の新しい順) - 日本気象協会 tenki.jp</title> <link>https://earthquake.tenki.jp/bousai/earthquake/entries/level-3/</link> <language>ja</language> <lastBuildDate>${now_rfc2822}</lastBuildDate> <pubDate>${now_rfc2822}</pubDate> <guid isPermaLink="false">${now_PermaLink}</guid> EOD; # テーブルの抜き出し if(preg_match('/<table class="earthquake\-entries\-table">[\s\S]*?<\/table>/m',$html, $matches)){ $earth_quake_table = $matches[0]; }else{ $earth_quake_table = ''; } if(preg_match_all('/<tr>([\s\S]*?)<\/tr>/m',$earth_quake_table, $matches)){ $trs = $matches[1]; for($tr=1; $tr<count($trs); $tr++){ if(preg_match('/datetime"><a href="([^"]*)" class="text-link">/', $trs[$tr], $matches)){ $link = $base_url.$matches[1]; } if(preg_match('/datetime">.*class="text-link">(.*)<\/a>/', $trs[$tr], $matches)){ $datetime = $matches[1]; // 欠則時は恐らく<span class="grey">が入る if(preg_match('/<span class="grey">(.*)<\/span>/', $datetime, $matches)){ $datetime = $matches[1]; } } if(preg_match('/center">(.*)<\/td>/',$trs[$tr],$matches)){ $center = $matches[1]; // 欠則時は恐らく<span class="grey">が入る if(preg_match('/<span class="grey">(.*)<\/span>/', $center, $matches)){ $center = $matches[1]; } } if(preg_match('/magnitude">(.*)<\/td>/',$trs[$tr],$matches)){ $magnitude = $matches[1]; // 欠則時は恐らく<span class="grey">が入る if(preg_match('/<span class="grey">(.*)<\/span>/', $magnitude, $matches)){ $magnitude = $matches[1]; } } if(preg_match('/max\-level">.*alt="(.*?)"/',$trs[$tr],$matches)){ $max_level = $matches[1]; // 欠則時は恐らく<span class="grey">が入る if(preg_match('/<span class="grey">(.*)<\/span>/', $max_level, $matches)){ $max_level = $matches[1]; } } sscanf($datetime,'%d年%0d月%0d日%0d時%0d分',$y,$m,$d,$h,$i); $ocdate = new DateTime("$y-$m-$d $h:$i"); $occurrence_date = $ocdate->format(DateTimeInterface::RFC822); $RSS .=<<< EOD <item> <title>[震源地] ${center} [最大震度] 震度${max_level} ${magnitude}(${datetime}発生) - tenki.jp</title> <link>${link}</link> <description/> <pubDate>${occurrence_date}</pubDate> </item> EOD; } $RSS .=<<< EOD </channel> </rss> EOD; print $RSS; } ?> |
という事で作った 🙂
IRCのbotで、RSSを出力するものがあるのでそいつに食わせる。