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 título: Dicionários de Significados Alterados
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485.yml 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 título: Dicionário de Plantas com Outros Significados
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_B6.yml 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 título: Dicionário de Plantas com Outros Significados
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_B6_p_NT.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_B6_p_NT.yml
68745/eM485/33:
"68745/eM485/33": título: Dicionário de Números com Outros Significados
título : "Dicionário de Números com Outros Significados"
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_33.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_33.yml
68745/eM485/33.37:
"68745/eM485/33.37": título: Dicionário de Números com Outros Significados
título : "Dicionário de Números com Outros Significados"
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_33_p_37.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eM485_b_33_p_37.yml
68745/eMR8J.4N:
"68745/eMR8J.4N": título: As funções trigonométricas circulares e hiperbólicas
título: "As funções trigonométricas circulares e hiperbólicas"
formato: Livro Impresso formato: Livro Impresso
autor: Sandro Marcos Guzzo autor: Sandro Marcos Guzzo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMR8J_p_4N.yml 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 título: As funções trigonométricas circulares e hiperbólicas
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Sandro Marcos Guzzo autor: Sandro Marcos Guzzo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMR8J.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eMR8J.yml
68745/eMPTN.f7:
"68745/eMPTN.f7": título: 'As fábulas: O lobo e o cordeiro, A raposa e as uvas'
título: "As fábulas: O lobo e o cordeiro, A raposa e as uvas"
formato: Livro Impresso formato: Livro Impresso
autor: Padre Marcos André, Márcio Moitinha autor: Padre Marcos André, Márcio Moitinha
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMPTN_p_f7.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eMPTN_p_f7.yml
68745/eMPTN:
"68745/eMPTN": título: 'As fábulas: O lobo e o cordeiro, A raposa e as uvas'
título: "As fábulas: O lobo e o cordeiro, A raposa e as uvas"
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Padre Marcos André, Márcio Moitinha autor: Padre Marcos André, Márcio Moitinha
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMPTN.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eMPTN.yml
68745/eMdbp.tm:
"68745/eMdbp.tm": título: 'Jean: entre jogos e brincadeiras'
título: "Jean: entre jogos e brincadeiras"
formato: Livro Impresso 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 link_metadados: https://ark.livro.online/ark_dp_68745_b_eMdbp_p_tm.yml
68745/eMdbp:
"68745/eMdbp": título: 'Jean: entre jogos e brincadeiras'
título: "Jean: entre jogos e brincadeiras"
formato: Livro Digital (online) 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 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 título: Dicionário de Onomatopeias e Vocábulos Expressivos de Monteiro Lobato
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_TM_p_nG.yml 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 título: Dicionário de Onomatopeias e Vocábulos Expressivos de Monteiro Lobato
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_TM.yml 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 título: Dicionário de Onomatopeias e Neologismos de Mário de Andrade
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_pM.yml 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 título: Dicionário de Onomatopeias e Neologismos de Mário de Andrade
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_pM_p_MG.yml 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 título: Dicionário de Vocábulos Populares da Língua Portuguesa
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNQM.yml 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 título: Dicionário de Vocábulos Populares da Língua Portuguesa
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNQM_p_gm.yml 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 título: Dicionário das 1000 Expressões Inéditas na Língua Portuguesa do Brasil
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMm5p.yml 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 título: Dicionário das 1000 Expressões Ineddar na Língua Portuguesa do Brasil
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMm5p_p_g4.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eMm5p_p_g4.yml
68745/eMMN2:
"68745/eMMN2":
título: Figuras de Linguagem título: Figuras de Linguagem
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2.yml
68745/eMMN2/f6:
"68745/eMMN2/f6":
título: Dicionário de Pleonasmo título: Dicionário de Pleonasmo
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_f6.yml 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 título: Dicionário de Pleonasmo
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_f6_p_b9.yml 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 título: Dicionário de Antanáclases
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_TD.yml 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 título: Dicionário de Antanáclases
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_TD_p_qR.yml 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 título: Dicionário de Antonomásia
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_DB.yml 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 título: Dicionário de Antonomásia
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_DB_p_n4.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eMMN2_b_DB_p_n4.yml
68745/eM37B:
"68745/eM37B":
título: Escritores Brasileiros título: Escritores Brasileiros
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B.yml
68745/eM37b/qQ:
"68745/eM37b/qQ": título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de Andrade Andrade
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_qQ.yml link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_qQ.yml
68745/eM37B/qQ.7D:
"68745/eM37B/qQ.7D": título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de
título: Dicionário de Onomatopeias e Vocábulos Expressivos de Carlos Drummond de Andrade Andrade
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eM37B_b_qQ_p_7D.yml 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 título: Dicionário de Onomatopeias e Vocábulos Expressivos
formato: Livro Digital (online) formato: Livro Digital (online)
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNBr.yml 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 título: Dicionário de Onomatopeias e Vocábulos Expressivos
formato: Livro Impresso formato: Livro Impresso
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMNBr_p_Bh.yml 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 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 autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMJh3.yml 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 título: Dicionário De Nomes Nas Canções De Caetano Veloso
formato: Livro Digital (online) quando for publicado formato: Livro Digital (online) quando for publicado
autor: Wagner Azevedo autor: Wagner Azevedo
link_metadados: https://ark.livro.online/ark_dp_68745_b_eMJh3_b_8N.yml 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 título: Dicionário De Nomes Nas Canções De Gilberto Gil
formato: Livro Digital (online) quando for publicado formato: Livro Digital (online) quando for publicado
autor: Wagner Azevedo autor: Wagner Azevedo

View File

@ -24,7 +24,9 @@ def main():
config_geral = { config_geral = {
"prefixo": "eM", # Você pode escolher o melhor para você ou deixar uma string vazia se não quiser usar prefixo "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 "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. "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 "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": 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_. # 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 # pegando as configurações gerais
prefixo = config_geral["prefixo"] prefixo = config_geral["prefixo"]
qtde_digitos = config_geral["qtde_digitos"]
naan = config_geral["naan"] naan = config_geral["naan"]
simbolos = config_geral["simbolos"] 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) print(BLUE+"\nCriando o identificador ARK...\n"+RESET)
while True: while True:
# criando o ARK de nível 1
if nivel == "1":
ark = naan + "/" + prefixo 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): 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 += simbolos[numero_sorteado]
ark_filtrado = filtrar(config_geral, ark) ark_filtrado = filtrar(ark)
nome_arquivo_ark_yml = ark_filtrado + ".yml" 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 # 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]: 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 # 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]} dados_yaml[chave_primaria_yaml] = {'ark' : ark, **dados_yaml[chave_primaria_yaml]}
# Salve os dados atualizados no arquivo original # Salve os dados atualizados no arquivo original
with open(metadados, 'w', encoding='utf-8') as arquivo_yaml: with open(metadados, 'w', encoding='utf-8') as arquivo_yaml:
yaml.dump(dados_yaml, arquivo_yaml, default_style='', sort_keys=False, allow_unicode=True) 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' # Crie um novo dicionário contendo apenas os dados da chave_primaria_yaml 'moan-dados'
metadados_yaml_a_gravar = dados_yaml[chave_primaria_yaml] 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 # Converta os dados para JSON
metadados_json_a_gravar = json.dumps(dados_yaml[chave_primaria_yaml], ensure_ascii=False, indent=2) 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) 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) time.sleep(2)
@ -238,13 +335,173 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
break 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")