广州 网站设计公司排名,淮南做网站,永久免费做网站,网页模板网站推荐这两天折腾了一下用ruby通过MetaWeblog接口把本博客同步到博客园#xff0c;特此记录。 MetaWeblog MetaWeblog是一个专门关于博客的协议标准#xff0c;通过xmlrpc#xff0c;很简单的定义了新增、编辑、删除三个基本接口。 在博客园设置页签的最下方#xff0c;保存按钮之…这两天折腾了一下用ruby通过MetaWeblog接口把本博客同步到博客园特此记录。 MetaWeblog MetaWeblog是一个专门关于博客的协议标准通过xmlrpc很简单的定义了新增、编辑、删除三个基本接口。 在博客园设置页签的最下方保存按钮之前有每个用户的MetaWeblog接口地址 MetaWeblog访问地址: http://rpc.cnblogs.com/metaweblog/personball 打开这个接口地址可以看到接口文档。 那么通过什么方式调用这个服务呢 最好是脚本语言这毕竟不是开发项目用需要编译生成的静态语言有点小题大做。 如果你熟悉Python或许也可以找到MetaWeblog的客户端库下面介绍通过Ruby版MetaWeblog客户端进行XmlRpc调用。 通过Ruby脚本调用metaWeblog.newPost 准备工作 ruby升级到2.3版本gem install metaweblog对了我这里是Mac系统。下面先讲几个注意点具体操作放最后。 Tip1 发布频率 博客园的MetaWeblog接口对博文发布频率做了限制发布间隔太短会遇到提示 30秒内只能发布1篇博文请稍候发布 间隔30秒还是很容易触发建议发布间隔60秒。 Tip2 发布Markdown 发布Markdown内容要求Post结构中的categories设成[Markdown]注意categories要求是数组具体请看接口文档中struct Post一栏。 Tip3 扩展MetaWeblog中的Post对象 你找到的MetaWeblog客户端很可能是通用的所以不会针对博客园的接口做适配肯定需要针对Post对象做扩展。 博客园MetaWeblog接口Post结构中的title是文章标题description是文章内容这两个都是必填项。如果遇到异常提示必须思考下是不是博客园服务器端抛出来的。 本博客的同步脚本 完整代码见 cnblogs_post.rbpost_sync.rb 其中cnblogs_post.rb是针对博客园接口的扩展主要加了个:categories去掉了原先MetaWeblog::Post定义的:link。:dateCreated虽然加了但是目前博客园不使用接口传进去的值而用服务器接收时间作为发布时间。需要修改的话必须到后台编辑文章页面展开最下方的其他选项勾选修改发布时间。我嫌麻烦直接title上加日期前缀了 post_sync.rb主要是单篇文章同步用脚本处理了几个问题 加载cnblogs_post.rb以使用MetaWeblog::CnblogsPost读取配置接口地址、用户名、密码等打开_posts目录中的markdown文件进行一定的处理解析Jekyll文件头之类处理文章中的相对路径主要是资源链接和博文链接等Yaml配置文件 post_sync.yml范例 target: http://rpc.cnblogs.com/metaweblog/personball
source: http://personball.com
username: yourUserName
password: yourPWD 配置文件一定记得不要推送到github上.gitignore中必须指定忽略post_sync.yml。 批量调用 首先post_sync.rb必须设置成可执行 chmod ux post_sync.rb 然后使用bash脚本批量调用 批量调用脚本参考batch_sync.sh 这个脚本可以通过find命令遍历_posts目录自动生成 find _posts/*|xargs -n 1 echo ./post_sync.rb batch_sync.sh 对了其中sleep 55s这是通过vscode多行编辑插入的。 最后强烈建议程序员一定要多玩玩命令行。 git add .
git commit -a
git push ./post_sync.rb _posts/2017-08-31-how-to-sync-post-to-cnblogs-with-ruby.md Go! 转载于:https://www.cnblogs.com/personball/p/7460622.html