#!/usr/bin/env python # -*-*- encoding:iso-8859-15 filetype:python expandtab:yes tabstop:4 shiftwidth:4 softtabstop:4 # autoindent:yes -*-*- # # havard@dahle.no GPL (C) 2005 __doc__ = "Usage: pipe email message to this script for automatic post on your blog" BLURL = "http://www.orakel.ntnu.no/~havardda/blogg/xmlrpc.php" BLOGG = "kibbitz" USRNM = "" PSWRD = "" CTGRY = "" #default category id import sys try: import xmlrpclib import email from email.Header import decode_header from string import join except ImportError: sys.exit(100) def post(msg, categories = None): t = decode_header(msg.get("Subject")) topic = join([str(i[0]) for i in t]) contents = msg.get_payload(decode=1) rpc = xmlrpclib.ServerProxy(BLURL) publish = xmlrpclib.Boolean(1) if not categories: cats = [{'categoryId': CTGRY},] else: cats = [] for c in rpc.metaWeblog.getCategories(BLOGG, USRNM, PSWRD): if categories.count(c["categoryName"]): cats.append({'categoryId':c['categoryId']}) try: id = rpc.blogger.newPost("", # appkey BLOGG, # blogid USRNM, # username PSWRD, # password "%s\n%s" % (topic, contents), # content? publish # publish? ) rpc.mt.setPostCategories(id, #postID USRNM, #username PSWRD, #password cats ) except xmlrpclib.Fault, (msg): print msg return 100 except: return 100 return 0 if __name__ == "__main__": if sys.stdin.isatty(): print __doc__ sys.exit(100) try: msg = email.message_from_file(sys.stdin) cats = sys.argv[1:] sys.exit(post(msg, cats)) except: print "ouch could not post email on blog" sys.exit(100)