<jupyter_start><jupyter_text>*Rodar notebook toda quinta-feira já que às quintas os atletas têm suas habilidades atualizadas após os treinos e os jogos da semana*<jupyter_code>import pandas as pd
from functions import clube_id_e_sessao, pega_dados, conecta_ao_db
from datetime import datetime
# Mantendo o padrão de como o sokker mostra as datas nos dados que disponibiliza
agora= str(datetime.now()).split('.')[0]

print("Data:", agora)
sessao, club_id= clube_id_e_sessao()<jupyter_output>Login: fabin99
Password: ········
Clube ID: 79085<jupyter_text>Como meu clube não pode ter valores nulos, os dos outros usuários sim (não tenho acesso a alguns dados de seus jogadores), eu insiro uma cláusula if antes de iniciar a inserção dos dados na base de dados para conferir.<jupyter_code># URL da API
url= f'https://sokker.org/xml/players-{club_id}.xml'

# Pegando os dados dos atletas
df_players= pega_dados(url, sessao, search= 'player')

# Inserindo a data de hoje que será importante para acompanharmos suas evoluções
df_players= df_players.assign(date_extracted= agora)

# Soma de valores nulos ou duplicados
nulos= df_players.isnull().sum().sum()
duplicados=  df_players.duplicated().sum()


if (nulos > 0) or (duplicados > 0):
    print('Há valores nulos ou duplicados. Confira os dados e tente novamente.')
    
else:
    print('Não há valores nulos ou duplicados. Inserindo dados na base de dados "dados.sokker.db"...')
    
    db= conecta_ao_db('dados_sokker.db')
    curs= db.cursor()
    
    df_players.to_sql('players', con=db, if_exists='append', index= False) 
    print('Dados extraídos com sucesso!')
df = pd.read_sql_query("SELECT * FROM players", db)
df
len(df)
# Salvando alterações
db.commit()

# Fechando conexão com a base de dados
db.close()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10089186176142698, 'fraction_numerical': 0.005574136008918618, 'mean_word_length': 5.126279863481229, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 10, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '257849', 'license': 'MIT', 'n_tokens_mistral': 696, 'n_tokens_neox': 669, 'n_words': 203, 'path': 'dados/.ipynb_checkpoints/ExtracaoJogadores-checkpoint.ipynb', 'repo_name': 'Fabiano23/sokker_manager_data', 'size': '1794'}