bloggerからはてなに記事を移行
bloggerからエクスポートした記事のxmlを、はてな記法に変換するスクリプトです。
参考:Conveyorを使ってBloggerからはてなダイアリーへ移行する
#encoding:shift-jis from __future__ import division, print_function __metaclass__ = type import sys import re from itertools import islice import codecs import feedparser import dateutil.parser def main(): rss = feedparser.parse("blog-05-29-2010.xml") sources = [ '<?xml version="1.0" encoding="UTF-8"?>', "<diary>" ] append = sources.append extend = sources.extend entries = rss.entries #冒頭のtemplateや末尾のcommentを省くために、適当に調整 for i, entry in islice(enumerate(entries), 49, 196): extend([ '<day date="{0}" title="">'.format( dateutil.parser.parse(entry["date"]).strftime("%Y-%m-%d")), '<body>', '*' + entry.title, entry.content[0].value, "</body>", "</day>", ]) append("</diary>\n") source_str = "\n".join(sources) source_str = re.sub(r"(<|<)\s*br\s*/?(>|>)", "\n", source_str) source_str = re.sub(r"<pre.*?>", "\n>|python|\n", source_str) source_str = re.sub(r"</pre>", "\n||<\n", source_str) source_str = re.sub(r"(<|<)blockquote(>|>)", "\n>>\n", source_str) source_str = re.sub(r"(<|<)blockquote(>|>)", "\n<<\n", source_str) with codecs.open("o.txt", "w", "utf8") as fp: fp.write(source_str) if __name__ == "__main__": main()