#!/usr/bin/perl
#use use strict;
use URI;
use HTTP::Date;
use NKF;
# require 'jcode.pl';
# &jcode::init();
# ($#ARGV >= 0) or die "need argument as MICAN_DI file!";
if ($#ARGV >=0) {
$FILE = shift;
}
my $RS = $/;$/="\n\n";
if ($#ARGV >= 0) {
open(MDI,$FILE);
}
else {
open(MDI, "-");
}
print "
\n";
while(){
my (%rec)=();
# my $time = 0;
my @lines=split("\n");
foreach my $line (@lines){
my ($feature, $value) = split(/:\s*/,$line,2);
my $lc_feature = lc $feature;
# print STDERR "$lc_feature $value\n";
$rec{$lc_feature} = $value;
}
next unless ( exists $rec{'url'});
my $u = URI->new($rec{'url'});
my $url = $rec{'url'};
if ( exists $rec{'last-modified'} ){
$time = HTTP::Date::str2time($rec{'last-modified'});
}else{
$time = 0;
}
my ($date,$query) = &time2dq($time);
$query = '' if ( (exists $rec{'server'}) && is_cern_like( $rec{'server'} ) );
$query .= $rec{'x-mican-fragment'} if ( exists $rec{'x-mican-fragment'} );
$url .= "?".$query if ( ( $query ) && not ( $u->query ) );
print "- ";
# for sort
print "";
# print &make_href($url , $rec{'x-mican-title'}), " ";
print $date, " : ";
if ($rec{'title'}) {
$disp_title = $rec{'title'};
}
else {
$disp_title = $rec{'url'};
}
print &make_href($url , $disp_title), " / ";
if ($rec{'author'}) {
print $rec{'author'};
}
# for Asahina-Antenna's DI
else {
print $rec{'author-name'};
}
print "\n
\n";
# Comment out by ArctanX
# $auth = ( exists $rec{'x-mican-authorized'} )
# ? $rec{'x-mican-authorized'} : '__';
# Comment out by ArctanX
# print $date," ($auth)
\n";
}
close(MDI);
$/ = $RS;
print "
\n";
exit;
###
## &make_href( $uri, $link)
## 一番目の引数をURI、二番目の引数をリンク文字列と解釈して、
## $linkをつくる。
#
sub make_href{
my $uri = shift;
my $link = shift;
my $href;
$href = "$link";
}
sub time2dq{
my $time = shift;
my $date = "";
my $query = "";
if ( $time == 0 ){
return ("____/__/__ __:__",'');
}else{
my ($min,$hour,$mday,$mon,$year)=(localtime($time))[1..5];
$mon++;
$year += 1900;
$yy = substr ($year,2);
$mon = sprintf "%02d",$mon;
$mday = sprintf "%02d",$mday;
$hour = sprintf "%02d",$hour;
$min = sprintf "%02d",$min;
return ("$year/$mon/$mday $hour:$min","$mon$mday$hour$min");
}
}
sub is_cern_like{
$_ = shift;
if ((/CERN/o)
|| (/Microsoft\-Internet\-Information\-Server/o)
# || (m%Netscape\-Comm(unications|erce)\/1\.1$%o)
|| (m%Netscape\-Enterprise\/3\.0$%o)
|| (/IBM\-ICS/o)
) {
return 1;
}else{
return 0;
}
}