forecastfox 日本語対応版

firefox のステータスバー等に天気予報を表示できるようになる拡張機能、forecastfox の日本語 locale 追加 + 日本語天気データ取得版です。

takanori

概要

forecastfox は天気予報を firefox のステータスバー等で表示させる拡張機能です。

インストール

下記のリンク先のファイルをダウンロードして、firefox にドラッグ & ドロップしてインストールしてください。インストール後、firefox 再起動すると拡張機能が有効になります。

使い方

forecastfox の設定画面を開いて、最初に 天気予報の地域 を設定します。すると、天気予報の情報を取得してステータスバーに表示されるようになります。

Japanized weather data

(注) なお、この日本語化バージョンでは、天気データも日本語化されています。 しかし、私が日本語でどう書くかわからなかった地名や、「Variably cloudy and a shower」のように文章で表現された天気予報は翻訳できていません。 翻訳データは追加・修正が可能ですので、diff ファイルなどをメールで(takanori [at] takanory.net)までもらえればと思います。ご協力をよろしくお願いします。

天気データの日本語化

forecastfox の動作

forecastfox では、AccuWeather.com が提供する XML 形式の天気予報データを http で取得してそのまま表示しています。

forecastfox が天気予報を取得するための URL は例えばこんな感じになります。

そのため、天気予報の中身(晴れとか雨とか、地域名とか風向きとか)は、英語でしか表示できません。 (forecastfox の FAQ によると 0.8.5 で対応する

予定のようです)

翻訳 proxy

で、それまで待てないので、というか天気が更新されてもなんかよくわかんなかったので、自力で天気予報を日本語化するようにしました。 動作原理はこんな感じです。

つまり、ダウンロードできる forecastfox 日本語対応版は、accuweather.com ではなくて、takanory.net に天気データを取りに行くようになっています。 (components/nsForecastfox.js に URL が書いてあります。)

翻訳された天気予報を取得するための URL は例えばこんな感じになります。

翻訳はどのように行っているかというと

  1. まず Apache の mod_proxy を使って accuweather.com から天気予報データを取得します。
  2. 次に、取得したデータを Apache 2.0 から追加された フィルタ 機能を使って日本語に書き換えます。

翻訳フィルタ

翻訳フィルタは python で作ってあります。 mod_python というモジュールが公開されていて、このモジュールを apache 2.0 で使えるようにすると、 PythonOutputFilter というディレクティブが使えるようになります。

この PythonOutputFilter として weather フィルタを登録して、 SetOutputFilter で mod_proxy で取得したデータに対してフィルタをかけるように設定しました。

実際の apache の設定ファイルに書いたのはこんな感じです。:

      RewriteRule ^/adcbin/(.*) http://forecastfox.accuweather.com:80/adcbin/$1 [L,P]
      PythonOutputFilter weather
      <Location /adcbin>
        SetOutputFilter weather
      </Location>

翻訳フィルタ本体のソースも、あんまりきれいじゃありませんがここにさらしておきます。