-
Notifications
You must be signed in to change notification settings - Fork 0
/
myrepos.py
131 lines (117 loc) · 5.13 KB
/
myrepos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import requests
import subprocess
import os
import shutil
import sys
def get_repo_list(username, page=1):
per_page = 100
url = f"https://api.github.com/users/{username}/repos?page={page}&per_page={per_page}"
response = requests.get(url)
repos = response.json()
total_pages = 1
link_header = response.headers.get('link')
if link_header:
links = link_header.split(',')
for link in links:
if 'rel="last"' in link:
total_pages = int(link[link.find('page=')+5:link.find('&')])
return repos, total_pages
def download_repo(username, repo_name, clone_url, historico_scripts):
if os.path.exists(repo_name):
try:
print(f"Removendo diretório existente '{repo_name}'...")
shutil.rmtree(repo_name)
except Exception as e:
print(f"Erro ao remover diretório '{repo_name}': {e}")
clone_command = f"git clone {clone_url} {repo_name}"
try:
subprocess.run(clone_command, shell=True, check=True)
print(f"Repositório '{repo_name}' clonado com sucesso.")
historico_scripts.append(repo_name) # Adiciona ao histórico de scripts
return get_repo_list(username) # Retorna para a função get_repo_list
except subprocess.CalledProcessError as e:
print(f"Erro ao clonar o repositório '{repo_name}'. Código de erro: {e.returncode}")
return None, 0
def update_script(username):
try:
print("Atualizando o script...")
subprocess.run("git pull", shell=True, check=True)
print("Script atualizado com sucesso.")
return get_repo_list(username) # Retorna para a função get_repo_list
except subprocess.CalledProcessError as e:
print(f"Erro ao atualizar o script. Código de erro: {e.returncode}")
return None, 0
def search_repos(repos, search_query):
results = []
for repo in repos:
if search_query.lower() in repo['name'].lower():
results.append(repo)
else:
readme_url = f"https://raw.githubusercontent.com/{repo['full_name']}/master/README.md"
readme_response = requests.get(readme_url)
if readme_response.status_code == 200:
readme_content = readme_response.text.lower()
if search_query.lower() in readme_content:
results.append(repo)
return results
username = "Jeanpseven"
repos, total_pages = get_repo_list(username)
historico_scripts = [] # Inicializa o histórico de scripts
while True:
print(f"Repositórios disponíveis para {username} (Página 1/{total_pages}):")
for index, repo in enumerate(repos, start=1):
print(f"{index}. {repo['name']}")
print("\nOpções:")
print("1. Baixar um repositório")
print("2. Listar mais repositórios")
print("3. Pesquisar repositórios")
print("4. Atualizar o script")
print("5. Sair")
choice = input("Escolha uma opção (1/2/3/4/5): ")
if choice == '1':
repo_number = input("Digite o número do repositório para baixar: ")
try:
repo_index = int(repo_number) - 1
if 0 <= repo_index < len(repos):
repo = repos[repo_index]
repo_name = repo['name']
repo_clone_url = repo['clone_url']
repos, total_pages = download_repo(username, repo_name, repo_clone_url, historico_scripts)
else:
print("Número de repositório inválido.")
except ValueError:
print("Entrada inválida. Digite um número válido.")
elif choice == '2':
page = len(repos) // 100 + 1 # Calcula a próxima página
if page <= total_pages:
repos, total_pages = get_repo_list(username, page)
else:
print("Não há mais repositórios disponíveis.")
elif choice == '3':
search_query = input("Digite o termo de pesquisa: ")
search_results = search_repos(repos, search_query)
if search_results:
print("\nResultados da pesquisa:")
for index, repo in enumerate(search_results, start=1):
print(f"{index}. {repo['name']}")
else:
print("Nenhum resultado encontrado.")
elif choice == '4':
repos, total_pages = update_script(username)
elif choice == '5':
print("""
Histórico de Compras:
""")
for script in historico_scripts:
print(f"• {script}")
print("""Volte Sempre! Obrigado pela preferência
⠀⠈⢻⣆⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢻⡏⠉⠉⠉⠉⢹⡏⠉⠉⠉⠉⣿⠉⠉⠉⠉⠉⣹⠇⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠈⣿⣀⣀⣀⣀⣸⣧⣀⣀⣀⣀⣿⣄⣀⣀⣀⣠⡿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀⢸⡇⠀⠀⠀⠀⣿⠀⠀⢠⡿⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⣷⠤⠼⠷⠤⠤⠤⠤⠿⠦⠤⠾⠃⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢀⣾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢾⣷⢶⣶⠶⠶⠶⠶⠶⣶⠶⣶⡶⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠸⣧⣠⡿⠀⠀⠀⠀⠀⠀⢷⣄⣼⠇⠀⠀
""")
sys.exit(0)