我是一个懒惰的程序员。我在 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 的原创文章,请关注公众号 ” 汪子熙 ”: