Rafael Tavares Juliani 9ceca45ccf INÍCIO
2025-09-04 15:47:05 -03:00

201 lines
6.3 KiB
Python
Executable File

import yaml
# Função para abrir e carregar o arquivo YAML
def load_yaml_file(filename):
with open(filename, 'r', encoding='utf-8') as file:
return yaml.safe_load(file)
# Função para salvar o arquivo YAML
def save_yaml_file(data, filename):
with open(filename, 'w', encoding='utf-8') as file:
yaml.dump(data, file, default_flow_style=False, allow_unicode=True, sort_keys=False)
# Abrir o arquivo _moan-config.yml e extrair as informações necessárias
moan_config = load_yaml_file('_moan-config.yml')
# Abrir _quarto.yml
quarto_data = load_yaml_file('_quarto.yml')
metadados_total = moan_config.get('metadados', {})
metadados = metadados_total.get('global', {})
site_url = ''
# Mover conteúdo de pasta-livro-finalizado para output-dir em _quarto-html.yml e _quarto-pdf.yml, definir o site_url completo e atualizar o campo capa
output_dirs = moan_config.get('pasta-livro-finalizado', {})
for file_suffix in ['-html', '-pdf']:
output_dir_key = 'html' if file_suffix == '-html' else 'pdf'
output_dir = output_dirs.get(output_dir_key, '')
# Processar _quarto-html.yml e _quarto-pdf.yml
filename = f'_quarto{file_suffix}.yml'
data = load_yaml_file(filename)
# Atualizar output-dir em project
if 'project' not in data:
data['project'] = {}
data['project']['output-dir'] = output_dir
# Montar site-url completo
if output_dir_key == 'html':
site_url = moan_config.get('site-de-publicacao', '') + '/' + output_dir
endereco_capa = site_url + '/' + metadados.get('capa', '')
# atualizar campo capa em moan-dados.
metadados['capa'] = endereco_capa
# Configurar moan-dados
if 'moan-dados' not in data:
data['moan-dados'] = {}
moan_dados = data.get('moan-dados', {}) # Obtém os metadados existentes ou cria um dicionário vazio
metadados_especificos_sem_ark = metadados_total.get(output_dir_key, {})
if 'ark' in moan_dados:
ark = moan_dados['ark']
metadados_especificos = {"ark": ark, **metadados_especificos_sem_ark, **metadados}
data['moan-dados'] = metadados_especificos
else:
data['moan-dados'] = {**metadados_especificos_sem_ark, **metadados}
# Salvar as alterações
save_yaml_file(data, filename)
# Processar as alterações em _quarto-html.yml e _quarto-pdf.yml
for file_suffix in ['-html', '-pdf']:
capitulos_a_excluir_key = 'html' if file_suffix == '-html' else 'pdf'
capitulos_a_excluir = moan_config['capitulos-a-excluir'].get(capitulos_a_excluir_key, [])
# Processar _quarto-html.yml e _quarto-pdf.yml
filename = f'_quarto{file_suffix}.yml'
data = load_yaml_file(filename)
# Adicionar metadados a moan-dados
moan_dados = data.get('moan-dados', {}) # Obtém os metadados existentes ou cria um dicionário vazio
moan_dados = {**moan_dados, **metadados} # Adiciona ou atualiza os novos metadados
data['moan-dados'] = moan_dados
# Processar capitulos
capitulos = moan_config.get('capitulos', [])
capitulos = [capitulo for capitulo in capitulos if capitulo not in capitulos_a_excluir]
if 'book' not in data:
data['book'] = {}
if 'chapters' not in data['book']:
data['book']['chapters'] = []
data['book']['chapters'] = capitulos
# Salvar as alterações
save_yaml_file(data, filename)
# Atualizar as chaves em book
if 'book' in quarto_data:
book = quarto_data['book']
metadados_html = metadados_total.get('html', {})
metadados_pdf = metadados_total.get('pdf', {})
politica_de_cookies = moan_config.get('url-politica-de-cookies', '')
cookie_consent = book.get('cookie-consent', {})
# Atualizando o valor de 'policy-url'
cookie_consent['policy-url'] = politica_de_cookies
data = metadados_html.get('data', metadados_pdf.get('data', ''))
partes = data.split("/")
# Reorganizando as partes da data
data_formatada = partes[2] + "-" + partes[1] + "-" + partes[0]
# Atualizar sidebar.tools
sidebar = book.get("sidebar", {})
tools = sidebar.get("tools", [])
# Pegar o output_dir para HTML e montar URL_LIVRO
output_dir_html = output_dirs.get("html", "")
URL_LIVRO = output_dir_html
# Garantir que seja lista
if not isinstance(tools, list):
tools = []
git_item = {
"icon": "bi bi-git",
"text": "Alterações e Versões",
"href": f"https://gitea.livro.online/editoramoan/{URL_LIVRO}/commits/branch/main",
}
# Inserir na segunda posição
if len(tools) >= 1:
tools.insert(1, git_item)
else:
tools.append(git_item)
sidebar["tools"] = tools
book["sidebar"] = sidebar
status = metadados_html.get('status', 'indisponível')
book.update({
'site-url': site_url,
'status': status,
'isbn': metadados_html.get('isbn', metadados_pdf.get('isbn', '')),
'title': metadados.get('título', ''),
'subtitle': metadados.get('subtítulo', ''),
'author': metadados.get('autor', ''),
'description': metadados.get('descrição', ''),
'language': metadados.get('idioma', ''),
'publisher': metadados.get('editora', ''),
'edition': metadados.get('edição', ''),
'editor': metadados.get('editor', ''),
'date': data_formatada,
'publisher-place': metadados.get('local', ''),
'license': metadados.get('licença', ''),
'cookie-consent': cookie_consent
})
# Salvar as alterações em _quarto.yml
save_yaml_file(quarto_data, '_quarto.yml')
# Pegar ficha catalográfica e verificar se é publicação independente ou não
ficha = moan_config.get('ficha-catalográfica', {})
# Abrir o arquivo _quarto-pdf.yml e carregar seu conteúdo
dados = load_yaml_file("_quarto-pdf.yml")
# Verificar se há a chave 'ficha-catalográfica'
if 'ficha-catalográfica' in dados:
# Se existir, substituir seu valor pelo valor de 'ficha'
dados['ficha-catalográfica'] = ficha
else:
# Se não houver, criar a chave e atribuir o valor de 'ficha' a ela
dados['ficha-catalográfica'] = ficha
dados['possui-editora'] = moan_config.get('possui-editora', 'false')
save_yaml_file(dados, "_quarto-pdf.yml")