エントリィ追加時にXML-RPCで更新PINGを送信する。
必要なのは、エントリィのタイトルとPermanent Link。
import xmlrpclib
servers = ['http://blogsearch.google.co.jp/ping/RPC2',
'http://api.my.yahoo.com/RPC2',
'http://r.hatena.ne.jp/rpc',
'http://www.bloglines.com/ping',
'http://rpc.weblogs.com/RPC2'
'http://rpc.reader.livedoor.com/ping',
'http://rpc.technorati.com/rpc/ping',
'http://blog.goo.ne.jp/XMLRPC',
'http://bulkfeeds.net/rpc',
'http://ping.ask.jp/xmlrpc.m',
'http://ping.bloggers.jp/rpc/',
'http://ping.cocolog-nifty.com/xmlrpc',
'http://ping.fc2.com',
]
for s in servers:
rpcs = xmlrpclib.Server(s)
try:
resp = rpcs.weblogUpdates.ping(title, permalink)
except:
continue
エラー無視。
Twitter の「What are you doing?」を携帯電話用Webブラウザから投稿するために作ったCGI。
Basic認証のためのユーザ名とパスワード、メッセージを書いてSubmit。
#!/usr/bin/python
import cgi
import urllib2
import urllib
import xml.dom.minidom
print "Content-Type: text/html"
print
html = """
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Twitter for Mobile</title>
</head>
<body>
<h2>Twitter for Mobile</h2>
<p>%s</p>
<form action="twitter4m.cgi" method="post">
Name:<input type="text" name="user" size="10" /><br />
Password:<input type="text" name="password" size="10" /><br />
Text:<input type="text" name="linetext" size="60" />
<input type="submit" value="Submit" />
</form>
<hr />
<div style="text-align: right;">Copyright © 2007
<a href="mailto:webmaster [ at ] saekiyoshiyasu.org">SAEKI Yoshiyasu</a></div>
</body>
</html>
"""
form = cgi.FieldStorage()
result = ""
user = cgi.escape(form.getfirst("user", ""))
password = cgi.escape(form.getfirst("password", ""))
linetext = cgi.escape(form.getfirst("linetext", ""))
if user != "" and password != "" and linetext != "":
status_str = unicode(linetext).encode('utf-8')
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password('Twitter API', 'twitter.com', user, password)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
opt = urllib.urlencode({
'status': status_str,
})
res = urllib2.urlopen('http://twitter.com/statuses/update.xml', opt)
res_doc = xml.dom.minidom.parseString(res.read())
try:
result = 'You have posted "' +\
res_doc.getElementsByTagName('text').item(0).firstChild.data +\
'" on Twitter !'
except:
result = 'Error !'
print html % (result)
エラー処理適当。捻り無し。
3次元ってレベルじゃねーぞ!
とりあえず今のところロボットに社会的権利は無く、責任は所有者である人間にあるわけで、ロボットを使った事により(公共の福祉に反する)迷惑が発生したというなら、それだけで人間に罪がある。
可愛かったら許すかも。