Under the Bridge

a Picture of the Late Him

Feed情報の無いサイトの更新日時を得るプラグイン(2)

2009年9月29日 18:42 | Writer: yoshi | 記事本文 | コメント(2) | トラックバック(0)

昨日書いた「Feed情報の無いサイトの更新日時を得るプラグイン」の別バージョン。

LWP::Simple ではなく LWP::UserAgent を使ってみるテスト。

コード

LWP::UserAgentを使用してみた。

プラグインコードは以下。昨日のと前半部分はほぼ同じ。使う場合は「urlmodifieddate.pl」などという名前をつけてプラグインディレクトリへ放り込む。

package MT::Plugin::URLModifiedDate;
use MT::Plugin;
use base qw(MT::Plugin);
use LWP::UserAgent;
our $VERSION = '0.1';


my $plugin = new MT::Plugin::URLModifiedDate({
    id => 'URLModifiedDate',
    key => 'urlmodified_date',
    name => 'URLModifiedDate',
    version => $VERSION,
    description => '<MT_TRANS phrase=\'The URL Modified Date Get\'>',
    author_name => 'apstar',
    author_link => 'http://www.mtde.info/',
});
MT->add_plugin($plugin);

sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        tags => {
            function => {
                'URLModifiedDate' => \&_hdlr_urlmodifieddate,
            },
        },
    });
    
}

sub _hdlr_urlmodifieddate {
   my ($ctx, $args) = @_;
   my $url = $args->{url};
   my $addurl = $args->{addurl};
   
   my $ua = LWP::UserAgent->new;
   $ua->timeout(10);
   $ua->agent('Mozilla');
   my $req = HTTP::Request->new('GET' => $url);
   my $res = $ua->request($req);

   if ($res->is_success) {
      my $date = $res->header('Last-Modified');
      return $date ." / ". $url;
   }else{
      my $na="N.A";
      return $na ." / ". $url;
   }
}

1;

使い方

<ul>
<li><MTURLModifiedDate url="http://www.nissan.co.jp/index.html"></li>
<li><MTURLModifiedDate url="http://www.sixapart.jp/index.xml"></li>
</ul>

MTURLModifiedDate というファンクションタグが使えるようになる。urlで更新日時を知りたいファイルを指定する。index.htmlとかいうファイル名まで含めること。フィード情報を対象にするならindex.xmlなどを指定してもいい。昨日あったaddurlは面倒なんで指定無くとも無理やり付けるようにした。テストだし

上のサンプルを実行したサンプル

  • Wed, 02 Sep 2009 07:13:10 GMT / http://www.nissan.co.jp/index.html
  • Mon, 28 Sep 2009 07:33:40 GMT / http://www.sixapart.jp/index.xml

そのほか

これGMT時間というやつ?変換は面倒なんでやってない。ページが無くて時間が取れなかった場合などはN.A.を返す。それと、yahooとgoogleは更新日時取れなかった。何でかは不明

トラックバック(0)

このブログ記事を参照しているブログ一覧: Feed情報の無いサイトの更新日時を得るプラグイン(2)

このブログ記事に対するトラックバックURL:

コメント(2)

天野 (2009年9月29日 21:18)

はじめまして。天野と申します。

ぜんぜん必須ではないのですが、mt-config.cgiにHTTPProxyを設定しなければならないような環境では、「$ua->agent('Mozilla');」の下辺りに以下のように書いておくとより幸せになれるかも
しれません。
----------------------------------------------------
if (my $proxy = MT->config('HTTPProxy')) {
$ua->proxy('http', $proxy);
if (my $no_proxy = MT->config('HTTPNoProxy')) {
my @domains = split(/\s*,\s*/, $no_proxy);
$ua->no_proxy(@domains) if @domains;
}
}
----------------------------------------------------

yoshi (2009年9月30日 00:40)

天野さん、こんばんは。
# 初めましてですが、前から天野さんのことは知ってました。

有用なアドバイスありがとうございます。
ご教示いただいた内容は、あとでよく読んでみます。

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)