上篇讲了Typecho博客搬家到SegmentFault上来,然后很多人就不答应了,非吐槽说为啥世界第一博客程序WordPress的教程没有!迫于压(wu)力(liao),特别放出WordPress迁移教程给大家。
-
首先下载安装并启用 JSON API 插件,在后台直接搜索
JSON API
第一个安装即可。 -
安装好插件之后打开你的博客并打开浏览器控制台,输入以下代码并回车执行:
(function get(callback) { var posts = []; callback = callback || new Function; try {$.get} catch(e){ var script = document.createElement("script"); script.src = "http://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js"; script.onload = function() {return get(callback)} document.body.appendChild(script) } (function g(page){ $.get("?json=1&paged="+page, function(o){ posts = posts.concat(o.posts.map(function(post){ return { title: post.title, text: post.content, created: created: parseInt((new Date(post.date.split(" ")[0])).getTime()/1000),, tags: post.tags } })); if(page<o.pages) g(page+1); else callback(posts); }); })(1) })(function(posts) { var posts = "var posts = "+JSON.stringify(posts); var ta = $("<textarea></textarea>").css({width:"100%", height:"500px"}).val(posts); ta.onfocus = function() {this.select()}; $("body").html("请复制文本框内的所有内容:<br>").append(ta); console.log("恭喜,所有文章内容均已经复制到粘贴板中(此功能仅针对Chrome),如果没有请自行复制页面文本框内的所有内容"); if(copy) copy(posts); })
-
如果代码执行成功的话,控制带会提示你
恭喜,所有文章内容均已经复制到粘贴板中(此功能仅针对Chrome),如果没有请自行复制页面文本框内的所有内容
,如果没有成功会有相应的错误提示。非Chrome浏览器需要自行按照提示复制页面内文本框的内容,Chrome浏览器可跳过此步骤。 -
打开 http://segmentfault.com/write 页面,保证SF账号已登陆。同时开启浏览器控制台,粘贴刚才复制的内容回车执行后复制以下代码继续回车执行:
(function sync(posts) { var bid = $("button[data-bid]").data("bid"); function postArticle(post, i) { getTags(post.tags, function(tags) { $.post("/api/article", {title: post.title, text: post.text, blogId: bid, tags: tags, created: post.created, do: "post", weibo: 0}, function() { console.log("《%title%》已经尝试发布".replace("%title%", post.title)); if(posts.length-1!=i) { setTimeout(function() { postArticle(posts[i+1], i+1); }, 4000); } else return console.log("文章已经全部同步成功,但不保证中间有遗漏。本功能由 公子 倾情制作,有问题欢迎反馈交流。"); }); }) } function getTags(tags,callback){ if(tags.length==0) return callback(['1040000000089914']); var res = []; (function q(tag, i) { $.get("/api/tag?do=search&q="+tag, function(o) { if(!o.status && o.data.length>0) { res.push(o.data[0].id); } if(tags.length-i!=1) q(tags[i+1], i+1); else { if(res.length == 0) res = ['1040000000089914']; callback(res); } },'json'); })(tags[0], 0) } console.log("总共有 %d 篇文章需要发布,正在进入发布通道...".replace("%d", posts.length)); return postArticle(posts[0], 0); })(posts) -
至此你的文章已经全部同步过来了,有问题欢迎留言。
注:
1. 以上代码仅在Firefox和Chrome浏览器中测试过,其他浏览器不保证无BUG。
2. 由于SegmentFault的文章标签必须是SF标签云中存在的(不存在的需要自己创建),为减少麻烦,文章中不存在的标签我就直接过滤掉了。
3. 由于SegmentFault有Spam检测机制,所以我将文章发布时间调整在4秒一篇,如果文章数过多的同学还请耐心等待一下。
4. 以上代码仅仅只是纯粹将你的文章内容搬家过来,不保证你的文章在SF中解析正常。
SegmentFault搬家系列文章:
敬请期待下一篇:《公子教你快速把Jekyll博客搬家到SegmentFault》