metaWeblog同步博客遇到的问题怎么解决
metaWeblog同步博客遇到的问题怎么解决
本篇内容介绍了“metaWeblog同步博客遇到的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
技术上使用metaWeblog就可以实现上述目的,选用python的xmlrpclib可以方便的进行xmlrpc操作。做一个控制台的小程序足够了我使用了。
然后开始技术实验,发现:
wordpress支持metaWeblog很好,可以实现所有的功能。从wordpress可以通过metaWeblog.getRecentPosts函数得到所有的文章。
cnblogs也支持metaWeblog,也支持的很好。cnblogs也支持我的语法高亮。但遗憾的是:第一:metaWeblog.getRecentPosts函数最多能够返回100个文章。而我的cnblogs目前有230篇文章,很显然,cnblogs限制了文章数量;第二:metaWeblog.newPost函数即便Post结构中有dateCreated,但cnblogs的主界面中依然按照当前时间计算,造成文章时间对不上号,顺序混乱。
csdn就是个垃圾,metaWeblog表面上支持,暗地里出问题。metaWeblog.getRecentPosts,metaWeblog.editPost都无法用,提示User not exist。仅有metaWeblog.newPost可以用,但csdn的blog的语法高亮无法用,页面很难看。
所以,想实现我的目的通过metaWeblog看来是没希望了。除非cnblogs调整文章数量限制,csdn希望从垃圾变成战斗机了。
附我写的一个测试代码,不完善,仅作为参考:
importxmlrpclibclassMetablog:def__init__(self,url,username,password):self.username=usernameself.password=passwordself.url=urlself.server=xmlrpclib.ServerProxy(url)self.posts=NonedefgetAllPosts(self):print"Gettingallpostsfrom"+self.urlself.posts=self.server.metaWeblog.getRecentPosts('',self.username,self.password,9999999)print"found"+str(len(self.posts))+"posts"returnself.posts;defgetAllPostTitle(self):ifself.posts==None:self.getAllPosts()ret=dict()forpostinself.posts:ret[post["postid"]]=post["title"]returnretdefgetPost(self,id):forpostinself.posts:ifpost["postid"]==id:returnpostreturnNonedefnewPost(self,post):self.server.metaWeblog.newPost('',self.username,self.password,post,True)defeditPost(self,postid,post):self.server.metaWeblog.editPost(postid,self.username,self.password,post,True)defdelPost(self,postid):self.server.metaWeblog.deletePost('',postid,self.username,self.password,True)defsyncBlog(b1,b2):b1Titles=b1.getAllPostTitle()b2Titles=b2.getAllPostTitle()forkey1,value1inb1Titles.iteritems():print"Blog1title:"+value1forkey2,value2inb2Titles.iteritems():print"tBlog2title:"+value2ifvalue1==value2:print"Syncing,blog2postid="+key2b2.editPost(keys2,b1.getPost(key1))breakprint"Blog2hasnoarticleequaltotitle:"+value1print"Addnew"b2.newPost(b1.getPost(key1))print"Donesync"wpBlog=Metablog("主站地址","用户名","密码")cnBlog=Metablog("从站地址","用户名","密码")syncBlog(wpBlog,cnBlog)
“metaWeblog同步博客遇到的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
推荐阅读
-
polyfills怎么按需加载
polyfills怎么按需加载本篇内容主要讲解“polyfills...
-
C#数据类型怎么实现背包、队列和栈
-
C#怎么实现冒泡排序和插入排序算法
C#怎么实现冒泡排序和插入排序算法这篇文章主要讲解了“C#怎么实现...
-
C#如何实现希尔排序
-
C#如何实现归并排序
-
C#怎么使用符号表实现查找算法
-
C#类的静态成员怎么用
C#类的静态成员怎么用这篇“C#类的静态成员怎么用”文章的知识点大...
-
C#的静态函数怎么用
C#的静态函数怎么用这篇文章主要讲解了“C#的静态函数怎么用”,文...
-
C#中的析构函数怎么用
C#中的析构函数怎么用这篇文章主要讲解了“C#中的析构函数怎么用”...
-
怎么用CZGL.ProcessMetrics监控.NET应用