| 1 |
167 |
dpavlin |
#!/usr/bin/perl -w |
| 2 |
|
|
|
| 3 |
|
|
# brayar2mt.pl |
| 4 |
|
|
# |
| 5 |
|
|
# 08/27/2006 04:25:34 PM CEST Dobrica Pavlinusic <dpavlin@rot13.org> |
| 6 |
|
|
|
| 7 |
|
|
use strict; |
| 8 |
|
|
use File::Find; |
| 9 |
|
|
use File::Slurp; |
| 10 |
|
|
use POSIX qw/strftime/; |
| 11 |
|
|
use Encode qw/from_to/; |
| 12 |
|
|
|
| 13 |
|
|
my $blog; |
| 14 |
|
|
|
| 15 |
|
|
sub time2date { |
| 16 |
|
|
my $t = shift || die "no time?"; |
| 17 |
|
|
return strftime('%m/%d/%Y %r', localtime($t)); |
| 18 |
|
|
} |
| 19 |
|
|
|
| 20 |
|
|
find({ wanted => sub { |
| 21 |
|
|
my $p = $_; |
| 22 |
|
|
|
| 23 |
|
|
$p =~ s!^\./!!; |
| 24 |
|
|
|
| 25 |
|
|
return unless ($p =~ m!^(\w+/)?(\d+)\.(txt|comments)$!); |
| 26 |
|
|
return unless (-s $p); |
| 27 |
|
|
|
| 28 |
|
|
my ($category,$nr,$type) = ($1,$2, $3); |
| 29 |
|
|
|
| 30 |
|
|
warn "## $p\n"; |
| 31 |
|
|
|
| 32 |
|
|
my $body = read_file($p) || die "can't read $p: $!"; |
| 33 |
|
|
|
| 34 |
|
|
my $title = $1 if ($body =~ s/^(.+?)[\n\r]+//s || die "can't find title in $body"); |
| 35 |
|
|
|
| 36 |
|
|
my $date = time2date( (stat($p))[9] ); # mtime |
| 37 |
|
|
|
| 38 |
|
|
$category ||= ''; |
| 39 |
|
|
$category =~ s!/!!g; |
| 40 |
|
|
|
| 41 |
|
|
warn "$category | $nr | $type | $date | $title\n"; |
| 42 |
|
|
|
| 43 |
|
|
if ($type eq 'txt') { |
| 44 |
|
|
|
| 45 |
|
|
my $post = qq{-------- |
| 46 |
|
|
AUTHOR: dpavlin |
| 47 |
|
|
TITLE: $title |
| 48 |
|
|
STATUS: Publish |
| 49 |
|
|
ALLOW COMMENTS: 1 |
| 50 |
|
|
CONVERT BREAKS: __default__ |
| 51 |
|
|
ALLOW PINGS: 1 |
| 52 |
|
|
} . ( $category ? "CATEGORY: $category\n" : '' ) . qq{ |
| 53 |
|
|
DATE: $date |
| 54 |
|
|
----- |
| 55 |
|
|
BODY: |
| 56 |
|
|
$body |
| 57 |
|
|
----- |
| 58 |
|
|
}; |
| 59 |
|
|
|
| 60 |
|
|
$blog->{$nr}->{post} = $post; |
| 61 |
|
|
} elsif ($type eq 'comments') { |
| 62 |
|
|
|
| 63 |
|
|
foreach my $c (split(/\n-----\n/, $body)) { |
| 64 |
|
|
my $comment; |
| 65 |
|
|
foreach my $l (split(/\n/, $c)) { |
| 66 |
|
|
my ($k,$v) = split(/:\s+/, $l); |
| 67 |
|
|
$comment->{$k} = $v; |
| 68 |
|
|
} |
| 69 |
|
|
|
| 70 |
|
|
$date = time2date( $comment->{epoch} ) if ($comment->{epoch}); |
| 71 |
|
|
|
| 72 |
|
|
$blog->{$nr}->{post} .= qq{COMMENT: |
| 73 |
|
|
AUTHOR: $comment->{author} |
| 74 |
|
|
URL: $comment->{url} |
| 75 |
|
|
DATE: $date |
| 76 |
|
|
$comment->{content} |
| 77 |
|
|
----- |
| 78 |
|
|
}; |
| 79 |
|
|
} |
| 80 |
|
|
|
| 81 |
|
|
} else { |
| 82 |
|
|
die "unknown type $type\n"; |
| 83 |
|
|
} |
| 84 |
|
|
|
| 85 |
|
|
}, follow => 1, no_chdir => 1}, '.'); |
| 86 |
|
|
|
| 87 |
|
|
foreach my $nr (sort { $a <=> $b } keys %$blog) { |
| 88 |
|
|
my $post = $blog->{$nr}->{post}; |
| 89 |
|
|
from_to($post, 'iso-8859-2', 'utf-8'); |
| 90 |
|
|
print "$post\n"; |
| 91 |
|
|
} |
| 92 |
|
|
print "--------\n"; |
| 93 |
|
|
|
| 94 |
|
|
|