PHP Tutorial

Ping your blog via XML-RPC with Perl

May 15th, 2008 at 07:29pm Under PHP+ PHP Tutorial+ Personal Tech+ Programming+ Scripts+ Technology+ Web Design+ Web Pro Business+ Web Tech+ XML Tutorial

The following Perl program connects to several update services to let them know that the your site or blog has been updated. The program uses XML-RPC to call the remote weblogUpdates.ping method of each update service with the name and URL of your site or blog as parameters. You can easily extend the list of update services that are used by the program if required so.
#!/usr/bin/perl
#
# rpcping.pl - Ping your blog with update services
#
# © Copyright, 2006 by John Bokma, http://johnbokma.com/
# License: The Artistic License
#
# Last updated: 2006-12-13 21:12:16 -0600

use strict;
use warnings;

use XMLRPC::Lite;

sub print_usage_and_exit {

print < usage: rpcping.pl "YOUR WEBLOG NAME" URL
USAGE

exit;
}

@ARGV == 2 or print_usage_and_exit;
my ( $blog_name, $blog_url ) = @ARGV;

my @services = (

# See http://codex.wordpress.org/Update_Services for
# a more comprehensive list.
'Google' => ‘http://blogsearch.google.com/ping/RPC2′,
‘Weblogs.com’ => ‘http://rpc.weblogs.com/RPC2′,
‘Feed Burner’ => ‘http://ping.feedburner.com/’,
‘Moreover’ => ‘http://api.moreover.com/RPC2′,
‘Syndic8′ => ‘http://ping.syndic8.com/xmlrpc.php’ ,
‘BlogRolling’ => ‘http://rpc.blogrolling.com/pinger/’,
‘Technorati’ => ‘http://rpc.technorati.com/rpc/ping’ ,
‘BulkFeeds’ => ‘http://bulkfeeds.net/rpc’,
‘BlogFlux’ => ‘http://pinger.blogflux.com/rpc/’,
‘Ping-o-Matic!’ => ‘http://rpc.pingomatic.com/’,
‘NewsGator’ => ‘http://services.newsgator.com/ngws/xmlrpcping.aspx’,
‘Blog People’ => ‘http://www.blogpeople.net/servlet/weblogUpdates’,
‘Howly Cow Dude’ => ‘http://www.holycowdude.com/rpc/ping/’,
‘Blog Update’ => ‘http://blogupdate.org/ping/’,
‘FeedSky’ => ‘http://www.feedsky.com/api/RPC2′,
);

while ( my ( $service_name, $rpc_endpoint ) = splice @services, 0, 2 ) {

my $xmlrpc = XMLRPC::Lite->proxy( $rpc_endpoint );
my $call;
eval {
$call = $xmlrpc->call( ‘weblogUpdates.ping’,
$blog_name, $blog_url );
};
if ( $@ ) {

chomp $@;
warn “Ping ‘$service_name’ failed: ‘$@’\n”;
next;
}

unless ( defined $call ) {

warn “Ping ‘$service_name’ failed for an unknown reason\n”;
next;
}

if ( $call->fault ) {

chomp( my $message = $call->faultstring );
warn “Ping ‘$service_name’ failed: ‘$message’\n”;
next;
}

my $result = $call->result;
if ( $result->{ flerror } ) {

warn “Ping ‘$service_name’ returned the following error: ‘”,
$result->{ message }, “‘\n”;
next;
}

print “Ping ‘$service_name’ returned: ‘$result->{ message }’\n”;
}

Examples of program usage and output:

rpcping.pl "A Perl programmer in Mexico" http://johnbokma.com/mexit/
Ping 'Weblogs.com' returned: 'Thanks for the ping.'
Ping 'Feed Burner' returned: 'Ok'
Ping 'Feedster' returned: 'Thanks for the ping.'
Ping 'Blo.gs' returned the following error: 'Weblog already updated recently.'
Ping 'Syndic8' returned: 'Thanks for pinging Syndic8'
Ping 'BlogRolling' failed: 'Minimum time between pings not reached. Go have a
martini and try again in a bit.'
Ping 'Technorati' returned: 'Thanks for the ping'
Ping 'PubSub.com' returned: 'Ping Received.'

By admin 1 comment


Free Downloads City
Free Downloads

Categories

Recent Blog Posts

Blogroll

Posts by Month