posts - 24,  comments - 62,  trackbacks - 0

微软启用了新的live域名,有许多人将hotmail之类的帐号转到新的域名,这就出现了如何将原帐号下的个人信息转移到新帐号的问题。对于live messager的联系人列表可采用其联系人选项中的导入导出功能,而最麻烦当属将live spaces的空间博客转移到新的帐号名下。最直接方法就是联系微软管理员,将你旧帐号下的空间所有权转移到新帐号名下,但是业务上是否可行不得而知。因此转而另一方法,开新的空间,将旧空间的博客转移到新空间来,本文就是采用这种思路,顺带提及下live api的简单使用。

Windows Live Spaces MetaWeblog API提供了给外部程序进行文章内容设置和读取的功能。API使用了XML—RPC协议来在客户端应用程序与Weblog服务器端进行通讯。

为了使用MetaWeblog API编辑空间中的博文内容,首先需要在空间启用E-mail发布功能,并设置密码字。

  1. 到你的空间中的Options->E-mail Publishing选项进行配置
  2. 打开E-mail发布功能,并选择 secred word的密码字。

在程序中会用到用户名和密码,如果你的空间地址为: oldname.spaces.live.com,则用户名就是oldname,而不是你的live id,密码则是上面设置的secred word,而不是live id的密码。

现在的MetaWeblogApi能进行发布新博文,编辑现有的博文,获取指定博文,获取类别列表,获取最近发布的博文,删除博文,获取用户博客信息,获取用户信息等功能。由这些功能,想迁移博客内容,首先需要获取到旧空间里的博文。我们自然想到用MetaWeblogAPI metaWeblog.getRecentPosts Method函数,指定一个较大的值,然后获取全部的博文。很可惜,对于live spaces值只能取20,也就是说只能获取最近20篇博文。顺便提下,这里的20篇包括你己发布的,和存在空间里的草稿,这些草稿有时候并不会在空间里显示出来,但是操作时会有表示。如果用MetaWeblogAPI metaWeblog.getPost Method,需要知道指定博文的id号,没有获取到全部博文id的方法作辅助,这又是一个因难。

最后我采用了将metaWeblog.getRecentPosts方法的获取值设为1,每次取最近的一篇博文,然后记录id号,将这博文用MetaWeblogAPI metaWeblog.newPost Method发表到新空间,然后用MetaWeblogAPI blogger.deletePost Method将这id号的博文从旧空间中删去,重复进行,直到无法从旧空间里获取到博文。在程序实现借用了MSDN中的示例,为了防止网络故障之类以及做了备份,先是将获取博文内容写到本地文件,再进行删除。

程序中还要说明的是,由于live spaces服务器使用非标准的时间格式,造成用DateTime.Now和获取到的博文的dateCreated都是"1/1/0001 12:00:00 AM"的格式,这需要在Invoke方法调用前加上this.NonStandard = XmlRpcNonStandard.AllowNonStandardDateTime语句。还有需要用到CookComputing.XmlRpcV2.dll,它实现了.net 2.0版本的XML-RPC协议,己包含在文末的源码中。如果是.net 1.1,需要其他相应的文件,可具体参见http://www.xmlrpc.com/metaWeblogApi

最后要提下的是,程序只用于我自己的空间迁移,再加上不懂C#,用户名和密码之类都硬编码了,MetaWeblog之类的方法也应能用于像cppblog之类用wordpress的博客空间。这些部分加之完善,应能做个博客搬家工具的。

参考:

文中的迁移工具源码下载

MDSN Windows Live Spaces SDKs

posted on 2008-09-24 21:50 len 阅读(1987) 评论(2)  编辑 收藏 引用 所属分类: IT技术

FeedBack:
# re: Live Spaces新旧空间迁移方法
2010-12-13 14:14 | cqqCharm
请问博主,你提供的源码,能用C++实现麽,我最近程序也需要跟博客文章交互,非常需要你的这个功能,能指点下麽,谢谢了  回复  更多评论
  
# re: Live Spaces新旧空间迁移方法[未登录]
2010-12-22 20:50 | Len
@cqqCharm
可以的,我后来又写了一个python的,下个MetaWeblogAPI库接口,照样画葫芦就行  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(4)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜