6th March 2008

Pinging Technorati and Google with Django

This simple Django snippet demonstrates how to ping Technorati and Google when a blog post has been added or updated.

import xmlrpclib

from django.core import urlresolvers
from django.db.models import signals
from django.dispatch import dispatcher

from django.contrib.sites.models import Site

def send_pings(sender, instance):
    base_url = 'http://%s' % Site.objects.get_current().domain
    blog_url = '%s%s' % (base_url, urlresolvers.reverse('blog-index'))
    entry_url = '%s%s' % (base_url, instance.get_absolute_url())
    # Ping Technorati
    j = xmlrpclib.Server('http://rpc.technorati.com/rpc/ping')
    reply = j.weblogUpdates.ping('Jason Davies', entry_url)
    # Ping Google Blog Search
    j = xmlrpclib.Server('http://blogsearch.google.com/ping/RPC2')
    reply = j.weblogUpdates.ping('Jason Davies', blog_url, entry_url)

dispatcher.connect(send_pings, sender=Entry, signal=signals.post_save)