FC2ブログ
2013
01.14

簡易アンテナ作成っと。

Category: perl
昔は、サイトの更新時刻をチェックするのに、アンテナを使っていたりしたと思うのですが、
思い立って自作してみることにしました。

モノはコレです。

hatena anntena とか使ってもいいのですが、まぁあれはあれで、ちょっと不満があるのです…。



更新時刻の取得方法には色々ありますが、一番楽チンなのは、http header の Last-Modified から取得する方法でしょう。

$ wget -S  --spider http://dam.mukya.net/anntena/
Spider mode enabled. Check if remote file exists.
--2013-01-14 03:08:01-- http://dam.mukya.net/anntena/
Resolving dam.mukya.net... 49.212.177.125
Connecting to dam.mukya.net|49.212.177.125|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Sun, 13 Jan 2013 18:08:01 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Sun, 13 Jan 2013 17:56:29 GMT
ETag: "92c029-cb68-4d32f3f7e2d40"
Accept-Ranges: bytes
Content-Length: 52072
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Length: 52072 (51K) [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.


とは言っても、spider mode でアクセスすると、403 を返してきたり、
そもそも Last-Modified を返してくれない場合もあります。

あとは、CMSを使って更新されていて、サイト内に書かれている最終更新日と、Last-Modified が大幅に違う場合もあります。

そういう場合は仕方ないので、アクセスしたファイル内に書かれている、最終更新日とおぼしき部分をパースし、適当に最終更新日として利用します。

ここの部分はまだ書いてないのですが…。

Last-Modified が取得できなくて、最終更新日が書かれてない場合は、ファイルの差分をチェックします(未実装)。
でも、面倒なんで、できればしたくないですね…。

ブログ系の場合は、また話が違ってきます。

Last-Modified を返してくれるお行儀のいい子もいますが、少数です。
そういう場合は、RSSやatomを見ます。

しかし、これもブログサービスによってかなり異なります…。
RSS version1 と version2 のデータを両方配布しているのとか、v2 のみとか、atom のみとか。

そこはまぁいいのです。

一番厄介なのは、最新更新日が明らかに超先の未来を指している場合です。

未来すぎる場合は、それを ignore して、次のエントリというかアイテムの dc:update とかを見ればいいといえばいいのですが、日付計算はめんどくさいんじゃ(#゚Д゚)ゴルァ!!

……あ、はい、そのくらいはしろって?

そうですね、頑張ります。

というわけで、こんな感じで作った|作っているよという話でした。


ダムブログやってるよーという方は、こっそりURLを教えていただければ登録しますので、よろしくお願いします。
スポンサーサイト




トラックバックURL
http://noriko3.blog42.fc2.com/tb.php/716-0cb2e9c8
トラックバック
コメント
管理者にだけ表示を許可する
 
back-to-top