继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

如何同时管理51cto,csdn,sina,163,oschina,cnblogs博客

2017-05-18 13:37:318429浏览

编程浪子

2实战 · 15手记 · 3推荐
TA的实战

我们技术人一般都会有自己的一个博客,用于记录一些技术笔记,也期望自己的笔记文章可以让更多人知道。

如何让更多人知道自己的博客?
  • 搜索引擎收录,用户通过关键词搜索可能会进入
  • 内容运营,但是一般技术人为了文章做运营的人应该没有几个
  • 通过大流量同类型网站导流量

我是使用 方法一 和 方法三,方法一就不说了,互联网人都知道了,但是小网站效果不会太好了。方法三就是充当复读机:复制 和 粘贴 到其他技术网站

“复制 和 粘贴 到其他技术网站” 收起来容易,这TM就是个体力活呀,谁愿意自己写了一篇文章 再占用半个小时,同步到各个技术网站和论坛。

我这次记录的就是如何简单方便的同步管理?MetaWeblog,对就是这个名词,这也是一个协议,我所知道的各大技术网站基本都实现了这个协议,通过这个协议我们就可以向各大技术网站通过接口直接同步博客。作为一个技术人员还是要与时俱进,时刻学习呀,我是偶然有这个想法查阅了一些资料知道了这个协议,但是这个协议于2002年都被提出来了,直到今天才知道,真是羞愧呀

MetaWeblog 客户端 也是基于Http协议的,数据报文是XML的,也就是按照规定的XML格式,发送Http 请求就好了。
数据库报文格式可以参考官网说明:http://xmlrpc.scripting.com/metaWeblogApi.html
官方有个xml例子可以参考:http://cyber.law.harvard.edu/blogs/gems/tech/sampleMetaweblogCall.txt

MetaWeblog有几个常用Api
Api名称 描述
metaWeblog.newPost 发布新的文章
metaWeblog.editPost 编辑文章
metaWeblog.getPost 获取文章
metaWeblog.getRecentPosts 获取近来的文章
metaWeblog.getCategories 获取类目

基础脑补忘了,说实现架构吧

1.我新建了两个相关表 blog_sync_queue 和 blog_sync_mapping

CREATE TABLE `blog_sync_queue` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `blog_id` int(11) NOT NULL COMMENT '本站博客id',
  `type` varchar(10) NOT NULL DEFAULT '' COMMENT '类型',
  `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态:-1: 待运行 0: 失败 1:成功',
  `updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='博客同步队列';

CREATE TABLE `blog_sync_mapping` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `blog_id` int(11) NOT NULL COMMENT '本站blog的id',
  `cto51_id` varchar(64) NOT NULL DEFAULT '' COMMENT '51cto博客的id',
  `csdn_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'csdn的id',
  `sina_id` varchar(64) NOT NULL DEFAULT '' COMMENT '新浪博客的id',
  `netease_id` varchar(64) NOT NULL DEFAULT '' COMMENT '网易博客的id',
  `oschina_id` varchar(64) NOT NULL DEFAULT '' COMMENT '开源中国的id',
  `cnblogs_id` varchar(64) NOT NULL DEFAULT '' COMMENT '博客园的id',
  `updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='本站blog_id 与其他同步站点的id关系';

2.每次博客变动我都会在blog_sync_queue插入一条记录,例如 表示想cnblogs提交我个人博客ID为6的博文

INSERT INTO `blog_sync_queue` (`id`, `blog_id`, `type`, `status`, `updated_time`, `created_time`)
VALUES
    (12, 6, 'cnblogs', -1, '2016-01-09 00:09:38', '2016-01-08 23:36:40');

3.写一个php 脚本,配置crontab每5分钟运行一次
此脚本就是从blog_sync_queue 查询 status = -1 的结果集,然后通过MetaWeblog接口提交到指定网站

关于几个博客metaweblog api地址如下
关于几个博客metaweblog api地址如下

地址 描述
http://imguowei.blog.51cto.com/xmlrpc.php 51cto
http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php sina
http://write.blog.csdn.net/xmlrpc/index csdn(每日20篇文章)
http://os.blog.163.com/word/ 163
https://my.oschina.net/action/xmlrpc oschina
http://www.cnblogs.com/apanly/services/metaweblog.aspx cnblogs
http://blog.chinaunix.net/xmlrpc.php?r=rpc/server chinaunix

下面搞几张截图,观赏下自动复读机的效果

PS1:csdn还没有实现,主要是csdn有时候好像服务器metaweblog有问题,还在继续研究中
PS2:csdn已经可以同步啦,目前发现每次只能同步20篇文章,并且还要特殊处理,就是发送文章接口做对csdn 特地加入 blog_id 为一个特定值,具体代码请前往github查看
图片描述
图片描述
图片描述
图片描述
图片描述

关于追求

作为一个技术人嘛,我觉得要有技术追求,要用技术改变身边的事和人,同时也要学会偷懒,并且我一直认为偷懒是技术人进步的一个动力

打开App,阅读手记
12人推荐
发表评论
随时随地看视频慕课网APP

热门评论

浪哥,只从看了你的yii视频,我就觉得此人绝非池中之物。

老师 啥时候 在出点PHP开发商业网站类型的 课程哦 

老师,你的CSDN博客是什么啊,公开一下,让我们关注呗

查看全部评论