公子教你快速把WordPress博客搬家到SegmentFault

上篇讲了Typecho博客搬家到SegmentFault上来,然后很多人就不答应了,非吐槽说为啥世界第一博客程序WordPress的教程没有!迫于压(wu)力(liao),特别放出WordPress迁移教程给大家。

  1. 首先下载安装并启用 JSON API 插件,在后台直接搜索JSON API第一个安装即可。

  2. 安装好插件之后打开你的博客并打开浏览器控制台,输入以下代码并回车执行:

    (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);
    })
    

  3. 如果代码执行成功的话,控制带会提示你恭喜,所有文章内容均已经复制到粘贴板中(此功能仅针对Chrome),如果没有请自行复制页面文本框内的所有内容,如果没有成功会有相应的错误提示。非Chrome浏览器需要自行按照提示复制页面内文本框的内容,Chrome浏览器可跳过此步骤。

  4. 打开 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)

  5. 至此你的文章已经全部同步过来了,有问题欢迎留言。


1. 以上代码仅在Firefox和Chrome浏览器中测试过,其他浏览器不保证无BUG。
2. 由于SegmentFault的文章标签必须是SF标签云中存在的(不存在的需要自己创建),为减少麻烦,文章中不存在的标签我就直接过滤掉了。
3. 由于SegmentFault有Spam检测机制,所以我将文章发布时间调整在4秒一篇,如果文章数过多的同学还请耐心等待一下。
4. 以上代码仅仅只是纯粹将你的文章内容搬家过来,不保证你的文章在SF中解析正常。

SegmentFault搬家系列文章

敬请期待下一篇:《公子教你快速把Jekyll博客搬家到SegmentFault》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值