文档章节

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

JerryWang_SAP
 JerryWang_SAP
发布于 05/25 22:31
字数 458
阅读 0
收藏 1

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

例子: https://github.com/i042416/KnowlegeRepository/issues/2215

这是我的一个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的原创文章,请关注公众号"汪子熙":

© 著作权归作者所有

JerryWang_SAP
粉丝 24
博文 667
码字总数 531182
作品 0
深圳
程序员
私信 提问
Skynet 1.2.0 发布,轻量级在线游戏框架

今天 Skynet 的作者云风在其博客宣布推出 skynet 1.2.0。Skynet 是一个轻量级的在线游戏框架,它也可以用于许多其他领域。 下载地址:https://github.com/cloudwu/skynet/releases/tag/v1.2...

局长
2018/11/06
1K
3
快捷使用JitPack发布你的Github开源库

版权声明:本文出自veidy的博客,转载必须注明出处 转载请注明出处:http://my.oschina.net/aibenben/blog/598217 (哈哈,上面是学的csdn上面了。。。一年难得抽时间分享点好玩的东西,还是希...

veidy
2016/01/06
1K
1
使用SoureTree下拉文件不成功

新手求问 远程仓库里已经有代码。 先用souretree的clone成功克隆到了本地。 在还没有做任何修改把代码删掉,接着想要从远程仓库再下拉一边代码。 但是用了sourcetree的pull功能后文件夹能没有...

iengai
2016/10/22
88
1
详解 Github App 的玩法

之前在使用 Github issues 搭建博客平台的时候,研究过一番如何取得 Github 授权并调用 API 的办法。后来选择了较简单的账号密码和 Token 的方法。但是有读者反馈这样的操作依然稍显麻烦,且...

Jrain
05/30
0
0
如何在 GitHub 上大显身手?

作者 | 良许 责编 | 郭芮 码农朋友们都知道,GitHub是一个面向开源及私有软件项目的托管平台,上面托管了众多的优秀的项目,比如Linux内核源码、Git源码、机器学习框架Tensorflow等等。当然,...

CSDN资讯
2018/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Xss过滤器(Java)

问题 最近旧的系统,遇到Xss安全问题。这个系统采用用的是spring mvc的maven工程。 解决 maven依赖配置 <properties><easapi.version>2.2.0.0</easapi.version></properties><dependenci......

亚林瓜子
38分钟前
2
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
7
0
Set 和 Map

Set 1:基本概念 类数组对象, 内部元素唯一 let set = new Set([1, 2, 3, 2, 1]); console.log(set); // Set(3){ 1, 2, 3 } [...set]; // [1, 2, 3] 接收数组或迭代器对象 ...

凌兮洛
今天
1
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
5
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.9K
19

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部