投稿日
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
最近のコメント
たかたむ
はじめまして。初リアルフォース(R3ですが)で,同…
nokiyameego
ZFS poolのデバイスラベル破損で悩んていたと…
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…