MetaWeblog 同時管理51cto,csdn,sina,163,oschina,cnblogs等博客

我們技術人一般都會有自己的一個博客,用于記錄一些技術筆記,也期望自己的筆記文章可以讓更多人知道。

如何讓更多人知道自己的博客?

  • 搜索引擎收錄,用戶通過關鍵詞搜索可能會進入

  • 內容運營,但是一般技術人為了文章做運營的人應該沒有幾個

  • 通過大流量同類型網站導流量


我是使用 方法一 和 方法三,方法一就不說了,互聯網人都知道了,但是小網站效果不會太好了。方法三就是充當復讀機:復制 和 粘貼  到其他技術網站


“復制 和 粘貼  到其他技術網站” 收起來容易,這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地址如下


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


下面搞幾張截圖,觀賞下自動復讀機的效果


PS1:csdn還沒有實現,主要是csdn有時候好像服務器metaweblog有問題,還在繼續研究中

PS2:csdn已經可以同步啦,目前發現每次只能同步20篇文章,并且還要特殊處理,就是發送文章接口做對csdn 特地加入 blog_id 為一個特定值,具體代碼請前往github查看

關于metaweblog協議 實現:https://github.com/apanly/metaweblog 


有興趣的朋友可以通過本站關于通過郵件和wechat聯系我

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>