「なつみかん」の動作の基準となるディレクトリを絶対パスで入れておきます。先に「nm.ph」で指定した「$basedir」と同じです。
「remote.cfg」の設定項目
リモート情報元サイトの設定は下記のように表記されます。「,」(カンマ)区切りです。情報中の「,」(カンマ)は「\,」のようにエスケープしないと誤動作します。
REMOTE,リモート先指示記号,リモートサイト名,リモートサイトURL,ローカル保存ファイル名,リモート情報取得元ファイルURL,誤差/時差(秒)
例:
REMOTE,<A HREF="http://amano.hauN.org/">a</A>,天野アンテナ,http://amano.hauN.org/,r_amano.lirs,http://amano.hauN.org/natsumican.lirs.gz,32400,
- REMOTE(書式:固定文字列)
- 設定ファイルの中で、リモート情報元サイトのレコードであることを宣言しているヘッダーです。半角大文字で「REMOTE」と表記しないと認識されません。
- リモート先指示記号(書式:文字列(HTMLなど))
- HTMLで出力する際の「$template」(nm.phの項参照)における%remote%に置換される文字列です。「,」以外の記号やHTMLを含んでも構いません。
- リモートサイト名(書式:文字列)
- そのリモート情報元サイトの名前です。全角文字を使用しても構いません。
- リモートサイトURL(書式:URL)
- そのリモート情報元サイトのURLです。
- ローカル保存ファイル名(書式:ファイル名)
- ./tmp/下に保存されるファイル名です。LIRSの場合は解凍後のファイル名です(解凍前は.gzが自動的に後ろに付きます)。
- リモート情報取得元ファイルURL(書式:URL)
- 実際の情報の在処を示します。
- 誤差/時差(単位:秒)
- リモートサーバーのある場所のタイムゾーンを秒数で指定します。基本的にGMTからの時差で、日本ですと32400、米国ペンシルバニア州ピッツバーグですと-18000です。
ターゲットサイトの設定における誤差/時差と基本的に同じです。
「sites.lirs」の設定項目
更新時刻情報を取得するターゲットサイトの設定は下記のように表記されます。LIRS互換なので「,」(カンマ)区切りです。情報中の「,」(カンマ)は「\,」のようにエスケープしないと誤動作します。
LIRS,0,0,誤差(秒),0,RL,タイトル,管理者名,0,実際に時刻情報が取れるURL,時刻情報を参照できるキー(正規表現使用可),URL後に付ける数列の形式,その他の情報(必要に応じて),(\r)\n
例:
LIRS,0,0,32400,0,http://aniki.hauN.org/d/,隠語日記,ひや,0,,,?%MM%%DD%%HH%%TT%,はう鯖電兄軽,
- LIRS(書式:固定文字列)
- 設定ファイルの中で、更新時刻情報を取得するターゲットサイトのレコードであることを宣言しているヘッダーで、LIRSのレコードヘッダーでもあります。半角大文字で「LIRS」と表記しないと認識されません。
- 誤差/時差(単位:秒)
- 外国にあるサイトを現地の更新時間で表したいときの時差、あるいはサイトのサーバーの時間が遅れている場合の誤差の修正のために指定します。単位は秒です。
通常の日本のサイトでは「32400」が指定されます。
リモートサイトの設定における誤差/時差と基本的に同じです。
- URL(書式:URL)
- 更新時刻情報を取得するターゲットサイトのURLです。
置換指定子を入れておくと、現在時刻(GMT)から12時間差し引いた時刻を元に自動的に置換されます。
- タイトル(書式:文字列)
- 更新時刻情報を取得するターゲットサイトのタイトルです。
- 管理者名(書式:文字列)
- 更新時刻情報を取得するターゲットサイトの管理者名です。
- 実際に時刻情報が取れるURL(書式:URL)
- 「URL」で指定したファイルとは違うファイルから更新時刻情報が取得できるときに、そのファイルを指定します。
置換指定子を入れておくと、現在時刻(GMT)から12時間差し引いた時刻を元に自動的に置換されます。
ここに、「file://」で始まるURLを記入しておく(同サーバーのファイルから直接時刻を取得)と、強制的に自力取得になります。
ターゲットサイトがNIFTY-Serveの場合、「実際に時刻情報が取れるURL」に明示的に「index.(s)htm(l)」を入れないと、自力取得の際時刻情報が取れない場合があります。
- 時刻情報を参照できるキー(書式:文字列(正規表現可))
- ファイルに時刻情報が記載されているとき、このキーの直後に時刻情報が記されている、という文字列を指定します(GETリクエスト時のみ)。Perl5に基づいた正規表現も使用可能です。
例:「最終更新時刻:.*?\d\d\d\d-\d*-\d* \d*:\d*」
ただし、なつみかん内部で標準的なキーワードをサポートしているため、情報がどうしても取得できないとき以外は設定する必要はありません。
ここに何らかの値が指定されていると、自力取得の際そのサイトからはGETリクエストで情報を取得しようとします(HEADリクエストによる情報取得を行いません)
- URL後に付ける数列の形式(書式:文字列)
- URL後に付ける文字列の書式を表します。
これを指定しておくとリンク色の指定により、更新後まだ見ていないサイトの色が変わります。
置換指定子を指定すると更新時刻を元に自動的に置換されます。
- その他の情報(書式:文字列)
- その他の付加的情報を記しておきます。
他の「0」の部分は、LIRS1.0との整合性を保つためにあるものです。特に何か記載する必要はありませんが、省くと誤動作します。
基準となるHTMLに埋め込む置換指定子
「%html」で指定する、書き出す元となる基準のHTMLには、下記の指定子を埋め込むことができます。これはなつみかんがHTML出力する際に自動的に置換されます。
- 「^<!--== (文字列) ==-->(\r|\n)*$」(書式:固定文字列)
- 「<!--== (文字列) ==-->\n」とだけ記された行は全てコメントとなります。HTML出力の際には出力されません。
- 「^<!--NATSUMICAN_OUTPUT:/foo/bar/hoge.lirs-->(\r|\n)*$」(書式:固定文字列)
- <!--NATSUMICAN_OUTPUT:/foo/bar/hoge.lirs-->とだけ記された行には、全ての更新時刻データが「$template」で設定した書式に従って出力されます。
「:」よりあとの「/foo/bar/hoge.lirs」は、ベースHTMLのその部分に読み込むLIRSファイル(gz圧縮LIRSでも可)を指定します。URL指定も可能で、他サイトの他アンテナの情報をマージすることもできます。
- 「<!--NATSUMICAN_MODIFIED-->」(書式:固定文字列)
- <!--!--NATSUMICAN_MODIFIED---->と書かれた部分は、このHTMLの更新時刻(RFC822:Thu, 21 Oct 1999 19:11:42 JSTの形式:タイムゾーンは$localTimeZoneを参照して自動的に判断します)に置き換わります。ただし、nm_info.plが出力するものに比べて多少の誤差(数秒)が出る場合があります。
- 「<!--NATSUMICAN_VERSION-->」(書式:固定文字列)
- <!--!--NATSUMICAN_VERSION---->と書かれた部分は、なつみかんのバージョンに置き換わります。
- 「<!--NATSUMICAN_REMOTESERVER-->」(書式:固定文字列)
- <!--NATSUMICAN_REMOTESERVER-->と書かれた部分は、なつみかんが参照したリモート情報元サイトのリストに置き換わります。
- 「<!--#exec cmd="/home/hoge/public_html/natsu/nm_info.pl ./nm.ph"-->」(書式:文字列)
- nm_info.plを使用する場合は、このようにSSIとして指定します。SSIが使用できない環境では、nm_info.plは使用できません。
注意:「^」(行頭)「(\r|\n)」(\r(CR)か\n(LF)のどちらか)「$」(行末)「*」(前の正規表現の0回以上の繰り返し)はエスケープシーケンスや正規表現です。これら文字はHTML中に書き込まないでください。
その他、設定中でよく使われる置換指定子
下記の置換指定子は各設定項目内でよく使われます。これは「なつみかん」ライブラリ「nm_lib」の「showdate」ルーチンで標準的に提供されているものです。
- %YYYY%
- 4桁西暦
- %YY%
- 2桁西暦(0補完あり)
- %MM%
- 2桁月
- %mm%
- 2桁月(0補完無し)
- %DD%
- 2桁日
- %dd%
- 2桁日(0補完無し)
- %HH%
- 2桁時
- %hh%
- 2桁時(0補完無し)
- %TT%
- 2桁分
- %tt%
- 2桁分(0補完無し)
- %SS%
- 2桁秒
- %ss%
- 2桁秒(0補完無し)
- %WW%
- 日本語曜日(「月」「火」「水」・・・)
- %EE%
- 英語曜日(長:「Monday」「Tuesday」「Wednesday」・・・)
- %ee%
- 英語曜日(短:「Mon」「Tue」「Wed」・・・)
- %NN%
- 英語月(長:「January」「Febrary」「March」・・・)
- %nn%
- 英語月(短:「Jan」「Feb」「Mar」・・・)
- %XX%
- 1970年1月1日からの秒数(UTC)
- %UU%
- 日付で、1〜10日の初旬を0、11〜20日の中旬を1、21〜31日の下旬を2、とする
- %uu%
- 日付で、1〜10日の初旬を1、11〜20日の中旬を2、21〜31日の下旬を3、とする
- %VV%
- 日付で、1〜10日の初旬をa、11〜20日の中旬をb、21〜31日の下旬をc、とする
- %vv%
- 日付で、1〜10日の初旬をA、11〜20日の中旬をB、21〜31日の下旬をC、とする
設定の荒技
「sites.lirs」を用意しない(nm.phでも「''」に設定)でおくと、「remote.cfg」で設定されたリモート情報から得た全ての情報の中で、最新のものを選りすぐり、集約して出力します。
これを、同一サーバーの「子アンテナ」に情報を提供するだけの「親アンテナ」として機能させれば、無駄なトラフィックが防げますし、「子アンテナ=俺アンテナ」の製作も楽になります。
「remote.cfg」を用意しない(nm.phでも「''」に設定)でおくと、全ての情報を自力取得します。
他サーバーの場合はネットワークやサーバーに負荷がかかるためあまりおすすめできません(「なつみかん」は自力取得速度は遅いです)が、同一サーバーの日記の情報を取得するために「file://」を使う場合などには有効です。
ただし、「実際に時刻情報が取れるURL」に「file://」で始まるローカルディレクトリを指定すると、自動的に自力取得になりリモート情報は使いません。
「sites.lirs」にサイトのタイトルや管理者名を全く書かないと、リモート情報から抽出して自動的に補完します。また、なつみかんの出力したLIRS形式のリモート情報からは、時差情報や追加情報なども併せて得ることができます。
設定が面倒な場合、あるいはDIが得たタイトル情報などに依存したい場合などに有効です。
時差を設定することで、サーバーは日本だけど米国に在住していて更新しているサイトや、逆に日本にいて更新してるけどサーバーは米国で、更新時刻が米国の時刻でしか取れない、等の際に補整することができます。
ただし更新時刻表記内にタイムゾーン表記がない場合は情報が上手く取れないことがあります。
「sites.lirs」に他アンテナの設定ファイル(LIRS)を指定することで、そのサイトと設定ファイルを共有し、ミラーサイトを簡単に作ることができます。
このとき、「file://」で指定されている部分は無条件で消去されるので、誤動作はしないと思います。
「nm.sh」で複数の取得サイト設定分のnm_tg.plを実行させ、nm_mf.plでHTML中にそれらを埋め込むことで、カテゴリーごとに区分けされた、「朝日奈葉子のアンテナライフ」のようなHTMLを作ることができます。
このとき、設定ファイルでソートしないように設定することもできます(部分的にソートするなどは難しいですが)。
設定ファイル「nm.ph」は必ずしも一つである必要はありません。その都度使い分けるように複数用意しても構わないのです。
また、「nm.sh」の中で実行する各モジュールも、1度しか実行してはいけない、というわけではありません。
一つの更新時刻取得結果ファイル(natsumican.lirs)を分割するおまけスクリプトが「utilities」ディレクトリに入っています。ちゃちゃっと組んだものなので使い勝手は悪いかも知れませんが、これを元に改造して、自分なりにLIRSファイルを分割しカテゴリーごとに区分することもできるはずです。
更新時刻が表記されているのに取れない、という場合は、まずHTMLソースを見て(ブラウザー上の見た目では判断しないこと)、表記されている更新時刻直前の文字やタグを、「sites.lirs」の「時刻情報を参照できるキー」にセットしておきます。
それでダメな場合は、正規表現を使って更新時刻表記を表現(「\d+年\d+月\d+日\(.+?\)\s\d+:\d+:\d+」のように)し、それを「sites.lirs」の「時刻情報を参照できるキー」にセットしておきます。
それでもダメな場合は、ひや に相談して下さい(^^;
Copyright (C) 1998-2000 hiya. All Rights Reserved.
Contact : hiya@hauN.org