Conclusão do script Python Gerador ARK

This commit is contained in:
Rafael Tavares Juliani 2023-10-18 19:54:28 -03:00
parent 0e5f1d3467
commit 5a3688abf7
3 changed files with 580 additions and 347 deletions

View File

@ -1,202 +1,178 @@
"68745/eM485":
68745/eM485:
título: Dicionários de Significados Alterados
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485.yml
"68745/eM485/B6":
68745/eM485/B6:
título: Dicionário de Plantas com Outros Significados
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_B6.yml
"68745/eM485/B6.NT":
68745/eM485/B6.NT:
título: Dicionário de Plantas com Outros Significados
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_B6_p_NT.yml
"68745/eM485/33":
título : "Dicionário de Números com Outros Significados"
68745/eM485/33:
título: Dicionário de Números com Outros Significados
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_33.yml
"68745/eM485/33.37":
título : "Dicionário de Números com Outros Significados"
68745/eM485/33.37:
título: Dicionário de Números com Outros Significados
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_33_p_37.yml
"68745/eMR8J.4N":
título: "As funções trigonométricas circulares e hiperbólicas"
68745/eMR8J.4N:
título: As funções trigonométricas circulares e hiperbólicas
formato: Livro Impresso
autor: Sandro Marcos Guzzo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMR8J_p_4N.yml
"68745/eMR8J":
68745/eMR8J:
título: As funções trigonométricas circulares e hiperbólicas
formato: Livro Digital (online)
autor: Sandro Marcos Guzzo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMR8J.yml
"68745/eMPTN.f7":
título: "As fábulas: O lobo e o cordeiro, A raposa e as uvas"
68745/eMPTN.f7:
título: 'As fábulas: O lobo e o cordeiro, A raposa e as uvas'
formato: Livro Impresso
autor: Padre Marcos André, Márcio Moitinha
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMPTN_p_f7.yml
"68745/eMPTN":
título: "As fábulas: O lobo e o cordeiro, A raposa e as uvas"
68745/eMPTN:
título: 'As fábulas: O lobo e o cordeiro, A raposa e as uvas'
formato: Livro Digital (online)
autor: Padre Marcos André, Márcio Moitinha
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMPTN.yml
"68745/eMdbp.tm":
título: "Jean: entre jogos e brincadeiras"
68745/eMdbp.tm:
título: 'Jean: entre jogos e brincadeiras'
formato: Livro Impresso
autor: Diullye Miola (Autora e organizadora), Demitry Wallace dos Santos (Autor e Ilustrador), Guilherme Bigilini, Gustavo Cosmo Rodrigues, Helena Sgarbi de Oliveira, Isabella de Morais Santos, João Pedro Miranda FernandesLucas Pietruszynski de Souza, Mariana Martins Meyer, Mateus Possa Tonini, Murilo Pompeu Brandalize Nascimento
autor: Diullye Miola (Autora e organizadora), Demitry Wallace dos Santos (Autor
e Ilustrador), Guilherme Bigilini, Gustavo Cosmo Rodrigues, Helena Sgarbi de Oliveira,
Isabella de Morais Santos, João Pedro Miranda FernandesLucas Pietruszynski de
Souza, Mariana Martins Meyer, Mateus Possa Tonini, Murilo Pompeu Brandalize Nascimento
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMdbp_p_tm.yml
"68745/eMdbp":
título: "Jean: entre jogos e brincadeiras"
68745/eMdbp:
título: 'Jean: entre jogos e brincadeiras'
formato: Livro Digital (online)
autor: Diullye Miola (Autora e organizadora), Demitry Wallace dos Santos (Autor e Ilustrador), Guilherme Bigilini, Gustavo Cosmo Rodrigues, Helena Sgarbi de Oliveira, Isabella de Morais Santos, João Pedro Miranda FernandesLucas Pietruszynski de Souza, Mariana Martins Meyer, Mateus Possa Tonini, Murilo Pompeu Brandalize Nascimento
autor: Diullye Miola (Autora e organizadora), Demitry Wallace dos Santos (Autor
e Ilustrador), Guilherme Bigilini, Gustavo Cosmo Rodrigues, Helena Sgarbi de Oliveira,
Isabella de Morais Santos, João Pedro Miranda FernandesLucas Pietruszynski de
Souza, Mariana Martins Meyer, Mateus Possa Tonini, Murilo Pompeu Brandalize Nascimento
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMdbp.yml
"68745/eM37B/TM.nG":
68745/eM37B/TM.nG:
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Monteiro Lobato
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_TM_p_nG.yml
"68745/eM37B/TM":
68745/eM37B/TM:
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Monteiro Lobato
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_TM.yml
"68745/eM37B/pM":
68745/eM37B/pM:
título: Dicionário de Onomatopeias e Neologismos de Mário de Andrade
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_pM.yml
"68745/eM37B/pM.MG":
68745/eM37B/pM.MG:
título: Dicionário de Onomatopeias e Neologismos de Mário de Andrade
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_pM_p_MG.yml
"68745/eMNQM":
68745/eMNQM:
título: Dicionário de Vocábulos Populares da Língua Portuguesa
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNQM.yml
"68745/eMNQM.gm":
68745/eMNQM.gm:
título: Dicionário de Vocábulos Populares da Língua Portuguesa
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNQM_p_gm.yml
"68745/eMm5p":
68745/eMm5p:
título: Dicionário das 1000 Expressões Inéditas na Língua Portuguesa do Brasil
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMm5p.yml
"68745/eMm5p.g4":
68745/eMm5p.g4:
título: Dicionário das 1000 Expressões Ineddar na Língua Portuguesa do Brasil
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMm5p_p_g4.yml
"68745/eMMN2":
68745/eMMN2:
título: Figuras de Linguagem
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2.yml
"68745/eMMN2/f6":
68745/eMMN2/f6:
título: Dicionário de Pleonasmo
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_f6.yml
"68745/eMMN2/f6.b9":
68745/eMMN2/f6.b9:
título: Dicionário de Pleonasmo
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_f6_p_b9.yml
"68745/eMMN2/TD":
68745/eMMN2/TD:
título: Dicionário de Antanáclases
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_TD.yml
"68745/eMMN2/TD.qR":
68745/eMMN2/TD.qR:
título: Dicionário de Antanáclases
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_TD_p_qR.yml
"68745/eMMN2/DB":
68745/eMMN2/DB:
título: Dicionário de Antonomásia
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_DB.yml
"68745/eMMN2/DB.n4":
68745/eMMN2/DB.n4:
título: Dicionário de Antonomásia
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_DB_p_n4.yml
"68745/eM37B":
68745/eM37B:
título: Escritores Brasileiros
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B.yml
"68745/eM37b/qQ":
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de Andrade
68745/eM37b/qQ:
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de
Andrade
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_qQ.yml
"68745/eM37B/qQ.7D":
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de Andrade
68745/eM37B/qQ.7D:
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de
Andrade
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_qQ_p_7D.yml
"68745/eMNBr":
68745/eMNBr:
título: Dicionário de Onomatopeias e Vocábulos Expressivos
formato: Livro Digital (online)
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNBr.yml
"68745/eMNBr.Bh":
68745/eMNBr.Bh:
título: Dicionário de Onomatopeias e Vocábulos Expressivos
formato: Livro Impresso
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNBr_p_Bh.yml
"68745/eMJh3":
68745/eMJh3:
título: Coleção Compositores da MPB
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas Nenhum Volume Publicado Ainda
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
Nenhum Volume Publicado Ainda
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMJh3.yml
"68745/eMJh3/8N":
68745/eMJh3/8N:
título: Dicionário De Nomes Nas Canções De Caetano Veloso
formato: Livro Digital (online) quando for publicado
autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMJh3_b_8N.yml
"68745/eMJh3/mr":
68745/eMJh3/mr:
título: Dicionário De Nomes Nas Canções De Gilberto Gil
formato: Livro Digital (online) quando for publicado
autor: Wagner Azevedo

View File

@ -24,7 +24,9 @@ def main():
config_geral = {
"prefixo": "eM", # Você pode escolher o melhor para você ou deixar uma string vazia se não quiser usar prefixo
"qtde_digitos": 3, # Quantidade de dígitos sem contar o prefixo. Na Editora Moan estamos usando 3, mas você pode mudar de acordo com suas necessidades
"qtde_digitos_ark_nivel_1": 3, # Quantidade de dígitos sem contar o prefixo. Na Editora Moan estamos usando 3, mas você pode mudar de acordo com suas necessidades
"qtde_digitos_ark_nivel_2": 2, # Quantidade de dígitos para um ARK filho. Na Editora Moan estamos usando 2, mas você pode mudar de acordo com suas necessidades
"qtde_digitos_ark_nivel_3": 2, # Quantidade de dígitos para um ARK de variação. Na Editora Moan estamos usando 2, mas você pode mudar de acordo com suas necessidades
"naan": "68745", # NAAN da Editora Moan na Ark Alliance
"simbolos": "23456789bBdDfFgGhHjJmMnNpPqQrRtT", # Símbolos permitidos na geração do ark. Sinta-se a vontade, se quiser mudar.
"pasta_yaml": "yaml", # Nome da pasta em que o programa verificará se já existe o ARK gerado. Nessa pasta, são armazenados os metadados em yaml do ARK gerado
@ -80,13 +82,13 @@ def main():
elif func == "2":
atualizar_identificador_ARK()
atualizar_identificador_ARK(config_geral, metadados)
def filtrar(config_geral, ark):
def filtrar(ark):
# essa função transforma o identificador ARK na forma em que os arquivos ARK são nomeados. Um ark pode ter ":" (dois pontos), "/" (barra) ou "." (ponto). Mas isso, em um nome de arquivo atrapalha a url. Assim, transformaremos : em _dp_, / em _b_ e . em _p_.
@ -106,8 +108,6 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
# pegando as configurações gerais
prefixo = config_geral["prefixo"]
qtde_digitos = config_geral["qtde_digitos"]
naan = config_geral["naan"]
simbolos = config_geral["simbolos"]
@ -122,15 +122,39 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
# criando o ARK de nível 1
if nivel == "1":
print(BLUE+"\nCriando o identificador ARK...\n"+RESET)
while True:
# criando o ARK de nível 1
if nivel == "1":
ark = naan + "/" + prefixo
qtde_digitos = config_geral["qtde_digitos_ark_nivel_1"]
# criando o ARK de nível 2, o u qualquer nível conforme o ark_pai passado
elif nivel == "2":
ark = naan + "/" + ark_pai + "/"
qtde_digitos = config_geral["qtde_digitos_ark_nivel_2"]
# criando o ARK de variação
elif nivel == "3":
ark = naan + "/" + ark_pai + "."
qtde_digitos = config_geral["qtde_digitos_ark_nivel_3"]
for i in range(qtde_digitos):
@ -139,7 +163,7 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
ark += simbolos[numero_sorteado]
ark_filtrado = filtrar(config_geral, ark)
ark_filtrado = filtrar(ark)
nome_arquivo_ark_yml = ark_filtrado + ".yml"
@ -184,27 +208,23 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
# Verifique se 'chave_primaria_yaml' (no caso da Editora Moan, ela é moan-dados) existe e 'ark' não existe dentro dele
if chave_primaria_yaml in dados_yaml and 'ark' not in dados_yaml[chave_primaria_yaml]:
# As chaves 'título', 'formato' e 'autor' são obrigatorias para geração de identificador ARK
if 'título' in dados_yaml[chave_primaria_yaml] and 'formato' in dados_yaml[chave_primaria_yaml] and 'autor' in dados_yaml[chave_primaria_yaml]:
# Adicione 'ark' ao 'chave_primaria_yaml' com o valor de ark. Quero que o ark seja a primeira chave, por isso coloquei da forma que está abaixo
dados_yaml[chave_primaria_yaml] = {'ark' : ark, **dados_yaml[chave_primaria_yaml]}
# Salve os dados atualizados no arquivo original
with open(metadados, 'w', encoding='utf-8') as arquivo_yaml:
yaml.dump(dados_yaml, arquivo_yaml, default_style='', sort_keys=False, allow_unicode=True)
else:
# Ou a chave moan-dados não foi configurada no arquivo YAML com os metadados (o arquivo _quarto.yml, no caso da Editora Moan), ou então a chave ark já existe, o que indica que você deve usar a função de atualizar, e não gerar um novo ARK.
print(RED+f"\nOu a chave chave_primaria_yaml, que está registrada como {chave_primaria_yaml} no dicionário Python config_geral no início da função main, não foi configurada no arquivo YAML com os metadados (o arquivo _quarto.yml, no caso da Editora Moan), ou então a chave ark já existe, o que indica que você deve usar a função de atualizar, e não gerar um novo ARK.\n"+RESET)
time.sleep(2)
break
# Crie um novo dicionário contendo apenas os dados da chave_primaria_yaml 'moan-dados'
metadados_yaml_a_gravar = dados_yaml[chave_primaria_yaml]
@ -217,6 +237,45 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
# Resumo dos metadados em YAML
metadados_resumo_yaml_a_gravar = {dados_yaml[chave_primaria_yaml]['ark']:
{
'título': dados_yaml[chave_primaria_yaml]['título'],
'formato': dados_yaml[chave_primaria_yaml]['formato'],
'autor': dados_yaml[chave_primaria_yaml]['autor'],
}
}
#pega o diretório atual
diretorio_atual = os.getcwd()
caminho_completo_yaml_existente = os.path.join(diretorio_atual, "ark_lista.yml")
# Abre o arquivo YAML existente em modo de leitura
with open(caminho_completo_yaml_existente, 'r', encoding='utf-8') as arquivo_yaml_existente:
# Carrega o conteúdo do arquivo YAML existente
dados_yaml_existente = yaml.load(arquivo_yaml_existente, Loader=yaml.FullLoader)
# Atualiza com os dados novos
dados_yaml_existente.update(metadados_resumo_yaml_a_gravar)
# Salve o resumo dos metadados em um novo arquivo YAML
with open(caminho_completo_yaml_existente, 'w', encoding='utf-8') as arquivo_yaml_existente:
yaml.dump(dados_yaml_existente, arquivo_yaml_existente, default_style='', sort_keys=False, allow_unicode=True, default_flow_style=False)
# Converta os dados para JSON
metadados_json_a_gravar = json.dumps(dados_yaml[chave_primaria_yaml], ensure_ascii=False, indent=2)
@ -231,6 +290,44 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
# Resumo dos metadados em JSON
metadados_resumo_json_a_gravar = {
dados_yaml[chave_primaria_yaml]['ark']: {
'título': dados_yaml[chave_primaria_yaml]['título'],
'formato': dados_yaml[chave_primaria_yaml]['formato'],
'autor': dados_yaml[chave_primaria_yaml]['autor'],
}
}
# Caminho completo para o arquivo JSON existente
caminho_completo_json_existente = os.path.join(diretorio_atual, "ark_lista.json")
# Abre o arquivo JSON existente em modo de leitura
with open(caminho_completo_json_existente, 'r', encoding='utf-8') as arquivo_json_existente:
# Carrega o conteúdo do arquivo JSON existente
dados_json_existente = json.load(arquivo_json_existente)
# Atualiza com os dados novos
dados_json_existente.update(metadados_resumo_json_a_gravar)
# Salve o resumo dos metadados em um novo arquivo JSON
with open(caminho_completo_json_existente, 'w', encoding='utf-8') as arquivo_json_existente:
json.dump(dados_json_existente, arquivo_json_existente, ensure_ascii=False, indent=2)
print(BLUE+f"\n*********************\n*********************\n\n"+GREEN+"O identificador "+YELLOW+f"'ark:{ark}'"+GREEN+" foi criado com sucesso e os seus "+YELLOW+"metadados foram gravados.\n\n"+BLUE+"*********************\n*********************\n"+RESET)
time.sleep(2)
@ -238,13 +335,173 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
break
else:
print(RED+f"\nAs chaves 'título', 'formato' e 'autor' são obrigatorias para geração de identificador ARK.\n"+RESET)
time.sleep(2)
break
def atualizar_identificador_ARK():
else:
# Ou a chave moan-dados não foi configurada no arquivo YAML com os metadados (o arquivo _quarto.yml, no caso da Editora Moan), ou então a chave ark já existe, o que indica que você deve usar a função de atualizar, e não gerar um novo ARK.
print(RED+f"\nOu a chave chave_primaria_yaml, que está registrada como {chave_primaria_yaml} no dicionário Python config_geral no início da função main, não foi configurada no arquivo YAML com os metadados (o arquivo _quarto.yml, no caso da Editora Moan), ou então a chave ark já existe, o que indica que você deve usar a função de atualizar, e não gerar um novo ARK.\n"+RESET)
time.sleep(2)
break
def atualizar_identificador_ARK(config_geral, arquivo_atualizado):
# pegando as configurações gerais
pasta_yaml = config_geral["pasta_yaml"]
pasta_json = config_geral["pasta_json"]
chave_primaria_yaml = config_geral["chave_primaria_yaml"]
if os.path.exists(arquivo_atualizado):
print(BLUE+"\nAtualizando os metadados do identificador ARK...\n"+RESET)
# Carregue o arquivo YAML com os metadados atualizados
with open(arquivo_atualizado, 'r', encoding='utf-8') as arquivo_yaml:
dados_yaml = yaml.load(arquivo_yaml, Loader=yaml.FullLoader)
ark_atualizado = dados_yaml[chave_primaria_yaml]['ark']
arquivo_yaml_a_ser_atualizado = filtrar(ark_atualizado)+".yml"
caminho_completo_atualizacao_yml = os.path.join(pasta_yaml, arquivo_yaml_a_ser_atualizado)
arquivo_json_a_ser_atualizado = filtrar(ark_atualizado)+".json"
caminho_completo_atualizacao_json = os.path.join(pasta_json, arquivo_json_a_ser_atualizado)
if os.path.exists(caminho_completo_atualizacao_yml):
# Crie um novo dicionário contendo apenas os dados da chave_primaria_yaml 'moan-dados'
metadados_yaml_a_atualizar = dados_yaml[chave_primaria_yaml]
# Salve os dados atualizados em um novo arquivo YAML
with open(caminho_completo_atualizacao_yml, 'w', encoding='utf-8') as novo_arquivo_yaml:
yaml.dump(metadados_yaml_a_atualizar, novo_arquivo_yaml, default_style='', sort_keys=False, allow_unicode=True, default_flow_style=False)
print(GREEN+"\nArquivo "+YELLOW+caminho_completo_atualizacao_yml+GREEN+" atualizado com sucesso.\n"+RESET)
else:
print(RED+"\nO arquivo "+YELLOW+caminho_completo_atualizacao_yml+RED+" não foi encontrado. Isso indica seu arquivo tem um identificador ARK, mas o mesmo não tem um arquivo de metadados YAML público.\n"+RESET)
return
# Carregue o arquivo YAML ark_lista
with open("ark_lista.yml", 'r', encoding='utf-8') as arquivo_yaml:
dados_yaml_lista = yaml.load(arquivo_yaml, Loader=yaml.FullLoader)
metadados_resumo_yaml_atualizacao = {
'título': dados_yaml[chave_primaria_yaml]['título'],
'formato': dados_yaml[chave_primaria_yaml]['formato'],
'autor': dados_yaml[chave_primaria_yaml]['autor'],
}
dados_yaml_lista[ark_atualizado] = metadados_resumo_yaml_atualizacao
with open("ark_lista.yml", 'w', encoding='utf-8') as atualizacao_arquivo_yaml:
yaml.dump(dados_yaml_lista, atualizacao_arquivo_yaml, default_style='', sort_keys=False, allow_unicode=True, default_flow_style=False)
print(GREEN+"\nArquivo "+YELLOW+"ark_lista.yml"+GREEN+" atualizado com sucesso.\n"+RESET)
if os.path.exists(caminho_completo_atualizacao_json):
# Converta os dados para JSON
metadados_json_atualizacao = json.dumps(dados_yaml[chave_primaria_yaml], ensure_ascii=False, indent=2)
# Faz a Atualização do arquivo JSON
with open(caminho_completo_atualizacao_json, 'w', encoding='utf-8') as novo_arquivo_json:
novo_arquivo_json.write(metadados_json_atualizacao)
print(GREEN+"\nArquivo "+YELLOW+caminho_completo_atualizacao_json+GREEN+" atualizado com sucesso.\n"+RESET)
# Abre o ark_lista.json em modo de leitura
with open("ark_lista.json", 'r', encoding='utf-8') as atualizacao_arquivo_json:
ark_lista_json = json.load(atualizacao_arquivo_json)
chave_atualizacao = dados_yaml[chave_primaria_yaml]['ark']
# Resumo dos metadados em JSON
ark_lista_json[chave_atualizacao].update( {
'título': dados_yaml[chave_primaria_yaml]['título'],
'formato': dados_yaml[chave_primaria_yaml]['formato'],
'autor': dados_yaml[chave_primaria_yaml]['autor'],
})
# Salve as atualizações de volta no arquivo JSON
with open("ark_lista.json", 'w', encoding='utf-8') as atualizacao_arquivo_json:
json.dump(ark_lista_json, atualizacao_arquivo_json, ensure_ascii=False, indent=2)
print(GREEN+"\nArquivo "+YELLOW+"ark_lista.json"+GREEN+" atualizado com sucesso.\n"+RESET)
else:
print(RED+"\nO arquivo "+YELLOW+caminho_completo_atualizacao_json+RED+" não foi encontrado. Isso indica seu arquivo tem um identificador ARK, mas o mesmo não tem um arquivo de metadados JSON público.\n"+RESET)
return
else:
print(RED+"\nO arquivo "+YELLOW+arquivo_atualizado+RED+" não foi encontrado.\n"+RESET)
print("Função de atualização de identificador ARK")