Skip to content

Commit 1301f4b

Browse files
authored
Merge pull request mouredev#7153 from rigo93acosta/main
mouredev#45 - Python
2 parents ac2554f + c7e9d0a commit 1301f4b

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
"""
2+
/*
3+
* EJERCICIO:
4+
* GitHub ha publicado el Octoverse 2024, el informe
5+
* anual del estado de la plataforma:
6+
* https://octoverse.github.com
7+
*
8+
* Utilizando el API de GitHub, crea un informe asociado
9+
* a un usuario concreto.
10+
*
11+
* - Se debe poder definir el nombre del usuario
12+
* sobre el que se va a generar el informe.
13+
*
14+
* - Crea un informe de usuario basándote en las 5 métricas
15+
* que tú quieras, utilizando la informración que te
16+
* proporciona GitHub. Por ejemplo:
17+
* - Lenguaje más utilizado
18+
* - Cantidad de repositorios
19+
* - Seguidores/Seguidos
20+
* - Stars/forks
21+
* - Contribuciones
22+
* (lo que se te ocurra)
23+
*/
24+
"""
25+
26+
import requests
27+
from collections import defaultdict
28+
29+
base_url = "https://api.github.com/users/"
30+
31+
def get_user_info(username):
32+
33+
user_data = requests.get(base_url + username).json()
34+
35+
if "status" in user_data and user_data["status"] == "404":
36+
return None
37+
else:
38+
return user_data
39+
40+
def get_info_basic(data):
41+
42+
print(f"Name: {data.get('name', 'No name')}")
43+
print(f"Company: {data.get('company', 'No company')}")
44+
print(f"Total de repos: {data.get('public_repos', 0)}")
45+
print(f"Followers: {data.get('followers', 0)}")
46+
print(f"Following: {data.get('following', 0)}")
47+
48+
def get_info_repos(repos_url):
49+
## Esta peticion se puede paginar si el usuario
50+
## tiene muchos repositorios
51+
repos_data = requests.get(repos_url).json()
52+
my_langauges = defaultdict(int)
53+
54+
for repo in repos_data:
55+
lang = repo.get("language", "No language")
56+
my_langauges[lang] += 1
57+
print(f'\nRepo: {repo.get("full_name", "No name")}')
58+
print(f'Stars: {repo.get("stargazers_count", 0)}')
59+
print(f'Forks: {repo.get("forks_count", 0)}')
60+
61+
most_lang = sorted(my_langauges.items(),
62+
key=lambda x: x[1],
63+
reverse=True)[0][0]
64+
65+
print(f"\nLenguajes utilizados: {most_lang}")
66+
if __name__ == "__main__":
67+
68+
username = input("Introduce el nombre de usuario de GitHub: ")
69+
user_info = get_user_info(username)
70+
71+
if user_info != None:
72+
print(f"Informe para el usuario: {username}")
73+
get_info_basic(user_info)
74+
repos_url = user_info["repos_url"]
75+
get_info_repos(repos_url)
76+
77+
else:
78+
print(f"El usuario {username} no existe")

0 commit comments

Comments
 (0)