Github变身网络硬盘

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

于是我写了一个脚本,让程序自动完成这项工作:
原始目录架构

运行结果

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"
}
复制代码

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值