201 lines
6.3 KiB
Python
Executable File
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")
|