import os
import logging
from datetime import datetime
# --- Configuração básica do Logging ---
logging.basicConfig(
level=logging.INFO,
format='%(levelname)s: %(message)s'
)
# --- Bloco de Definições Reutilizáveis ---
def criar_pasta_modelo():
'''
Verifica se a pasta 'modelo' já existe e a cria se necessário.
'''
nome_da_pasta = 'modelo'
try:
if not os.path.exists(nome_da_pasta):
os.makedirs(nome_da_pasta)
logging.info(f"A pasta '{nome_da_pasta}' foi criada com sucesso!")
else:
logging.info(f"A pasta '{nome_da_pasta}' já existe, nenhuma ação foi necessária.")
except OSError as e:
logging.error(f"Não foi possível criar a pasta '{nome_da_pasta}'. Erro: {e}")
class Musica:
'''
Classe para armazenar informações detalhadas sobre uma música e seu artista.
'''
def __init__(self, nome_musica, estilo, ano_lancamento, nome_artista, nacionalidade, estilos_musicais_artista, duracao):
ano_atual = datetime.now().year
if not (isinstance(ano_lancamento, int) and len(str(ano_lancamento)) == 4 and ano_lancamento <= ano_atual):
raise ValueError(f'Ano de lançamento inválido: {ano_lancamento}.')
self.nome_musica = str(nome_musica)
self.estilo = str(estilo)
self.ano_lancamento = ano_lancamento
self.artista = {
'nome': str(nome_artista),
'nacionalidade': str(nacionalidade),
'estilos': str(estilos_musicais_artista)
}
self.duracao = str(duracao)
def __str__(self):
info_musica = f'Música: {self.nome_musica}\n - Estilo: {self.estilo}\n - Ano: {self.ano_lancamento}\n - Duração: {self.duracao}\n'
info_artista = f'Artista: {self.artista['nome']}\n - Nacionalidade: {self.artista['nacionalidade']}\n - Gêneros do Artista: {self.artista['estilos']}'
return f'--- Detalhes da Faixa ---\n{info_musica}{info_artista}\n--------------------------'
# --- Bloco de Execução Principal (Apenas para teste) ---
if __name__ == '__main__':
# Este código abaixo só roda quando você executa este arquivo diretamente.
# Ele não será executado se você importar a classe Musica em outro projeto.
print("--- Realizando teste de execução do módulo ---")
# 1. Garante que a pasta exista
criar_pasta_modelo()
# 2. Tenta criar um objeto Musica válido
try:
minha_musica = Musica(
nome_musica='Bohemian Rhapsody',
estilo='Rock',
ano_lancamento=1975,
nome_artista='Queen',
nacionalidade='Britânica',
estilos_musicais_artista='Rock, Glam Rock, Hard Rock',
duracao='5:55'
)
logging.info('Objeto Musica criado com sucesso.')
logging.info(f'\n{minha_musica}')
except ValueError as e:
logging.error(f'Falha ao criar o objeto Musica: {e}')
print("\n--- Fim do teste ---")