Make WordPress Core

Ticket #5084: blogpost

File blogpost, 1.2 KB (added by bglickstein, 17 years ago)

Procmail-callable interface that publishes mail to your blog

Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use MIME::Parser;
7use Net::Blogger::Engine::Base;
8
9my $parser = new MIME::Parser();
10$parser->output_to_core(1);
11$parser->decode_headers(1);
12
13my $top = $parser->parse(\*STDIN);
14
15my $type = $top->effective_type();
16die "Cannot handle top-level type \"$type\"\n"
17    unless ($type eq 'text/plain');
18
19my $header = $top->head();
20my $io = $top->open('r')
21    or die "Cannot read message body\n";
22my $body = '';
23my $any_trailing_spaces;
24while (defined($_ = $io->getline())) {
25  if (/\S/ && ($body =~ / \r?\n\Z/)) {
26    chomp($body);
27    $any_trailing_spaces = 1;
28  }
29  $body .= $_;
30}
31$io->close();
32
33if (!$any_trailing_spaces) {
34  $body =~ s/([^\s\r\n])\r?\n([^\s\r\n*-])/$1 $2/g;
35}
36
37$body =~ s/\A[\r\n]+//;
38$body =~ s/[\r\n]+\Z//;
39
40my $blogger = new Net::Blogger::Engine::Base({blogid => 1,
41                                              username => 'xxx',
42                                              password => 'xxx'});
43$blogger->Proxy('http://your.blog/xmlrpc.php');
44
45my $postbody = join('',
46                    '<title>',
47                    $header->get('subject'),
48                    '</title>',
49                    $body);
50
51$blogger->newPost({postbody => \$postbody,
52                   publish => 1});