乐趣区

使用代码将github仓库里某个issue同步到CSDN博客上

我是一个懒惰的程序员。我在 github 仓库里用 issue 的方式写了很多分享文章,想同步到 CSDN 上。但是我又不想一篇篇手动复制粘贴,因此想用代码来实现自动化。

例子:
https://github.com/i042416/Kn…

这是我的一个 issue:

我使用下面这些 nodejs 代码实现从 github 仓库 issue 到 CSDN 博客的拷贝:

var config = require("./mcConfig");
var request = require('request');
var querystring = require('querystring');

function createPost(oPost) {

  var url = "https://mp.csdn.net/mdeditor/saveArticle";
  var oBody = {
          title: oPost.title,
          markdowncontent: oPost.body,
          tags:"Fiori",
          categories:"Fiori",
          channel:"14",
          type:"original",
          articleedittype:"1",
          content: oPost.body
        };

var formData = querystring.stringify(oBody);
var contentLength = formData.length;

var createPostOptions = {
        url: url,
        method: "POST",  
        headers: {
            "content-type": "application/x-www-form-urlencoded",
            "Content-Length": contentLength,
            "origin" :"https://mp.csdn.net",
            "referer" :"https://mp.csdn.net/mdeditor",
            "User-Agent" :"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36",
            "cookie": config.cookie
        },
        body: formData
};

  return new Promise(function(resolve,reject){var requestC = request.defaults({jar: true});
      console.log("Step1: create post via url:"   url);

      requestC(createPostOptions,function(error,response,body){if(error){reject(error);
       }
       console.log("response:"   body);
       resolve(body);
      }); 
     });
}

module.exports = createPost;

var request = require('request');

function getIssue(issueNumber) {

  var url = "https://api.github.com/repos/i042416/KnowlegeRepository/issues/"   issueNumber;

  var getIssueOptions = {
        url: url,
        method: "GET",
        json:true,
        headers: {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
        }
  };

  return new Promise(function(resolve,reject){var requestC = request.defaults({jar: true});
      console.log("Step1: get issue detail via url:"   url);

      requestC(getIssueOptions,function(error,response,body){if(error){console.log("error occurred:"   error);
          reject(error);
        }
        console.log("title:"   body.title);
        console.log("body:"   body.body);
        for(var i = 0; i < body.labels.length; i){console.log("label:"   body.labels[i].name);
        }
        resolve(body);
      }); 
     });
}

module.exports = getIssue;

var readIssue = require("./readIssueMod");
var createPost = require("./createPostMod");

readIssue(2215).then(createPost).catch((error)=>{console.log("error:"   error)});

执行结果:

已经自动同步到 CSDN 了,方便!

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版