pythonではてぶするスクリプト

まずpythonでコマンドライン引数を受け取る方法を調べた

http://www.python.jp/doc/2.5/tut/node12.html

10.3 コマンドライン引数

広く使われているユーティリティスクリプトでは、しばしばコマンドライン 引数の処理を呼び出します。これらの引数は sys モジュールの argv 属性にリストとして記憶されます。例えば、以下の出力は、 "python demo.py one two three" をコマンドライン上で起動した際に 得られるものです:

>>> import sys
>>> print sys.argv
['demo.py', 'one', 'two', 'three']
getopt モジュールは、sys.argv を Unix の getopt() 関数の 慣習に従って処理します。より強力で柔軟性のあるコマンドライン処理機能は、 optparse モジュールで 提供されています。

おし、これで前回のmechanizeの*1とあわせてはてぶに投稿するスクリプトが作れる。

いよいよはてぶに投稿する

hatebu_post.py

# -*- coding: utf-8 -*-

import mechanize
import sys # モジュール属性 argv を取得するため

argvs = sys.argv  # コマンドライン引数を格納したリストの取得
argc = len(argvs) # 引数の個数

print argvs
print argc

[script_file, url, name, password] = argvs
entry_url = 'http://b.hatena.ne.jp/entry/' + url.replace('http://', '')
print entry_url
print name
print password

br = mechanize.Browser()
br.open('http://www.hatena.ne.jp/login')
print br.title()
br.select_form(nr=0)
br['name'] = name
br['password'] = password
res = br.submit()
print br.title()
print br.geturl()
br.open(entry_url)
print br.title()
print br.geturl()
br.select_form(nr=1)
res = br.submit()
br.follow_link(url_regex=r'add\.confirm') # 確認ページへのリンクをたどる
print br.title() # タイトルを確認
br.select_form(nr=1) # 2つめのフォームを指定する
res = br.submit() # 投稿

これで

python hatebu_post.py http://entyrurl.com your_hatena_id your_hatena_pass

こんな感じで投稿できる。

*1:http://d.hatena.ne.jp/suzuki-shin/20110205#1296882397