-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
105 lines (94 loc) · 3.25 KB
/
main.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
import util_musics
import util_users
from util_musics import *
from util_users import *
create_user_with_name("Guilherme Rodrigues", 18)
create_user_with_name("Gustavo Rodrigues", 18)
create_user_with_name("Pedro Cunha", 18)
create_user_with_name("Tiago Reis", 27)
create_user_with_name("Elieser dos Santos", 54)
insert_music("Tikiti", "Azhunky", 2024, "musicas azhunky", 4)
insert_music("sheets", "jhfly", 2016, "sounds and things",5)
insert_music("Demon", "imagine", 2013, "LOOM", 1)
insert_music("Mockingbird", "Eminem", 2010, "Bodied", 2)
insert_music("Thriller", "Michael Jackson", 2009, "Thriller", 3)
def ask_user_prompt(_user):
"""
Main page of the program. Has all the main prompts to display/insert information or quit.
:param _user: The current user's object (includes id and name)
"""
name = _user[1]
print(f'\nOlá {name}!')
options = {
'1': lambda: insert_music(input('Titulo -> '), input('Artista -> '), input('Ano -> '), input('Álbum -> '), _user[0]),
'2': lambda: change_favorite_song(_user[0], input('Qual é o título da música? ')),
'3': print_all_users,
'4': print_all_songs,
'5': print_user_songs,
'6': print_recent_songs,
'7': logout,
'8': lambda: quit(f'\nAté logo!\n')
}
while True:
choice = input(
f"\nEscolha uma opção:"
f"\n(1) Adicionar Música"
f"\n(2) Alterar Música favorita"
f"\n(3) Ver utilizadores"
f"\n(4) Todas as Músicas"
f"\n(5) As minhas Músicas"
f"\n(6) Músicas mais recentes"
f"\n(7) Mudar de Utilizador"
f"\n(8) Sair"
f"\nEscolha uma opção: "
)
action = options.get(choice)
if action:
action()
else:
print("Opção inválida. Tente novamente.")
def change_favorite_song(user_id, title):
"""
Changes the current user's favorite song.
:param user_id: Current user id.
:param title: Song title.
:return:
"""
song = find_music(title)
if song:
change_user_favorite_song(user_id, song[0])
print(f"A música favorita foi alterada para '{title}'.")
else:
print("Não foi possível alterar a música favorita.")
def logout():
"""
Prints a goodbye message to the current user and points back to log in.
:return:
"""
print(f'\nAdeus, {util_users.username}')
login()
def login():
"""
The starting point of the app. Asks for the username and logs/registers the user.
"""
user_name = input("\nQual é o seu nome? ")
user = find_user_by_name(user_name)
util_musics.username = user_name
util_users.username = user_name
if user:
util_musics.uid = user[0]
util_users.uid = user[0]
ask_user_prompt(user)
else:
prompt_create_user = input(f"Utilizador '{user_name}' não encontrado."
f"\nCriar novo utilizador?"
f"\n(1) Sim"
f"\n(2) Não\n")
match prompt_create_user:
case '1':
create_user_with_name(user_name)
login()
case _:
quit('Até logo!')
print("\n-------------------Bem-vind@ ao Sonix!-------------------")
login()