laclefblog logo

Mon, 16 Apr 2007

更新PING

エントリィ追加時に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携帯電話投稿用CGI

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 &copy; 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次元ってレベルじゃねーぞ!

とりあえず今のところロボットに社会的権利は無く、責任は所有者である人間にあるわけで、ロボットを使った事により(公共の福祉に反する)迷惑が発生したというなら、それだけで人間に罪がある。

可愛かったら許すかも。