M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2008年6月29日 19:50

嗚呼!印刷工! 雑記のRSS生成を直した。

このエントリーをはてなブックマークに追加 mixiチェック

以前、M.C.P.C.: 嗚呼!印刷工! 雑記のRSS作った(野良Feed) [blog.dtpwiki.jp]

で作ったFeedが、元ページのHTML構造が変わったので(●による見出しだったのがいきなりh1要素使うようになっておった……)。

ていうわけで直しました。

http://dtpwiki.jp/rss/insatsuman.xml

お使いください。

あと、以前使っていた生成コードのソースも置いておきます。

Filename: insatsuman.pl

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use utf8;
use Encode;
use XML::RSS;
 
my $html = decode('cp932', get('http://www.geocities.jp/insatsuman/notebook.htm') );
$html =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
$html =~ s|^.+<pre>||s;
$html =~ s|</pre>.+$||s;
 
my $list;
my $key;
foreach my $line (split "\n", $html) {
  if ($line =~m|<i><font size="4">●(.+)</font></i>| ){ 
    my $date = $1;
    $key = parse_date($date);
    $list->{$key}->{date} = $date;
    next;
  }
  $list->{$key}->{description} .= "$line\n" if $key;
}
 
my $rss = XML::RSS->new;
$rss->add_module(
  prefix=>'content',
  uri=>'http://purl.org/rss/1.0/modules/content/',
);
$rss->add_module(
  prefix=>'annotate',
  uri=>'http://purl.org/rss/1.0/modules/annotate/',
);
 
$rss->channel(
    title    => '嗚呼!印刷工! 雑記',
    link     => 'http://www.geocities.jp/insatsuman/notebook.htm',
    description => '嗚呼!印刷工! 雑記 最新書き込み',
    language => 'ja',
    dc => {
      publisher    => '嗚呼!印刷工!',
      contributor  => 'DTPWiki.jp',
    },
    syn => {
      updatePeriod => 'hourly',
      updateFrequency => '1',
    },
);
 
foreach my $key (reverse sort keys %$list) {
  $rss->add_item(
      link  => 'http://www.geocities.jp/insatsuman/notebook.htm#'.$key,
      title => $list->{$key}->{date},
      description => clean_html( $list->{$key}->{description} ),
      dc => {
        date       => $key,
        creator    => '三流印刷工',
      },
      content => {
        encoded => "<![CDATA[<pre>".replace_html($list->{$key}->{description})."</pre>]]>",
      },
  );
}
 
print encode('utf8', $rss->as_string() );
 
exit;
 
sub parse_date {
  #01月17日(木)
  my $date = shift;
  $date =~ s|日.+$||;
  $date =~ s|月|-|g;
  $date = "2008-".$date."T00:00:00";
  return $date;
}
 
sub clean_html {
  my $html = shift;
  $html =~ s/<.+?>//sgo;
  return $html;
}
 
sub replace_html {
  my $html = shift;
  $html =~ s| src=\"| src="http://www.geocities.jp/insatsuman/|sgo;
  return $html;
}

投稿 大野 義貴 [RSS] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2517

コメントする