投稿日
2012/3/14 水曜日
最近xv6の記事をずっと書いてますが、「xv6ソースコードリーディング その10」みたいなタイトルの付け方をしてて、タイトルから得られる情報がほとんどないので、フォーマットを変更してみました。
現時点でその40まであって、いっこずつ管理画面で変更するのはとてもめんどくさいので、WordPressのXMLRPC機能を使ってPythonで記事を一括編集してみました。
そのとき書いたコードを公開します。
もの凄く状況に依存しているので、コードに全く汎用性がないです(しかも使い捨てなのでかなり適当に書きました)が、PythonからWordPressのXMLRPC機能を使うためのライブラリであるpython-wordpress-xmlrpcの使い方のサンプルになればと思います。
「xv6ソースコードリーディング そのn」というパターンに合致するタイトルを持つ記事に対して、タイトルを「[xv6 #n] (章番号) – (章題) – (節題、もしあれば)」という形式に変え、本文の最初に書かれている、章番号、章題、節題を消去する、という処理になります。
元のフォーマットはそれ自体がマズイとはいえ、そのフォーマットは厳密に守ってたので、コードはシンプルに済みました。
ただ、python-wordpress-xmlrpcは内部でタイムゾーンを考慮してないっぽいので、記事をなにも変更せずに更新するだけでも公開日付が変わる可能性があり(例えば9時間プラスされるとか)、注意が必要です。
#! /usr/bin/env python # -*- coding: utf8 -*- import re from wordpress_xmlrpc import Client, WordPressPost from wordpress_xmlrpc.methods.posts import GetRecentPosts, EditPost wordpress = "http://example.com/xmlrpc.php" user = "" password = "" wp = Client(wordpress, user, password) posts = wp.call(GetRecentPosts(50)) re_title = re.compile(u'xv6ソースコードリーディング その(?P<number>\d+)') re_description = re.compile(u'^(?P<basetitle>.+)\nテキストの', re.MULTILINE | re.DOTALL) for post in posts: match = re_title.match(post.title) if match: num = match.group('number') match = re_description.search(post.description) if match: basetitle = match.group('basetitle') re_editdesc = re.compile(u'%s\n' % re.escape(basetitle), re.MULTILINE) new_description = re_editdesc.sub(u'', post.description) new_title = u'[xv6 #%s] %s' % (num, ' - '.join(basetitle.split('\n'))) print 'Editing %s' % new_title post.title = new_title post.description = new_description wp.call(EditPost(post.id, post, True)) print 'Edited.' print
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…