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")