75 lines
1.8 KiB
Python
75 lines
1.8 KiB
Python
|
#!/usr/bin/python3
|
||
|
# -*- coding: utf-8 -*-
|
||
|
# Bench delete gitee repos
|
||
|
# 批量删除 gitee 代码仓库
|
||
|
# Author: TianLun Song <tianlun.song at foxmail.com>
|
||
|
# License: MIT
|
||
|
# Path: bench-delete-gitee-repo.py
|
||
|
# require: requests
|
||
|
# usage: python3 delete.py
|
||
|
# install requests: pip3 install requests
|
||
|
|
||
|
import requests
|
||
|
import json
|
||
|
|
||
|
AccessToken = '<YOUR GITEE ACCESS TOKEN>'
|
||
|
BaseHost = 'https://gitee.com/api/v5'
|
||
|
|
||
|
def get_all_repos(repos=None):
|
||
|
if repos is None:
|
||
|
repos = []
|
||
|
|
||
|
page = 1
|
||
|
while True:
|
||
|
reposRaw = get_repos(page)
|
||
|
if len(reposRaw) == 0:
|
||
|
break
|
||
|
repos += parse_repos_raw(reposRaw)
|
||
|
page += 1
|
||
|
|
||
|
return repos
|
||
|
|
||
|
|
||
|
def get_repos(page=1):
|
||
|
r = requests.get(BaseHost + '/user/repos',
|
||
|
params={
|
||
|
'access_token': AccessToken,
|
||
|
'page': page
|
||
|
})
|
||
|
|
||
|
return json.loads(r.text)
|
||
|
|
||
|
|
||
|
def parse_repos_raw(reposRaw, rapos=None):
|
||
|
if rapos is None:
|
||
|
rapos = []
|
||
|
repos = []
|
||
|
|
||
|
for repo in reposRaw:
|
||
|
repos.append(
|
||
|
{
|
||
|
'name': repo['name'],
|
||
|
'owner': repo['owner']['login'],
|
||
|
'full_name': repo['full_name']
|
||
|
}
|
||
|
)
|
||
|
|
||
|
return repos
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
repos = []
|
||
|
print('Start to get all repos...')
|
||
|
repos = get_all_repos(repos)
|
||
|
for repo in repos:
|
||
|
print("'%s'," % (repo['name']))
|
||
|
print('Start to delete repo: ' + repo['full_name'])
|
||
|
r = requests.delete(BaseHost + '/repos/' + repo['full_name'],
|
||
|
params={
|
||
|
'access_token': AccessToken,
|
||
|
'owner': repo['owner'],
|
||
|
'repo': repo['name']
|
||
|
})
|
||
|
print(r.text)
|
||
|
print('repos count: %d' % len(repos))
|