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

例子:

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

这是我的一个issue:

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

  1. var config = require("./mcConfig");
  2. var request = require('request');
  3. var querystring = require('querystring');
  4. function createPost(oPost) {
  5. var url = "https://mp.csdn.net/mdeditor/saveArticle";
  6. var oBody = {
  7. title: oPost.title,
  8. markdowncontent: oPost.body,
  9. tags:"Fiori",
  10. categories:"Fiori",
  11. channel:"14",
  12. type:"original",
  13. articleedittype:"1",
  14. content: oPost.body
  15. };
  16. var formData = querystring.stringify(oBody);
  17. var contentLength = formData.length;
  18. var createPostOptions = {
  19. url: url,
  20. method: "POST",
  21. headers: {
  22. "content-type": "application/x-www-form-urlencoded",
  23. "Content-Length": contentLength,
  24. "origin" :"https://mp.csdn.net",
  25. "referer" :"https://mp.csdn.net/mdeditor",
  26. "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",
  27. "cookie": config.cookie
  28. },
  29. body: formData
  30. };
  31. return new Promise(function(resolve,reject){
  32. var requestC = request.defaults({jar: true});
  33. console.log("Step1: create post via url: " url );
  34. requestC(createPostOptions,function(error,response,body){
  35. if(error){
  36. reject(error);
  37. }
  38. console.log("response: " body);
  39. resolve(body);
  40. });
  41. });
  42. }
  43. module.exports = createPost;
  44. var request = require('request');
  45. function getIssue(issueNumber) {
  46. var url = "https://api.github.com/repos/i042416/KnowlegeRepository/issues/" issueNumber;
  47. var getIssueOptions = {
  48. url: url,
  49. method: "GET",
  50. json:true,
  51. headers: {
  52. "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"
  53. }
  54. };
  55. return new Promise(function(resolve,reject){
  56. var requestC = request.defaults({jar: true});
  57. console.log("Step1: get issue detail via url: " url );
  58. requestC(getIssueOptions,function(error,response,body){
  59. if(error){
  60. console.log("error occurred: " error);
  61. reject(error);
  62. }
  63. console.log("title:" body.title);
  64. console.log("body: " body.body);
  65. for( var i = 0; i < body.labels.length; i ){
  66. console.log("label: " body.labels[i].name);
  67. }
  68. resolve(body);
  69. });
  70. });
  71. }
  72. module.exports = getIssue;
  73. var readIssue = require("./readIssueMod");
  74. var createPost = require("./createPostMod");
  75. readIssue(2215).then(createPost).catch((error)=>{console.log("error: " error)});

执行结果:

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

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

使用代码将github仓库里某个issue同步到CSDN博客上的更多相关文章

  1. [Git高级教程(二)] 远程仓库版本回退方法 - 梧桐那时雨 - CSDN博客

    1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回退版本? 如果提交了一个错误的版本到远程分支,怎么回退远程分支 ...

  2. Git下载GitHub仓库里的某一个文件夹或某一个文件

    从Github上下载github上的整个项目,可以用下面指令: git clone https://github.com/XXX/xxxxx.git 其中:XXX是用户在Github上的用户名 xxx ...

  3. 上传代码到GitHub仓库

    上传代码到GitHub仓库 准备工作 意思是自从 21 年 8 月 13 后不再支持用户名密码的方式验证了,需要创建个人访问令牌(personal access token). 这里就不多说了 Git ...

  4. Coding.net代码托管空间申请与使用-安装并运行WordPress博客

    参考: http://www.freehao123.com/coding-net/ Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社 ...

  5. 在Github上面搭建一个自己域名的Hexo博客

    前言 在一次看到别人的博客主页,觉得设计很漂亮.但是由于自己对于前台这块没什么办法,煞是羡慕.偶然中发现这种样式是在Github上面搭建的,使用的是Next主题.于是便想自己也搭建一个,于是便去就去查 ...

  6. WPF 用代码调用dynamic resource动态更改背景 - CSDN博客

    原文:WPF 用代码调用dynamic resource动态更改背景 - CSDN博客 一般dynamic resoource通常在XAML里调用,如下范例: <Button Click=&qu ...

  7. CSDN博客添加量子恒道统计代码步骤

    CSDN博客添加量子恒道统计代码步骤. 1. 去量子恒道网站统计 注册账户: 2. 添加已有的CSDN博客地址: 3. 添加博客后恒道代码里面会给你一个JavaScript脚本,记下里面的一串数字: ...

  8. 我的CSDN博客&Github地址

    我的 CSDN 博客地址: https://blog.csdn.net/qq_40147863 Github 地址: https://github.com/xpwi

  9. 解决CSDN博客插入代码出现的问题

    我在写CSDN博客的时候有时候会在插入代码之后继续编辑,然后保存之后经常会出现一些多余的符号<p 例如<pre></pre>,这样的标记,其实这是html的一个元素,pr ...

随机推荐

  1. Redis查询_Tips

    基础知识——介绍 Redis简介 REmote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个完全 ...

  2. Vue报错 Duplicate keys detected: '1'. This may cause an update error. vue报错

    情况一.错误信息展示为关键字‘keys‘,此时应该检查for循环中的key,循环的key值不为唯一性 (很普通) 情况二.有两个相同的for循环,而这两个for循环的key值是一样的,此时将一个的ke ...

  3. SpringMVC接收集合页面参数

    SpringMVC接收集合页面参数 Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctyp ...

  4. Spring分页实现PageImpl<T>类

     Spring框架中PageImpl<T>类的源码如下: /* * Copyright 2008-2013 the original author or authors. * * Lice ...

  5. 一步一步搭建Nuget私服

    大致流程:1. 通过VS创建一个Web空项目,然后通过Nuget引入Nuget.Server(目前最新版3.2.1).2. 直接将这个Web项目发布到IIS.3. 通过nuget.exe打包*.nup ...

  6. python封装和解构

    封装 将多个值使用逗号分割,组合在一起 本质上,返回一个元组,只是省略了小括号 python的特有的语法,被很多语言学习借鉴 t1 = (1,2) #定义元组 t2 = 1,2 #将1和2封装成元组 ...

  7. 【FFMPEG】【ARM-Linux开发】arm上安装FFMPEG

    交叉编译工具下载地址 : https://launchpad.net/linaro-toolchain-binaries/+download 其中我下载的是 : gcc-linaro-arm-linu ...

  8. python 3 获取本机公网ip的几种方法

    参考博客:https://blog.csdn.net/conquerwave/article/details/77666226 from urllib.request import urlopen f ...

  9. Scrapy payload 报错400

    首先Scrapy 发送payload请求格式如下: def start_requests(self): querystr = { "ctoken": "U-ang1zmp ...

  10. 如何配置kindeditor的工具栏

    kindeditor编辑器的工具栏主要是指编辑器输入框上方的那些可以操作的菜单,默认情况下编辑器是给予了所有的工具栏.针对不同的用户,不同的项目,不同的环境,可能就需要保留部分工具栏.那么我们应该如何 ...