WordPress之图片搬家
日期:2011-04-17作者:firefish分类:Python阅读:1,370评论:3
本blog之前一直使用的是托管于GAE的micolog程序,前两天刚迁移到wordpress(了解详情)。micolog可以将全站导出为wordpress兼容的RSS格式,所以搬家是很容易。只需要将导出的rss文件在WP中使用RSS Importer插件导入,所有的文章、评论、分类、页面等都自动过来了,但图片除外。
那图片怎么办呢?我的思路是将原站中的所有图片全部下载下来,然后上传到WP的uploads文件夹,再修改文章中的引用即可。当然,我指的是使用程序自动来完成,否则人工作这样的事情,会要人命的。。。
第1步
在micolog后台将blog导出xml,并下载到本地,我们将文件命名为blog.xml;
第2步
用文本编辑器打开 blog.xml,查找src=”/media替换为src=”http://原blog域名/media并保存。这样做是因为micolog的编辑器有时候会引用图片的相对路径有时候确是绝对路径(这个貌似是老版本程序的一个bug),那么我们这里给它统一替换为带域名的绝对路径,为后面的下载做准备;
第3步
用下面这段python脚本,自动提取blog.xml中的所有图片链接,下载到本地,并替换为WP目录结构格式的地址。程序如下:
#coding=utf-8
import re
import codecs
import urllib2
# 打开RSS文件读取内容
file = codecs.open('blog.xml', 'r', 'utf-8')
content = file.read()
file.close()
# 用正则从RSS中提取所有图片链接地址
p = re.compile('src="([\w\W]+?)"')
urls = p.findall(content)
# 下载图片文件,并保存到img目录
# 文件名自动更名为0000<n>.png
i = 1
for url in urls:
print url
name = '%05d.png' % i
opener = urllib2.build_opener()
req = urllib2.Request(url.encode('utf-8'))
resp = opener.open(req).read()
outfile = open('img\\' + name , 'wb')
outfile.write(resp)
outfile.close()
# 替换RSS中的图片链接地址为新的文件地址
# 域名及路径可根据实际情况修改
name = '%05d.png' % i
content = content.replace(url, 'http://blog.meiweier.com/wp-content/uploads/2011/04/%s' % name)
i += 1
# 下载完成后保存修改过的RSS到新的文件
file = codecs.open('new.xml', 'w', 'utf-8')
content = file.writelines(content)
file.close()
将上面这段程序保存到blog.xml所在目录下的py文件中,并创建一个名字为img的文件夹,然后运行这个py文件,就会自动开始下载文件到img文件夹,完成后会生成一个新的RSS文件new.xml。
第4步
将img下的所有文件上传到WP的目录下,比如我的路径是:WP所在目录/wp-content/uploads/2011/04/(这个路径和RSS中的路径要一致),在WP后台使用RSS Importer插件,选择new.xml执行导入。
大功告成!最后借此感谢一下micolog的作者徐明,你的程序我使用了很长一段时间,虽然我不再使用了,还是希望micolog越来越好,拥护越来越多!
哗,终于成哦WP用户了,欢迎加入!
呵呵,谢谢,WP功能很强大,好多还没整明白呢
前几天刚搬了,呵呵