ツイッターbotで天気予報ができなくなりました

このQ&Aのポイント
  • ツイッターbotで天気予報ができなくなりました。当日朝にその日のご当地(京都)一箇所の天気を出すだけのシンプルなもので十分なのですが、専門的知識が不足していて困っています。
  • ツイッターbotで天気予報ができなくなったため質問させていただきます。当方は専門的知識が不足しており、JSONや他のxmlのRSS対応天気情報についても理解が足りない状況です。
  • ツイッターbotで天気予報ができなくなりました。livedoor天気情報のWeather HacksがXMLのRSS配信を終了し、JSONに切り替わったためです。専門的知識が不足しており、他のxmlのRSS対応天気情報の天気抽出方法も理解できていません。困っています。
回答を見る
  • ベストアンサー

ツイッターbotで天気予報ができなくなりました

EasyBotterを使ってbotを運用しています。 色んな要素を盛り込んだ中で、天気予報も http://blog.livedoor.jp/fairycirno/archives/2023635.html http://blog.teruterubouzu.net/net-mac/twibot/1563 上記を参考に素人ながらなんとかやれていましたが、 この4月からlivedoor天気情報のWeather HacksがxmlのRSS配信を終了し JSONなるものに切り替え、それにともなって天気情報を取得できなくなりました。 当方としては、 当日朝にその日のご当地(京都)一箇所の天気を出すだけのシンプルなもので十分なのですが、 なにぶん専門的知識が不足しているため、 JSONもよくわからず、 また他のxmlのRSS対応天気情報も、当日の天気を抽出する方法などがイマイチ要領を得ず、困っております。 一応、botとしては色々盛り込んだ要素のひとつで、これが欠けても大勢は影響がないのですが、 なんとかできるものならと質問させてもらった次第です。 よろしくお願いします。

  • mozzz
  • お礼率75% (6/8)
  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

同じ状況で、最近botの天気予報プログラムを書き換えることになった者です。 たまたま以下のブログ記事にまとめたばかりですので、多少なりともご参考になればと思います。 (当方も素人レベルで、他サイトを参考になんとか作ったばかりですので、過剰だったり適当でなかったりする部分もあると思います。うちではこれで正常に動いていますが、あくまでご参考程度とお考えになり、ご自身に合うプログラムを構築してください)

参考URL:
http://yuryong.com/1_Frigate/log/eid192.html
mozzz
質問者

お礼

朝の分はうっかりbot.phpを更新し忘れて確認できませんでしたが(汗 改めて更新したあと、夜の分でしっかり動作、書き込みされていることが確認できました。 お礼が遅れて申し訳ありませんでした。 現在他で公開されてるケースのほとんどがリプライに応じた天気予報だったので、定刻ツイート式のこちらのケースは実に参考になりました。 ありがとうございました^^

mozzz
質問者

補足

回答有り難うございます。 4月以降Weather Hacksの仕様変更に対応したEasyBotter天気予報の記述変更の記事がぽつぽつとですが見受けられるようになり、 色々と試行錯誤していますが、jsonデータを取得しても、こちらのxmlに単純に置き換えられないような感じだったり、 またこちらもtwitterの方のjson仕様に対応するよう自動変換のphpを使ったり(仕組みはよくわかりませんが(汗))してるせいかデータのやり取りが複雑怪奇で素人にはお手上げ状態でしたが、 一旦テキストに置き換えるワンクッションは良さげですね。 さっそく諸データを上げてweather.phpに直接アクセスしてみましたらちゃんと文言が生成されてひとごこち。 明日の朝の作動を確認した上でまた改めてお礼させてもらいますね。 追伸:当日の最低気温の取得記述箇所がないのは仕様でしょうか? 当方でそのあたりを追加しましたらどうも最低気温だけは取得できない感じですね。 あいや、天気だけでも充分ですが、まぁせっかくという感じで追加できるならと^^;

その他の回答 (1)

回答No.2

つたない記事ですが、無事にお役に立ちましたら幸いです。 (ブログ宣伝みたいになってしまったとあとから気が引けましたが、記事を直接貼った方が簡単だったので。すみません) 当日の最低気温がないのはお天気ウェブサービス側の仕様と思われます。 見本データでもそこの値はnullになっていますね。

mozzz
質問者

お礼

なるほど、Weather Hacks側の仕様ということですね。 そういえばjson化に伴って、以前は京都市での天気データが呼び出せたのが、京都府南部でのカテゴライズに変わってたり、少々クセのある改変と思われます。 とまれ、おおまかにせよご当地の天気が拾えるだけでも収穫でした。 重ね重ねありがとうございました。

関連するQ&A

  • 商用利用可能な天気予報を取得する方法を教えて下さい!

    PHPを利用してWebサイトを製作中です。 天気予報と連動させるような機能を考えているのですが、肝心の天気予報の取得の方法が分かりません。 livedoorのWeather Hacksが利用できれば便利なのですが、商用利用は不可とされています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • livedoorの天気を出力したいのですが

    livedoorからjson形式で天気情報を取得し、 連想配列に格納して出力しようと考えています。 下記のエラーで困っております。 お手数ですが、ご教授いただけますと幸いです。 【livedoor天気】 http://weather.livedoor.com/weather_hacks/webservice ■環境:Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 ■weather.php <?php //livedoorからjsonで天気情報を取得 $url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=410020"; $json = file_get_contents($url,true); if ($json == false) { echo "JSONの戻り値がfalse。"; return; } $obj = json_decode($json); //取得したデータを連想配列に格納していく $weather = array( //今日の最高気温 "today_max" => $obj->forecasts[0]->temperature->max->celsius, //明後日の最低気温 "day_after_tomorrow_max_celsius" => $obj->forecasts[2]->temperature->max->celsius, //明後日の最低気温 "day_after_tomorrow_min" => $obj->forecasts[2]->temperature->min->celsius ); echo var_dump($obj); echo $weather['today_max'];//都市を変え最高気温がある場合だと19℃とか出力される echo $weather['today_max'];//最高気温がNULLだと下記エラーが出力される ?> ■weather.phpを実行時のエラー Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 19 (19行目は上記、今日の最高気温) Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 32 (32行目は上記、明後日の最高気温) Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 33 (33行目は上記、明後日の最高気温) --------------- 最高気温がnullだった場合でもエラーが出ないようにしたいです。 $obj=json_decode($json); $objは連想配列、$weatherに格納したいと考えてます。 自分で調べた結果、is_nullやemptyで回避とありましたが 解決には至りませんでした。 ■参考URL http://nanoappli.com/blog/archives/810 以上、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ライブドアお天気webサービスから取得できない

    ライブドアのお天気ウェブサービスから、以下のコードで天気データを取得しようとしていますが、 取得できません。 何が間違っているのでしょうか? クロスドメインの問題?とかいろいろ調べてみましたが、解決に至っていません。 ちなみに、実行すると、alert("アラート");も表示されないため、$.getJSONの関数自体が通っていないみたいです。 ウェブサーバーは、quicca(クイッカ)という所をレンタルし、そこにソースを置いています。 $(document).ready( function() {    var weather = ""; // 天気    var temp = ""; // 最高気温    var wetherURL = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010';    $.getJSON(wetherURL, function(json){       alert("アラート");       weather = json.value.items[0].forecasts[0].telop;       temp = json.value.items[0].forecasts[0].temperature.max.celsius;       alert(weather);    }); });

  • ホームページにニュースや天気予報を表示させたい

    自分のホームページ(ブログではありません)に、ニュースや天気予報を掲載したいと思うのですが、どのようにすれば良いのでしょうか? XMLやRSSをキーワードに検索してみましたが、ブログに掲載する方法やパソコンのデスクトップに表示する方法が主で、ホームページに掲載する詳細な情報を見つける事ができませんでした。 以前、天気予報を自分のホームページに掲載しようと思って、天気予報の表示のテストまでは行った事があるのですが、1~2年前の事なのでどのように表示させたのか忘れてしまいました。 確か、誰かが作成したプログラムを、HTMLファイルの中にそのまま書込んだような記憶があります。 ニュースはトピック形式で、天気予報は主要都市の天気を一覧で表示したいと思っています。 御教授を頂けると、嬉しく思います。 よろしく御願いします。

    • ベストアンサー
    • HTML
  • ホームページにニュースや天気予報を表示するには?

    自分のホームページ(ブログではありません)に、ニュースや天気予報を掲載したいと思うのですが、どのようにすれば良いのでしょうか? XMLやRSSをキーワードに検索してみましたが、ブログに掲載する方法やパソコンのデスクトップに表示する方法が主で、ホームページに掲載する詳細な情報を見つける事ができませんでした。 以前、天気予報を自分のホームページに掲載しようと思って、天気予報の表示のテストまでは行った事があるのですが、1~2年前の事なのでどのように表示させたのか忘れてしまいました。 確か、誰かが作成したプログラムを、HTMLファイルの中にそのまま書込んだような記憶があります。 ニュースはトピック形式で、天気予報は主要都市の天気を一覧で表示したいと思っています。 御教授を頂けると、嬉しく思います。 よろしく御願いします。

    • 締切済み
    • XML
  • PHP4でXMLを取得する方法

    XMLをPHPにて参照したいのですが、 レンタルサーバーがPHP4の為、PearのXML_Unserializerを使用しています。 通常問題なく使用できていたのですが、 http://weather.livedoor.com/forecast/rss/index.xml から取得してみようとした所、<ldWeather:lwws id="*" /> の箇所がどうしても取得出来ません。 print_rにて確認したところ、[ldWeather:lwws]となっているのですが、コロンがある場合はどのように取得したらいいのでしょうか? 以下がコードになります require_once("Unserializer.php"); $add = "http://weather.livedoor.com/forecast/rss/index.xml"; $xmldoc = join("",file($add)); $opt = array ('complexType' => 'object','parseAttributes' => 'true','attribuesArray' => '_attributes'); $xml = new XML_Unserializer($opt); $xml -> unserialize($xmldoc, false); $xml = $xml->getUnserializedData(); mb_convert_encoding($xml, "SJIS","UTF-8"); print_r($xml->channel->item[1]->ldWeather:lwws);←ここが問題箇所 PHPを始めたばかりで説明に不十分な箇所があるかも知れませんが、よろしくお願い致します。 PHPバージョン:PHP Version 4.4.6 XML取得先:Livedoor Weather Web Service 利用目的:勉強の為

    • ベストアンサー
    • PHP
  • RSSからblogデータの抽出(直接URLを入力して)

    以前、「RSSからblog(ブログ)の本文を抽出したい」の質問にて、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1677591 回答を参考に、RSSからblogのタイトル・リンク・本文を 抽出するプログラムを作成させていただきました。 ところで、このプログラムは、参考サイトの http://www.hellohiro.com/xmldom.htm HelloWorldDOMPageList.javaを参考に作成したのですが、 このプログラムでは、参考サイトのプログラム中 // パースを実行してDocumentオブジェクトを取得 Document doc = builder.parse(new File("site.xml")); // ルート要素を取得(タグ名:site) Element root = doc.getDocumentElement(); System.out.println("ルート要素のタグ名:" + root.getTagName()); … にもあるように、対象となるXML(私の場合はRSS)を保存して、 そのファイルに対してプログラムを実行しています。 今回は、RSSからblog(ブログ)のタイトル・リンク・本文を抽出する際に、 対象となるRSSを一度、site.xmlなどにXML形式で保存して、 そのファイルに対してプログラムを実行するのではなく、 プログラム中でRSSのURLを入力して、 それに対してプログラムを実行できるようにしたいです。 例えば、RSSが、http://blog.livedoor.jp/example/index.rdfだとしたら、 プログラム中でこのURLを直接入力するようにして、プログラムを実行させたいです。 そのためにはどのようにプログラムを作成すればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • RSSからblog(ブログ)の本文を抽出したい

    RSSからblogの本文を抽出するプログラムを 作りたいと思っています。 例えば、以下のようなRSSに対して (省略部分があります。) <?xml version="1.0" encoding="UTF-8" ?> - <rdf:RDF xmlns:rdf="http://~> + <channel rdf:about="http://~"> - <item rdf:about="http://blog.livedoor.jp/~"> <title>ショッピング</title> <link>http://blog.livedoor.jp/~</link> <description>今日はとてもいい天気だったので…</description> <dc:creator>shows</dc:creator> <dc:date>2005-09-24T22:00:21+09:00</dc:date> <dc:subject>ブログ</dc:subject> - <content:encoded>  - <![CDATA[   <a href="http://image.blog.livedoor~">   </a>今日はいい天気だったので、<br>   ショッピングに出かけました<br>   <br>     本文略   <br>   新しいibookが欲しいなぁ~<br>  ]]> </content:encoded> </item> (以降略) <content:encoded>のCDATAセクションの中の、 今日はいい天気だったので ~ 新しいibookが欲しいなぁ~ までがブログの本文なのでこれを抽出したいと思っています。 そこで、現在ではjavaを使ってDOMで抽出しようと試みているのですが、 こちらのサイト http://www.hellohiro.com/xmldom.htm のHelloWorldDOMPageList.javaを参考にしてプログラムを作ったのですが、 title,link,descriptionの抽出は出来ましたが、 ブログ本文が記述されている、 <content:encoded> or <![CDATA[ 内の要素(データ)を取得できません。 どのような方法(プログラム)をすれば取得できるようになるでしょうか? よろしくお願いします。

    • ベストアンサー
    • XML
  • javaを使い、jsonデータを取得したい。

    Apple iTunes Store RSSのjson形式データを、 javaを使い取得し、取得した情報を表示させたいのですが、 試行錯誤しましたが、未だ取得・表示出来ませんでした。 ・Apple iTunes Store RSS https://rss.itunes.apple.com/jp/ ソング トップ10のjsonデータ URLの末尾にxmlをjsonに入力。 https://itunes.apple.com/jp/rss/topsongs/limit=10/json また、取得の際に、gsonを使いたいと思います。 javaのソースでgsonを使い、上記itunesの情報(音楽アーティスト名、曲名、発売日、URLリンク先)を取得可能なソースを教えて頂きたいと思います。 ご教授、宜しくお願い致します。

  • アメーバブログのxmlファイルの入手方法

    アメブロのxmlファイルを見ようとして 「XML RSS1.0」あるいは「XML RSS2.0」のアイコンをクリックしてみるとブラウザーが開きブログの内容が表示されます。ただ表示レイアウトなどをカスタマイズする必要があるため、XMLファイル形式(要素名を開始タグに記述し、終了タグとの間に内容が記述されている形式)でブログの内容を取得したいのですが、方法というかURLが分かりません。よろしくお願いします。

    • ベストアンサー
    • XML

専門家に質問してみよう