一开始的思路和转换工具一样,也是想自己写个脚本转换WordPress schema成Atom schema,可是很杯具的总是失败,Blogger导入时也没提示,不知schema的什么地方不符合标准~~~
于是开始研究Atom schema,洗具的地方在于伟大的G公司给我们提供了详细的描述:http://code.google.com/apis/blogger/docs/2.0/developers_guide_protocol.html
更强大之处在于这个spec的若干种语言的实现都提供了:http://code.google.com/apis/blogger/docs/1.0/developers_guide.html,虽然python只是提供了1.0的spec,但于我已经足够了~~~
于是,几行代码就搞定了迁移:
import sys, os from xml.dom import minidom import gdata.blogger.client import gdata.client import gdata.data import atom.data def usage(cmd): print "Usage: %s account pwd in_file\n" % cmd sys.exit(-1) def get_simple_node_value(node): for subnode in node.childNodes: if subnode.nodeType in (node.TEXT_NODE, node.CDATA_SECTION_NODE): return subnode.data def handle(account, pwd, in_file): client = gdata.blogger.client.BloggerClient() client.ClientLogin(email = account, password = pwd, service = 'blogger', source = 'Blogger_Importer-0.1') feed = client.get_blogs() blog_id = feed.entry[0].get_blog_id() in_dom = minidom.parse(in_file) in_root = in_dom.documentElement items = in_root.getElementsByTagName("item") for item in items: title = get_simple_node_value(item.getElementsByTagName("title")[0]) content = get_simple_node_value(item.getElementsByTagName("content:encoded")[0]) pub_date = get_simple_node_value(item.getElementsByTagName("pubDate")[0]) pub_date = pub_date.split(".")[0] print("Importing: %s ...\n" % title) client.add_post(blog_id, title, content, draft = True) if __name__ == '__main__': if len(sys.argv) != 4: usage(sys.argv[0]) handle(sys.argv[1], sys.argv[2], sys.argv[3])
另,gdata除了可以用来操作Blogger外,若干Google的service都可以操作(参考这里):
没有评论:
发表评论