Github变身网络硬盘

我在简书写博客, 会使用markdown格式, 然后把相关资源传到百度网盘, 但最近发现百度网盘的资源经常会被取消分享, 为了彻底解决这个问题, 我把选择把资源传到Github, 博客本身的markdown格式可以作为README.md

于是我写了一个脚本,让程序自动完成这项工作:

原始目录架构

目录结构

运行结果

Github自动生成新仓库

Github自动生成新仓库

终端打印

终端打印

本地目录变化

本地目录变化

在运行脚本之前,需要按照文章 简书文章发布到GitHub, 完成秘钥对的添加!

源码:

1. 主脚本文件
# 本脚本需要提供的资源信息:
## 信息1: github账户及密码, 
## 信息2: 新建的github仓库名称(驼峰式英文名)
## 信息3: 简书的.md文档
## 信息4: 需要上传的其他文件资源(单个文件资源不超过100M)

# 本脚本完成三个任务
## 任务1: 根据用户提供的仓库名创建github仓库, 
## 任务2: 将简书.md文档作为README.md上传到github
## 任务3: 将其他文件资源(单文件不超过100M)上传到github(原来我一直放到百度盘, 后来发现百度盘分享经常挂掉, 就放弃了百度)

# 环境要求
## 1. 已经安装curl
## 2. 已经安装git

import os
import json

def getInfo():
    info = {}
    with open("./inputInfo.txt", 'r') as f:
        jsonStr = ''
        lines = f.readlines()
        # 过滤注释, 生成json格式
        for line in lines:
            if '#' not in line:
                jsonStr += line
        info = json.loads(jsonStr)

    return info

# 在github创建远程仓库
def CreateRepository(info):
    GitHubUserName = info['GitHubUserName']
    GitHubPassWord = info['GitHubPassWord']
    GitHubRepositoryName = info['GitHubRepositoryName']

    new_command = 'curl -i -u ' + '\'' +GitHubUserName + ':' + GitHubPassWord + '\'' +' -d ' + '\''+ '{"name": ' + '\"'+GitHubRepositoryName +'\"'+ ', ' + '"auto_init": ' + 'true, ' + '"private": ' + 'false, ' + '"gitignore_template": ' + '"nanoc"}' + '\'' + ' https://api.github.com/user/repos'
    result = os.popen(new_command).readlines()
    if ('HTTP/1.1 201 Created\n' in result):
        print("创建成功")
        return True
    else:
        return False
    
def GetRepository(info):

    GetAllRepCommand = 'curl -i -u ' + '\'' + info['GitHubUserName'] + ':' + info['GitHubPassWord'] +'\'' + ' https://api.github.com/user/repos'
    print(GetAllRepCommand)
    result = os.popen(GetAllRepCommand).readlines()
    keyWord = info['GitHubUserName']+'/'+info['GitHubRepositoryName']
    # 判断仓库是否创建成功
    if not (keyWord in str(result)):
        return
    # 获取仓库到同级目录下
    # git@github.com:zhaoolee/ChatRoom.git
    GetRepCommand = 'git clone git@github.com:' +  keyWord + '.git'

    # 将仓库获取到本地
    result = os.popen(GetRepCommand).readlines()

# 将资源文件放入仓库
def FillRepository(info):
    AllFileName = os.listdir('./')
    PreReadMeFile = ''
    for FileName in AllFileName:
        if FileName[-3:] == '.md':
            PreReadMeFile = FileName

    # 将md文件替换原有的README.md
    ReplaceMdFileCommand = 'cp ./' + PreReadMeFile + ' ./'+ info['GitHubRepositoryName'] + '/README.md'
    print("==>", ReplaceMdFileCommand, "<==")
    result = os.popen(ReplaceMdFileCommand).readlines()

    # 将resource文件夹, 放入仓库中
    RemoveResourceCommand = 'cp -r resource ' + './' + info['GitHubRepositoryName']
    print('RemoveResourceCommand==>', RemoveResourceCommand)
    result = os.popen(RemoveResourceCommand).readlines()

# 将文件提交到仓库
def PushRepository(info):
    inputRepository = 'cd ' + info['GitHubRepositoryName']
    addCommand = 'git add .'
    result = os.popen(inputRepository+'\n'+addCommand).readlines()
    commitCommand = 'git commit -m "完成项目的初始化"'
    result = os.popen(inputRepository+'\n'+commitCommand).readlines()
    pushCommand = 'git push'
    result = os.popen(inputRepository+'\n'+pushCommand).readlines()
    print("完成")


def main():
    # 获取信息
    info = getInfo()
    # 创建仓库, 并通过ssh保存到本地
    CreateRepository(info)
    # 将仓库git到本地
    GetRepository(info)
    # 将资源文件转入代码仓库
    FillRepository(info)
    # 将资源提交到仓库
    PushRepository(info)

if __name__ == '__main__':
    main()
2. 配置文件
{
    # 用户名
    "GitHubUserName": "zhaoolee", 
    # 用户密码
    "GitHubPassWord": "github", 
    # 将要新建的仓库
    "GitHubRepositoryName": "TestCreateRep"
}

为便于管理, 相关资源整合到一张独立的帖子,链接如下: http://www.jianshu.com/p/4f28e1ae08b1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链

Web安全常见漏洞修复建议

看各大发布漏洞的平台,发现众多挖洞大神精彩的漏洞发掘过程,但在修复建议或者修复方案处,给出千奇百怪神一般的回复,故而总结一下修复建议(才疏学浅不算太全敬请谅解,...

2206
来自专栏Django Scrapy

Ubuntu默认防火墙安装、启用、配置、端口、查看状态相关信息

最简单的一个操作: sudo ufw status(如果你是root,则去掉sudo,ufw status)可检查防火墙的状态,我的返回的是:inactive(...

4596
来自专栏闵开慧

hadoop安装配置过程总结

 一、Jdk安装 系统已经默认有安装,但不完全,所以需要自己安装 配置环境变量: 在usr下新建java文件夹,将Java7压缩文件解压在该文件夹中,并配置系统...

3606
来自专栏xingoo, 一个梦想做发明家的程序员

Winodws安装系统时,通过安装磁盘进行分区

  今天使用一个系统盘安装的时候,很奇怪,分区总是分出来一个系统磁盘,一个MBR,剩下的只能分主分区。   这样就导致我在进行windows激活时,激活工具都找...

2086
来自专栏LinXunFeng的专栏

hexo+github 搭建个人技术博客

1263
来自专栏java沉淀

centos 7 安装mysql这个版本的数据库是没有my.cnf需要创建my.cnfsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

1643
来自专栏星汉技术

原 荐 Centos 7+CDH5.7.2全

4404
来自专栏挖掘大数据

Hadoop基础教程——Hadoop单机版搭建

最近闲来无事,和朋友一起想学习Hadoop,最晚弄机器的弄到两点多,今天一起动手安装Hadoop的环境,刚开始也是一头雾水,Hadoop官网的教程我也是醉了,说...

2899
来自专栏虚拟化云计算

oVirt之软件架构全剖析

本文是从软件架构设计的角度剖析oVirt的vdsm,另外还有一篇是从功能架构设计的角度剖析oVirt。

1464
来自专栏大数据和云计算技术

hadoop运行环境搭建

森哥/洋哥hadoop系列,非常适合初学者: Hive 元数据表结构详解 HDFS学习:HDFS机架感知与副本放置策略 Yarn【label-based sch...

35711

扫码关注云+社区