今回のお題は、Google site のドキュメントを MoinMoin に移行しようZE☆
html2rest
最初のアプローチは、html2rest を使って直接変換する方法→玉砕
- ヘッダとかメニューとかフッタとか、余計なものまで変換されて鬱陶しい
- そもそもいろいろ崩れる!!
Copy&Paste
Google Site の編集モードでコピー、MoinMoin の GUI モードでペースト
→結構いける。文章部分はほぼ完璧。画像も来るけど、元のサイトへのリンクになる
画像とリンクの差し替え
該当ページのディレクトリの attachments 以下に直接画像ファイルをコピー、MoinMoin にペーストしたソースの、リンクを添付ファイルへのリンクに差し替え
差し替え用のスクリプトはこんな感じ。
import sys
import re
fp = open(sys.argv[1])
lines = fp.readlines()
fp.close()
fp = open(sys.argv[1]+'_clean', 'w')
pat = re.compile('https://.*/([^/\?].*)\?.*\}\}')
for line in lines:
line = line.rstrip()
while True:
#replace image
if not re.search('\[\[([^\]]*)\]\]', line):
break
#replace image
m = re.search('(\[\[https://[^[]*/([^/\?][^\[]*)\?[^\[]*\}\}\]\])', line)
if m != None:
print m.group(1), ' ==> ', m.group(2)
line = line.replace(m.group(1), '{{attachment:'+m.group(2)+'}}')
continue
#replace internal link
m = re.search('(\[\[(.*)\|([^\]]+)\s*]*\]\])', line)
if m != None:
if re.search('https://sites.google.com/a', m.group(2)):
#Inter Wiki
#print m.group(1), ' =|> ', m.group(3), m.group(3)
line = line.replace(m.group(1), '_SB_'+m.group(3)+'|'+m.group(3)+'_EB_')
else:
#external link
#print m.group(1), ' =|> ', m.group(2), m.group(3)
line = line.replace(m.group(1), '_SB_'+m.group(2)+'|'+m.group(3)+'_EB_')
fp.write(line.replace('_SB_', '[[').replace('_EB_', ']]')+'\n')
fp.close()
このスクリプトを通すことで、以下の処理を行う
- アタッチされた画像を参照するようにする
- InterWikiName を変換
- 外部ページへのリンクを MoinMoin 形式に変換
途中で Copy&Paste が入るので自動化は難しいものの、いずれにしても変換後のチェックはしなければいけないのでまあいいかなぁと。