Compare commits

...
16 Commits
Author SHA1 Message Date
rafaeltavaresjuliani 1f37dc232d Merge branch 'main' of https://gitea.livro.online/editoramoan/moan-ark 2026-06-15 20:51:02 -03:00
rafaeltavaresjuliani d2f9414e7d (add): Adição de gestçao do Museu 2026-06-15 20:45:19 -03:00
Rafael Tavares Juliani 78e2c8d647 (Add|Fix): Adição de novo ark e correções) 2026-06-15 20:34:49 -03:00
rafaeltavaresjuliani 2b8862c5cd (ajustes): ajustes da última refatoracao. Exclusao de coisas que nao se usa mais. 2025-12-21 21:20:54 -03:00
Rafael Tavares Juliani c64609a233 (correcao): correcao de erro no require pois o nome da pasta estava errada 2025-12-21 00:09:20 -03:00
Rafael Tavares Juliani 16d3335ef2 (refatoracaoa): para adicionar funcao nova depois... oata tratamento de novo prefixo. também foi retirado a funcao de qrcode para salvar acesso no banco de dados e agora se usa o plausible analytics 2025-12-20 23:58:42 -03:00
Rafael Tavares Juliani 68bac753fd Adição do livro escrevivências 2025-12-18 16:37:35 -03:00
Rafael Tavares Juliani c0001327a0 (correcao): apontamento errado de ark 2025-11-06 17:49:51 -03:00
Rafael Tavares Juliani eacb7118b8 (Adicao): akr do Dic Eponimos e do Dic Jay Vaquer 2025-10-30 20:43:02 -03:00
Rafael Tavares Juliani caadac53e8 atualização: ajustado o apontamento do blog da Editora Moan de ARK:68745/eMT4d 2025-09-05 00:51:33 -03:00
rafaeltavaresjuliani 74e7782061 adaptacao(banco de dados): adaptação para fazer funcionar o banco de dados no novo servidor 2025-08-01 02:55:26 -03:00
Rafael Tavares Juliani a174762692 fix(refactor): faltou apagar os arquivos do git 2025-08-01 01:45:18 -03:00
Rafael Tavares Juliani 8c53ac4fa8 refactor(arquivos): alterando as disposições, pastas dos arquivos 2025-08-01 01:33:58 -03:00
Rafael Tavares Juliani 3de4a6c932 Dicionário Jane Duboc 2025-05-03 17:11:09 -03:00
Rafael Tavares Juliani eb36259e3a centralização tag h1 2025-04-13 19:32:58 -03:00
Rafael Tavares Juliani 175e6bf27b Atualização de comentário 2025-04-13 17:53:25 -03:00
136 changed files with 1335 additions and 423 deletions

No files matched your search

+1 -1
View File
@@ -1 +1 @@
.env
.env
+21 -3
View File
@@ -3,16 +3,34 @@
## O que você vai encontrar aqui?
### As instruções a seguir são para o prefixo eM
Aqui, você encontrará:
- 2 arquivos (ark_lista.yml e ark_lista.json) contendo uma lista de todos os identificadores ARK gerados pela Editora Moan. Nesses, arquivos há o identificador, o título, o tipo de objeto (formato), o autor e um link para o arquivo com os metadados completos. Substitua pelos seus ARK;
- 2 arquivos (ark_lista.yml e ark_lista.json) contendo uma lista de todos os identificadores ARK gerados pela Editora Moan com o prefixo eM. Nesses, arquivos há o identificador, o título, o tipo de objeto (formato), o autor e um link para o arquivo com os metadados completos. Substitua pelos seus ARK;
- O arquivo gerar_ark.py para poder gerar os identificadores ARK da Editora Moan. Você poderá personalizar para o seu uso site_base para o endereço web que você vai colocar este repositório. Outro ponto importante é colocar um redirecionamento no seu servidor para cair no seu site_base toda vez que alguém estiver buscando um ARK. Colocamos o seguinte redirecionamento para funcionar com o index.php: "^/ark:(.*)$" o que captura tudo que começa com "/ark:" após o seu domínio. E redirecionamos para "$site_base/?ark=$1". Isto é, o ARK, sem o rótulo, estará no parâmetro "ark". Mais um detalhe importante... Se você não usar nenhum tratamento para quando os seus ARK forem acessados por leitura de um qr code, retire essa importação e todas as chamadas da função registrarAcessoQrCode. O arquivo "funcaoQRCode.php" possui uma chamada para o arquivo .env, mas .env nao está aqui porque são os dados do banco de dados. Se vc quiser usar a função de qr code, coloque um arquivo .env com os dados de conexão do seu banco de dados, conforme o arquivo "funcaoQRCode.php". Crie o banco de dados conforme a tabela de qr code usada no arquivo "funcaoQRCode.php";
- Os demais arquivos são os ARK com todos os seus metadados. Cada ARK possui um único arquivo YAML e uma cópia na versão JSON. Substitua pelos seus ARK.
Os arquivos ark_lista estão na raiz do repositório, mas cada ARK YAML completo está na pasta yaml e os JSON, na pasta json.
## Sobre os nomes dos arquivos
#### Sobre os nomes dos arquivos
Um exemplo de um identificador ARK pode ser "ark:777/a55/d3.By2". Como você pode observar, isso seria problemático para uso em URL e, por isso, uma pequena substituição será feita para nomear os arquivos ARK neste repositório.
Os ":" (dois pontos) serão substituídos por \_dp\_; o "." (ponto), por \_p\_ e a "/" (barra), por \_b\_. Assim — o arquivo que conteria todos os metadados do hipotético ARK dado como exemplo no parágrafo anterior — seria "ark_dp_777_b_a55_b_d3_p_By2.yml" ou sua cópia em JSON, "ark_dp_777_b_a55_b_d3_p_By2.json".
Os ":" (dois pontos) serão substituídos por \_dp\_; o "." (ponto), por \_p\_ e a "/" (barra), por \_b\_. Assim — o arquivo que conteria todos os metadados do hipotético ARK dado como exemplo no parágrafo anterior — seria "ark_dp_777_b_a55_b_d3_p_By2.yml" ou sua cópia em JSON, "ark_dp_777_b_a55_b_d3_p_By2.json".
### Instruções para o prefixo M
O prefixo M é do Meta Museu da Matemática da Editora Moan. Ele sempre redireciona para o gitea da editora, para o repositório do museu. Ele sempre buscará um README.md em que contém os metadados, as variações, a visualização do objeto e, no mesmo diretório, os os arquivos correspondentes.
Se a busca pelo ARK for com a interrogação, isto é, tentando acessar os metadados, o solicitante será redirecionado para uma API que retornará um json com todos os metadados.
#### Sobre os nomes dos arquivos
Os ARKs serão pastas no gitea e as variações serão ãncoras no arquivo README.md. Os nomes das pastas deve ter o título do objeto catalogado com "_° no lugar de espaças, tudo em minúculas e o hífen "-" como separador para indicar o ARK e aí, dentro da pasta o README.md. Exemplo "osso_de_ishango-M3GD/README.md". Seguindo a natureza hierárquica dos ARKs, se for um objeto que é parte do original (mais geral), deve-se criar uma pasta dentro da original seguindo os mesmos critério e dentro dela um outro README.md.
Obs.: Esses ARKs não possuem apontamento. O padrão é sempre como descrito acima. Caso precise alterar, será necessário uma mudança no código.
## Observações
Agora usamos o Plausible Analytics para as estatísticas de acesso ARK. Configure o seu.
-64
View File
@@ -1,64 +0,0 @@
import os
import shutil
import subprocess
def copiar_arquivos_e_pastas(arquivos, origem, destino):
# Imprime o caminho absoluto do destino
print("Caminho absoluto do destino:", os.path.abspath(destino))
# Se o destino for o servidor-web/livro.online/ark, apaga o diretório de destino inteiro
if destino == os.path.abspath('../servidor-web/livro.online/ark'):
print("Apagando diretório de destino...")
shutil.rmtree(destino)
# Percorre a lista de arquivos e pastas
for item in arquivos:
origem_item = os.path.join(origem, item)
destino_item = os.path.join(destino, item)
# Se for uma pasta, copia recursivamente
if os.path.isdir(origem_item):
shutil.copytree(origem_item, destino_item, dirs_exist_ok=True)
else:
# Se for um arquivo, copia
shutil.copy2(origem_item, destino_item)
# Diretório de origem é o diretório atual
diretorio_origem = os.getcwd()
# Diretório de destino
diretorio_destino = os.path.abspath('../servidor-web/livro.online/ark') # Aqui você pode colocar o diretório correto de acordo com a estrutura do seu projeto
# Lista de arquivos e pastas a serem copiados
arquivos_e_pastas = ['json', 'yaml', 'ark_lista.json', 'ark_lista.yml', 'funcaoQRCode.php', 'index.php']
# Chama a função para copiar os arquivos e pastas
copiar_arquivos_e_pastas(arquivos_e_pastas, diretorio_origem, diretorio_destino)
print("Arquivos e pastas copiados com sucesso no servidor-web!")
diretorio_livro_p_online = os.path.abspath('../site-moan-quarto-config/site-livroonline') # Aqui você pode colocar o diretório correto de acordo com a estrutura do seu projeto
# Navega para o diretorio_livro_p_online
os.chdir(diretorio_livro_p_online)
# Executa os comandos do terminal
"""
comandos = [
'quarto render publicacoes.qmd --cache-refresh',
'git add publicacoes.qmd',
'git commit -m "publicação novo"',
'git push'
]
"""
comandos = ['quarto render publicacoes.qmd --cache-refresh']
for comando in comandos:
subprocess.run(comando, shell=True)
print("Servidor atualizado!")
RESET = "\033[0m"
RED = "\033[91m"
print(RED+"\n======== ATENÇÃO!!! Ainda é preciso atualizar o github!!! ========\n"+RESET)
-62
View File
@@ -1,62 +0,0 @@
<?php
date_default_timezone_set('America/Sao_Paulo'); // Substitua 'America/Sao_Paulo' pelo fuso horário desejado
function registrarAcessoQrCode($chave, $destino_redirecionamento) {
// Forma de uso... Adicione &qrark=1 no final da URL. Se quiser consultar os metadados, adicione ?&qrark=1
$env = parse_ini_file('.env');
if (isset($_GET["qrark"]) && $_GET["qrark"] == 1) {
// Pegando as variáveis de acesso
$db = $env['DB_NAME'];
$dbUser = $env['DB_USER'];
$dbPassword = $env['DB_PASSWORD'];
// Configurações do banco de dados
$servidor = "localhost";
$usuario = $dbUser;
$senha = $dbPassword;
$banco = $db;
// Conexão com o banco de dados
$conexao = new mysqli($servidor, $usuario, $senha, $banco);
// Verifique a conexão
if ($conexao->connect_error) {
die("Falha na conexão: " . $conexao->connect_error);
}
$endereco_ip = $_SERVER['REMOTE_ADDR'];
$data_acesso = date('Y-m-d H:i:s');
// Consulta SQL para inserir dados
$sql = "INSERT INTO acessos_qr_code (chave, url_destino, ip, data_acesso) VALUES (?, ?, ?, ?)";
// Preparar a consulta
$stmt = $conexao->prepare($sql);
// Verificar se a consulta está pronta
if ($stmt) {
// Vincular parâmetros
$stmt->bind_param('ssss', $chave, $destino_redirecionamento, $endereco_ip, $data_acesso);
// Executar a consulta
if ($stmt->execute()) {
echo "Registro inserido com sucesso!";
} else {
echo "Erro ao inserir o registro: " . $stmt->error;
}
// Fechar a consulta
$stmt->close();
} else {
echo "Erro na preparação da consulta: " . $conexao->error;
}
// Fechar a conexão com o banco de dados
$conexao->close();
}
}
?>
-224
View File
@@ -1,224 +0,0 @@
<?php
error_reporting(E_ALL);
ini_set('display_errors', 0); // Desabilita a exibição de erros na tela
ini_set('log_errors', 1);
ini_set('error_log', 'erro_log.txt');
require 'funcaoQRCode.php';
// Inclua o arquivo com a função registrarAcessoQrCode
//include 'funcaoQRCode.php'; //Se você não usar nenhum tratamento para quando os seus ARK forem acessados por leitura de um qr code, retire essa importação e todas as chamadas da função registrarAcessoQrCode. O arquivo "funcaoQRCode.php" não está neste repositório Github, pois é de uso interno da Editora Moan
function reduzirArk($tamanho, $pedacos) {
$ark_sem_NAAN = "";
$NAAN = $pedacos[0];
for($i=1; $i < $tamanho; $i++){ //Começa em 1 porque o primeiro pedaço é o NAAN
$ark_sem_NAAN.= "/".$pedacos[$i];
}//Fecha for
$arr = [$NAAN, $ark_sem_NAAN];
return $arr;
}
function limpar_ark($str){
// Lista de caracteres a serem removidos
$caracteresParaRemover = array('<', '>', ':', ';', '(', ')', '&', '$');
// Substitui os caracteres da lista por uma string vazia
$stringLimpa = str_replace($caracteresParaRemover, '', $str);
return $stringLimpa;
}
function direcionar_ark() {
$pasta_json = "json"; //Substitua pelo nome que vc escolheu para colocar os metadados ARK em JSON
$site_base = "https://ark.livro.online/"; //Coloque o endereço do local em que estes arquivos estão hospedados
if(isset($_GET["ark"])){
$ark = $_GET["ark"];
} else {
$ark = "";
echo "<h1>Mensagem ARK</h1><p>Nenhum ARK foi passado para que fosse feita uma busca.</p>";
return;
}
//limpar o ARK
$ark = limpar_ark($ark);
//Eliminando espaços em branco no início e no final do $ark
$ark = trim($ark);
// Verifique se $ark começa com uma barra. Pois, em vez de terem digitado ark:68745/eM485/B6, por exemplo, podem ter digitado ark:/68745/eM485/B6, o que seria passado para o parâmetro ark com uma barra no início
if (strpos($ark, '/') === 0) {
// Remova a barra no início
$ark= substr($ark, 1);
}
$pedacos = explode("/", $ark);
$index = 0;
$tamanho_inicial = count($pedacos); //Na verdade o tamanho de $pedacos é fixo. Mais abaixo o valor do tamanho só muda porque precisamos reduzir até encontrar o ark registrado, mas o tamanho real de $pedacos continua o mesmo
$identificador_ark = false;
do {
$resto = "";
$tamanho = count($pedacos) - $index;
$inicio_do_resto = $tamanho;
if($inicio_do_resto < $tamanho_inicial){
for($i = $inicio_do_resto; $i < $tamanho_inicial; $i++){
$resto.= "/".$pedacos[$i];
}//Fecha for
}//Fecha if
$resp = reduzirArk($tamanho, $pedacos);
$NAAN = $resp[0]; //NAAN é o número de registro da Editora Moan na Ark Alliance
$ark_sem_NAAN = $resp[1];
if($ark_sem_NAAN == ""){
break;
}
$len_ark_sem_NAAN = strlen($ark_sem_NAAN);
$tem_interrogacao = false;
if($ark_sem_NAAN[$len_ark_sem_NAAN-1] == "?"){// Um ARK com ? é uma pergunta para saber seus metadados e, por isso, em vez da obra em si, temos que retornar os metadados do ARK
$tem_interrogacao = true;
$ark_sem_NAAN = substr($ark_sem_NAAN, 0, -1);
}//Fecha if
$len_ark_sem_NAAN = strlen($ark_sem_NAAN);
if($ark_sem_NAAN[$len_ark_sem_NAAN-1] == "?"){// É executado duas vezes porque um ARK, pela especificação, pode conter duas interrogações e nesse caso deveria retornar se o arquivo é temporário ou não. Mas na Editora Moan não implementamos isso.
$ark_sem_NAAN = substr($ark_sem_NAAN, 0, -1);
}//Fecha if
$ark_formatado = "ark:".$NAAN.$ark_sem_NAAN;
//Substituindo para o padrao que é encontrado dentro da $pasta_json
$nome_arquivo_ark = str_replace(":", "_dp_", $ark_formatado);
$nome_arquivo_ark = str_replace("/", "_b_", $nome_arquivo_ark);
$nome_arquivo_ark = str_replace(".", "_p_", $nome_arquivo_ark);
$nome_arquivo_ark.= ".json";
$caminho_arquivo_ark = $pasta_json."/".$nome_arquivo_ark;
if(file_exists($caminho_arquivo_ark)){
$arquivo_ark = file_get_contents($caminho_arquivo_ark);
$metadados = json_decode($arquivo_ark, true);
// Verifique se a decodificação foi bem-sucedida
if ($metadados !== null) {
// Acesse o valor da chave 'apontamento'
$apontamento = $metadados['apontamento'];
} else {
echo "Erro ao decodificar o JSON no arquivo com os metadados do ARK. Informe o problema ao responsável.";
return;
}
if($tem_interrogacao){
registrarAcessoQrCode( $ark, "Consulta com interrogação, ou seja, buscando metadados.");
header('Location:'.$site_base.$caminho_arquivo_ark);
die();
}
if ($apontamento){
$link_completo = $apontamento.$resto;
} else {
registrarAcessoQrCode($ark, "Não possui um apontamento, logo, foi redirecionado para os metadados.");
header('Location:'.$site_base.$caminho_arquivo_ark);
die();
}
if(!$tem_interrogacao){
registrarAcessoQrCode($ark, $link_completo);
header('Location: '.$link_completo);
die();
}
$identificador_ark = true; //Pois o ARK foi encontrado
}// Fecha if($identificador_ark)
$index++;
} while ($tamanho > 1 && !$identificador_ark);
echo "<h1>ark:$ark</h1> <p>Documento não encontrado.</p>";
}//Fecha a funcao direcionar_ark
direcionar_ark();
?>
-44
View File
@@ -1,44 +0,0 @@
{
"ark": "68745/eMJh3",
"formato":"Coleção de Livros Impressos",
"coleção":"Compositores da MPB",
"apontamento":"https://ark.livro.online/json/ark_dp_68745_b_eM37b.json",
"descrição": "Esta coleção de dicionários Apresenta as figuras de linguagem nas músicas de grandes compositores da MPB.",
"livros-coleção": "Volume 1: Dicionário de Figuras de Linguagem nas Letras Apostas sobre a Música de Ernesto Nazareth ( ARK:68745/eMJh3/Qq ISBN: 9786599140xxx); Volume 2: Dicionário de Figuras de Linguagem nas Canções de Ivan Lins e Vítor Martins (ARK:68745/eMJh3/dG ISBN: 978-65-85027-09-0); Volume 3: Dicionário de Figuras de Linguagem nas Canções de Noel Rosa (ARK:68745/eMJh3/tj - e ISBN: 978-65-85027-10-6);",
"editora": "Editora Moan",
"autores": "Wagner Azevedo",
"palavras-chave": "Dicionários, Língua Portuguesa, Figuras de Linguagem, Compositores, MPB",
"área": "Idiomas e referência",
"cdd": "469.3",
"bisac": "FOR020000",
"ano": "2024",
"data": "23/07/2024",
"idioma": "Português do Brasil (pt-br)",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Wagner Azevedo, Editora Moan, 2024",
"licença": "Todos os direitos reservados. A reprodução desta obra, seja em parte ou no todo, só poderá ser feita mediante autorização sob pena de violação da lei de direitos autorais. (Lei 9.610/98)",
"licença-link": "https://www.planalto.gov.br/ccivil_03/leis/l9610.htm"
}
@@ -0,0 +1,98 @@
<?php
function processarPrefixo_M($NAAN, $ark_sem_NAAN, $tem_interrogacao, $resto) {
$site_base = 'https://gitea.livro.online';
$usuario = "metamuseudamatematica";
$repositorio = "arcevo";
$branch = "main";
// Constrói a URL base para o redirecionamento final (caso não seja JSON)
$localizacao_base = $site_base . '/' . $usuario . '/' . $repositorio . '/src/branch/' . $branch . '/';
$variacao_arr = explode('.', $ark_sem_NAAN);
$variacao = count($variacao_arr) > 1 ? end($variacao_arr) : false;
$ark_procurado = '-' . ltrim($variacao_arr[0] , '/');
// O recursive=1 é OBRIGATÓRIO para ver pastas dentro de pastas
$api_url = "https://gitea.livro.online/api/v1/repos/$usuario/$repositorio/git/trees/$branch?recursive=1";
$options = [
"http" => [ "method" => "GET", "header" => "User-Agent: PHP-Script\r\n" ]
];
$context = stream_context_create($options);
$response = @file_get_contents($api_url, false, $context);
$dados = json_decode($response);
$destino='';
$titulo='';
$encontrado = false;
if (isset($dados->tree)) {
foreach ($dados->tree as $item) {
// Se NÃO for pasta (tree), pula para o próximo item
if ($item->type !== 'tree') {
continue;
}
// Se chegou aqui, é uma pasta.
if (str_ends_with($item->path, $ark_procurado)) {
// Define o destino padrão (redirecionamento)
$destino = $variacao
? $localizacao_base . "{$item->path}/README.md#variação-{$variacao}"
: $localizacao_base . "{$item->path}/README.md";
$titulo = strstr($item->path, $ark_procurado, true);
$encontrado = true;
// SE TIVER INTERROGAÇÃO -> ACIONA API JSON
if ($tem_interrogacao) {
require __DIR__ . '/../Mjson/processador.php';
buscarOuCriarJson(
$item->path,
$variacao,
$usuario,
$repositorio,
$branch,
$site_base
);
}
break;
}
}
}
if ($encontrado) {
return [
'ok' => true,
'destino' => $destino,
'msg' => $destino . ' encontrado.',
'titulo' => $titulo
];
} else {
// Se saiu do loop sem encontrar nada, retorna FALSE
return [
'ok' => false,
'destino' => '',
'msg' => 'ark:68745/' . $ark_sem_NAAN . ' não encontrada.',
'titulo' => ''
];
}
}
?>
@@ -0,0 +1,60 @@
<?php
function processarPrefixo_eM($NAAN, $ark_sem_NAAN, $tem_interrogacao, $resto) {
$pasta_json = "json"; //Substitua pelo nome que vc escolheu para colocar os metadados ARK em JSON
$site_base = "https://ark.livro.online/"; //Coloque o endereço do local em que estes arquivos estão hospedados
$ark_formatado = "ark:".$NAAN.$ark_sem_NAAN;
//Substituindo para o padrao que é encontrado dentro da $pasta_json
$nome_arquivo_ark = str_replace(":", "_dp_", $ark_formatado);
$nome_arquivo_ark = str_replace("/", "_b_", $nome_arquivo_ark);
$nome_arquivo_ark = str_replace(".", "_p_", $nome_arquivo_ark);
$nome_arquivo_ark.= ".json";
$caminho_arquivo_ark = $pasta_json."/".$nome_arquivo_ark;
if(file_exists($caminho_arquivo_ark)){
$arquivo_ark = file_get_contents($caminho_arquivo_ark);
$metadados = json_decode($arquivo_ark, true);
// Verifique se a decodificação foi bem-sucedida
if ($metadados !== null) {
// Acesse o valor da chave 'apontamento'
$apontamento = $metadados['apontamento'] ?? '';
$titulo = $metadados['título'] ?? '';
} else {
return ['ok' => true, 'destino' => '', 'msg' => 'Erro ao decodificar o JSON no arquivo com os metadados do '.$ark_formatado.'. Informe o problema ao responsável.', 'titulo' => ''];
}
if($tem_interrogacao){
return ['ok' => true, 'destino' => $site_base.$caminho_arquivo_ark, 'msg' => $ark_formatado.' encontrado. Direcionando para os metadados...', 'titulo' => $titulo];
}
if ($apontamento){
return ['ok' => true, 'destino' => $apontamento, 'msg' => $ark_formatado.' encontrado. Direcionando...', 'titulo' => $titulo];
}
return ['ok' => true, 'destino' => $site_base.$caminho_arquivo_ark, 'msg' => $ark_formatado.' encontrado. Mas sem um apontamento configurado. Direcionando para os metadados...', 'titulo' => $titulo];
}
return ['ok' => false, 'destino' => '', 'msg' => $ark_formatado.' não encontrado.', 'titulo' => ''];
}
?>
+261
View File
@@ -0,0 +1,261 @@
<?php
function buscarOuCriarJson($path_item, $variacao, $usuario, $repositorio, $branch, $site_gitea) {
header('Content-Type: application/json; charset=utf-8');
// URL RAW
$url_markdown_raw = "$site_gitea/$usuario/$repositorio/raw/branch/$branch/$path_item/README.md";
// Nome do arquivo local
$nome_base = str_replace('/', '_b_', $path_item);
if ($variacao) {
$nome_base .= "_p_" . $variacao;
}
$caminho_json_local = __DIR__ . '/' . $nome_base . ".json";
// Verificação de Datas
$precisa_atualizar = false;
if (!file_exists($caminho_json_local)) {
$precisa_atualizar = true;
} else {
$data_local = filemtime($caminho_json_local);
$data_remota = _obterDataModificacaoRemota($url_markdown_raw);
if ($data_remota === false || $data_remota > $data_local) {
$precisa_atualizar = true;
}
}
// Ação
if ($precisa_atualizar) {
$conteudo_md = @file_get_contents($url_markdown_raw);
if ($conteudo_md === false) {
echo json_encode(['ok' => false, 'msg' => 'Erro ao baixar MD.', 'url' => $url_markdown_raw]);
exit;
}
$config = [
'usuario' => $usuario,
'repositorio' => $repositorio,
'branch' => $branch,
'site_gitea' => $site_gitea
];
// Processa o Scrapping
$dados_processados = _realizarScraping($conteudo_md, $variacao, $path_item, $config);
// Gera o JSON final
$json_final = json_encode($dados_processados, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
file_put_contents($caminho_json_local, $json_final);
echo $json_final;
exit;
} else {
readfile($caminho_json_local);
exit;
}
}
// --- Funções de Parsing ---
function _realizarScraping($markdown, $variacao, $path_original, $config) {
// Configura data para Horário de Brasília (GMT-3)
try {
$dataBrasilia = new DateTime('now', new DateTimeZone('America/Sao_Paulo'));
$dataGeracao = $dataBrasilia->format('Y-m-d H:i:s');
} catch (Exception $e) {
// Fallback caso o servidor não tenha timezone configurado
$dataGeracao = date('Y-m-d H:i:s') . ' (Server Time)';
}
$json = [
'meta' => [
'path_original' => $path_original,
'variacao' => $variacao,
'gerado_em' => $dataGeracao
]
];
// Mapeamento de campos especiais que vão para a RAIZ
$mapeamentoEspeciais = [
'identificador_do_registro' => 'ark',
'visualizacao_publica_ark' => 'link_visualizacao_publica',
'visualizacao_no_meta_museu_da_matematica_editora_moan' => 'link_meta_museu',
'denominacao' => 'titulo',
'outras_denominacoes' => 'outras_denominacoes',
'tipo_de_bem_objeto_original' => 'tipo_bem',
'categoria_museologica' => 'categoria_museologica',
'subcategoria' => 'subcategoria'
];
$linhas = explode("\n", $markdown);
$secaoAtual = 'inicio';
$chaveAtual = null;
$dadosSecoes = [];
$dadosSecoes[$secaoAtual] = [];
foreach ($linhas as $linha) {
$linha = trim($linha);
if ($linha === '') continue;
// 1. TÍTULOS (##)
if (preg_match('/^#{2,4}\s+(.*)$/', $linha, $matches)) {
$nomeSecaoRaw = $matches[1];
$secaoAtual = _limparChave($nomeSecaoRaw);
$chaveAtual = null;
if (!isset($dadosSecoes[$secaoAtual])) {
$dadosSecoes[$secaoAtual] = [];
}
continue;
}
// 2. CHAVE-VALOR (**Chave:** Valor)
if (preg_match('/.*\*\*(.+?):\*\*\s*(.*)$/', $linha, $matches)) {
$chaveRaw = $matches[1];
$valorInicial = $matches[2];
$chaveLimpa = _limparChave($chaveRaw);
$valorLimpo = _limparTextoGeral($valorInicial);
if (array_key_exists($chaveLimpa, $mapeamentoEspeciais)) {
$chaveRaiz = $mapeamentoEspeciais[$chaveLimpa];
$json[$chaveRaiz] = $valorLimpo;
$chaveAtual = null;
} else {
$chaveAtual = $chaveLimpa;
$dadosSecoes[$secaoAtual][$chaveAtual] = $valorLimpo;
}
continue;
}
// 3. ITENS DE LISTA (- Item)
if (preg_match('/^-\s+(.*)$/', $linha, $matches) && !preg_match('/^-{3,}$/', $linha)) {
$itemLista = _limparTextoGeral($matches[1]);
if ($chaveAtual) {
if (!is_array($dadosSecoes[$secaoAtual][$chaveAtual])) {
$valAtual = $dadosSecoes[$secaoAtual][$chaveAtual];
if ($valAtual === '') {
$dadosSecoes[$secaoAtual][$chaveAtual] = [];
} else {
$dadosSecoes[$secaoAtual][$chaveAtual] = [$valAtual];
}
}
$dadosSecoes[$secaoAtual][$chaveAtual][] = $itemLista;
} else {
if (!isset($dadosSecoes[$secaoAtual]['lista_geral'])) {
$dadosSecoes[$secaoAtual]['lista_geral'] = [];
}
$dadosSecoes[$secaoAtual]['lista_geral'][] = $itemLista;
}
continue;
}
// 4. TEXTO GERAL
if (substr($linha, 0, 3) !== '```') {
$textoLimpo = _limparTextoGeral($linha);
if ($textoLimpo === '') continue;
if ($chaveAtual) {
$valAtual = $dadosSecoes[$secaoAtual][$chaveAtual];
if (is_array($valAtual)) {
$chaveAtual = null;
goto texto_geral_rotulo;
}
if ($valAtual !== '') {
$dadosSecoes[$secaoAtual][$chaveAtual] .= " " . $textoLimpo;
} else {
$dadosSecoes[$secaoAtual][$chaveAtual] = $textoLimpo;
}
} else {
texto_geral_rotulo:
if (!isset($dadosSecoes[$secaoAtual]['texto_geral'])) {
$dadosSecoes[$secaoAtual]['texto_geral'] = '';
}
$sep = ($dadosSecoes[$secaoAtual]['texto_geral'] !== '') ? " " : "";
$dadosSecoes[$secaoAtual]['texto_geral'] .= $sep . $textoLimpo;
}
}
}
// --- MONTAGEM DO JSON FINAL ---
foreach ($dadosSecoes as $nomeSecao => $conteudo) {
if ($nomeSecao === 'inicio' && empty($conteudo)) continue;
if (empty($conteudo)) continue;
if (count($conteudo) === 1 && isset($conteudo['lista_geral'])) {
$json[$nomeSecao] = $conteudo['lista_geral'];
}
elseif (count($conteudo) === 1 && isset($conteudo['texto_geral'])) {
$json[$nomeSecao] = $conteudo['texto_geral'];
}
else {
$objetoLimpo = [];
foreach ($conteudo as $k => $v) {
if ($k === 'lista_geral') {
$objetoLimpo['itens'] = $v;
} elseif ($k === 'texto_geral') {
$objetoLimpo['descricao_geral'] = $v;
} else {
$objetoLimpo[$k] = $v;
}
}
$json[$nomeSecao] = $objetoLimpo;
}
}
return $json;
}
/**
* LIMPEZA AGRESSIVA PARA CHAVES
*/
function _limparChave($texto) {
// 1. Remove qualquer caractere que NÃO seja Letra, Número ou Espaço
$texto = preg_replace('/[^\p{L}\p{N}\s]/u', '', $texto);
// 2. Transliteração
$texto = iconv('UTF-8', 'ASCII//TRANSLIT', $texto);
// 3. Formatação
$texto = trim($texto);
$texto = strtolower($texto);
$texto = preg_replace('/\s+/', '_', $texto);
return $texto;
}
/**
* Limpeza para Valores (Mantém pontuação básica, remove emojis)
*/
function _limparTextoGeral($texto) {
// Remove apenas símbolos gráficos e emojis
$texto = preg_replace('/[\p{So}\p{Sk}\p{Sm}\p{Sc}\p{Co}\p{Cn}]/u', '', $texto);
return trim($texto);
}
function _obterDataModificacaoRemota($url) {
$options = [ 'http' => [ 'method' => 'HEAD', 'header' => "User-Agent: PHP-Script\r\n" ] ];
$context = stream_context_create($options);
$headers = @get_headers($url, 1, $context);
if ($headers && isset($headers['Last-Modified'])) {
return strtotime($headers['Last-Modified']);
}
return false;
}
?>
+5
View File
@@ -0,0 +1,5 @@
<script defer data-domain="ark.livro.online" src="https://metricas.livro.online/js/script.manual.js"></script>
<script>window.plausible = window.plausible || function(){(window.plausible.q=window.plausible.q||[]).push(arguments)}</script>
@@ -187,7 +187,7 @@
},
"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 Impressos",
"autor": "Wagner Azevedo",
"ark-filtrado": "ark_dp_68745_b_eMJh3"
},
@@ -334,5 +334,35 @@
"formato": "Livro Físico",
"autor": "Carla Fernanda Sander Juliani",
"ark-filtrado": "ark_dp_68745_b_eM8Rf_b_fr"
},
"68745/eMJh3/H8": {
"título": "Dicionário de Figuras de Linguagem nas Canções de Jane Duboc",
"formato": "Livro Físico",
"autor": "Wagner Azevedo",
"ark-filtrado": "ark_dp_68745_b_eMJh3_b_H8"
},
"68745/eMnb3": {
"título": "Grande Dicionário Brasileiro de Epônimos",
"formato": "Livro Físico",
"autor": "Wagner Azevedo",
"ark-filtrado": "ark_dp_68745_b_eMnb3"
},
"68745/eMJh3/6t": {
"título": "Dicionário de Figuras de Linguagem nas Canções de Jay Vaquer",
"formato": "Livro Físico",
"autor": "Wagner Azevedo",
"ark-filtrado": "ark_dp_68745_b_eMJh3_b_6t"
},
"68745/eM6F4": {
"título": "Escrevivências",
"formato": "Livro Físico",
"autor": "Denise Ferreira da Cunha Medeiros, Ingrid Rodrigues de Melo, Kissila Teixeira Evangelista da Silva, Luzinete de Araújo, Luzinete de Oliveira, Mariana Sthefanie Nervito, Rejane Ferreira do Nascimento, Sandra Lúcia Ferreira de Oliveira, Tatiane Bredemeier",
"ark-filtrado": "ark_dp_68745_b_eM6F4"
},
"68745/eM485/9n": {
"título": "Dicionário De Animais com Outros Significados",
"formato": "Livro Físico",
"autor": "Wagner Azevedo",
"ark-filtrado": "ark_dp_68745_b_eM485_b_9n"
}
}
+30 -2
View File
@@ -1,6 +1,6 @@
68745/eM485:
título: Dicionários de Significados Alterados
formato: Coleção de Livros
formato: Coleção de Livros Digitais (online) com Volumes também em Versões Impressas
autor: Wagner Azevedo
ark-filtrado: ark_dp_68745_b_eM485
68745/eM485/B6:
@@ -163,7 +163,7 @@
ark-filtrado: ark_dp_68745_b_eMNBr_p_Bh
68745/eMJh3:
título: Coleção Compositores da MPB
formato: Coleção de Livros
formato: Coleção de Livros Impressos
autor: Wagner Azevedo
ark-filtrado: ark_dp_68745_b_eMJh3
68745/eMJh3/8N:
@@ -303,3 +303,31 @@
formato: Livro Físico
autor: Carla Fernanda Sander Juliani
ark-filtrado: ark_dp_68745_b_eM8Rf_b_fr
68745/eMJh3/H8:
título: Dicionário de Figuras de Linguagem nas Canções de Jane Duboc
formato: Livro Físico
autor: Wagner Azevedo
ark-filtrado: ark_dp_68745_b_eMJh3_b_H8
68745/eMnb3:
título: Grande Dicionário Brasileiro de Epônimos
formato: Livro Físico
autor: Wagner Azevedo
ark-filtrado: ark_dp_68745_b_eMnb3
68745/eMJh3/6t:
título: Dicionário de Figuras de Linguagem nas Canções de Jay Vaquer
formato: Livro Físico
autor: Wagner Azevedo
ark-filtrado: ark_dp_68745_b_eMJh3_b_6t
68745/eM6F4:
título: Escrevivências
formato: Livro Físico
autor: Denise Ferreira da Cunha Medeiros, Ingrid Rodrigues de Melo, Kissila Teixeira
Evangelista da Silva, Luzinete de Araújo, Luzinete de Oliveira, Mariana Sthefanie
Nervito, Rejane Ferreira do Nascimento, Sandra Lúcia Ferreira de Oliveira, Tatiane
Bredemeier
ark-filtrado: ark_dp_68745_b_eM6F4
68745/eM485/9n:
título: Dicionário De Animais com Outros Significados
formato: Livro Físico
autor: Wagner Azevedo
ark-filtrado: ark_dp_68745_b_eM485_b_9n
+4 -3
View File
@@ -1,3 +1,4 @@
#!/usr/bin/env python
import time
import random
import os
@@ -277,7 +278,7 @@ def criar_identificador_ARK(config_geral, metadados, nivel, ark_pai=None):
yaml.dump(dados_yaml_existente, arquivo_yaml_existente, default_style='', sort_keys=False, allow_unicode=True, default_flow_style=False)
output_yaml = '../site-moan-quarto-config/site-livroonline/publicacoes.yml'
output_yaml = '/media/rafael-tavares-juliani/Arq1/Repositorios/site-moan-quarto-config/site-livroonline/publicacoes.yml'
publicacao = "- title: " + dados_yaml[chave_primaria_yaml]['título'] + "\n" + \
" subtitle: " + dados_yaml[chave_primaria_yaml]['ark'] + "\n" + \
@@ -476,7 +477,7 @@ def atualizar_identificador_ARK(config_geral, arquivo_atualizado):
print(GREEN+"\nArquivo "+YELLOW+"ark_lista.yml"+GREEN+" atualizado com sucesso.\n"+RESET)
# Atualizar o ark no arquivo publicacoes.yml
output_yaml = '../site-moan-quarto-config/site-livroonline/publicacoes.yml'
output_yaml = '/media/rafael-tavares-juliani/Arq1/Repositorios/site-moan-quarto-config/site-livroonline/publicacoes.yml'
# Carrega o arquivo publicacoes.yml
with open(output_yaml, 'r', encoding='utf-8') as file:
@@ -596,4 +597,4 @@ def executar_script_atualizar_servidor():
# Chama a função principal
if __name__ == "__main__":
main()
main()
+318
View File
@@ -0,0 +1,318 @@
<?php
ini_set('display_errors', 0); // Desabilita a exibição de erros na tela
error_reporting(E_ALL);
ini_set('log_errors', 1);
ini_set('error_log', 'erro_log.txt');
function reduzirArk($tamanho, $pedacos) {
$ark_sem_NAAN = "";
for($i=1; $i < $tamanho; $i++){ //Começa em 1 porque o primeiro pedaço é o NAAN
$ark_sem_NAAN.= "/".$pedacos[$i];
}//Fecha for
return $ark_sem_NAAN;
}
function limpar_ark($str){
// Lista de caracteres a serem removidos
$caracteresParaRemover = array('<', '>', ':', ';', '(', '&', ')', '$');
// Substitui os caracteres da lista por uma string vazia
$stringLimpa = str_replace($caracteresParaRemover, '', $str);
return $stringLimpa;
}
function init() {
if(isset($_GET["ark"])){
$ark = $_GET["ark"];
} else {
$ark = "";
return ['ok'=>false,'destino'=>'','msg'=>'Nenhum ARK foi passado...','qrark'=> false,'ark_full'=>'', 'tem_interrogacao'=>false, 'consulta_original_encontrada' => false];
}
//limpar o ARK
$ark = limpar_ark($ark);
//Eliminando espaços em branco no início e no final do $ark
$ark = trim($ark);
$qrark = (isset($_GET['qrark']) && $_GET['qrark'] == '1') ? true : false;
// Verifique se $ark começa com uma barra. Pois, em vez de terem digitado ark:68745/eM485/B6, por exemplo, podem ter digitado ark:/68745/eM485/B6, o que seria passado para o parâmetro ark com uma barra no início
if (strpos($ark, '/') === 0) {
// Remova a barra no início
$ark= substr($ark, 1);
}
$tem_interrogacao = false;
// remove até 2 interrogações no final e marca flag. Ark para consultar metadados se coloca uma interrogacao no final. Duas interrogacoes verifica a persistencia, o tempo de existencia do ark, mas aqui na Editora Moan nao implementamos isso
$ark = rtrim($ark);
for ($k = 0; $k < 2; $k++) {
if (substr($ark, -1) === '?') {
$tem_interrogacao = true;
$ark = substr($ark, 0, -1);
}
}
$pedacos = explode("/", $ark);
// ARK completo “sem o prefixo ark:” e sem barra inicial, fixo:
$ark_full = implode("/", array_filter($pedacos, fn($p) => $p !== ''));
$NAAN = $pedacos[0]; //NAAN é o número de registro da Editora Moan na Ark Alliance
$ark_sem_NAAN = reduzirArk(count($pedacos), $pedacos);
// sem NAAN
$ark_base = implode("/", array_slice($pedacos, 1));
if ($ark === '') {
return ['ok'=>false,'destino'=>'','msg'=>'ARK vazio.','qrark'=>$qrark,'ark_full'=>'', 'tem_interrogacao'=>false, 'consulta_original_encontrada' => false];
}
//-------------------------- PREFIXOS ARK --------------------------
$prefixo_editora = "eM";
$prefixo_museu_da_matematica = "M";
$buscar_ark = null;
if (str_starts_with($ark_base, $prefixo_editora)) {
// Prefixo eM
require __DIR__ . '/LogicaPrefixos/processarPrefixo_eM.php';
$buscar_ark = 'processarPrefixo_eM';
} elseif (str_starts_with($ark_base, $prefixo_museu_da_matematica)) {
// Prefixo M
require __DIR__ . '/LogicaPrefixos/processarPrefixo_M.php';
$buscar_ark = 'processarPrefixo_M';
} else {
// Nenhum dos dois
}
//-------------------------- FIM PREFIXOS ARK --------------------------
if (!is_callable($buscar_ark)) {
return ['ok'=>false,'destino'=>'','msg'=>'Prefixo ARK desconhecido.','qrark'=>$qrark,'ark_full'=>$ark_full, 'tem_interrogacao'=>$tem_interrogacao, 'consulta_original_encontrada' => false];
}
$index = 0;
$tamanho_inicial = count($pedacos); //Na verdade o tamanho de $pedacos é fixo. Mais abaixo o valor do tamanho só muda porque precisamos reduzir até encontrar o ark registrado, mas o tamanho real de $pedacos continua o mesmo
$identificador_ark = false;
$resultado = ['ok'=>false,'destino'=>'','msg'=>'ARK não encontrado.Erro não identificado.','qrark'=>$qrark,'ark'=>$ark_full, 'tem_interrogacao'=>$tem_interrogacao, 'consulta_original_encontrada' => false];
$consulta_original_encontrada = false;
do {
$resto = "";
$tamanho = count($pedacos) - $index;
$inicio_do_resto = $tamanho;
if($inicio_do_resto < $tamanho_inicial){
for($i = $inicio_do_resto; $i < $tamanho_inicial; $i++){
$resto.= "/".$pedacos[$i];
}//Fecha for
}//Fecha if
$ark_sem_NAAN = reduzirArk($tamanho, $pedacos);
if($ark_sem_NAAN == ""){
break;
}
$resultado = $buscar_ark($NAAN, $ark_sem_NAAN, $tem_interrogacao, $resto);
$identificador_ark = $resultado["ok"];
$consulta_original_encontrada = ($index === 0);
$index++;
} while ($tamanho > 1 && !$identificador_ark);
$resultado['qrark'] = $qrark;
$resultado['ark_full'] = $ark_full; // <-- use este no JS/analytics
$resultado['tem_interrogacao'] = $tem_interrogacao;
$resultado['consulta_original_encontrada'] = $consulta_original_encontrada;
return $resultado;
}//Fecha a funcao init
$conteudo = init();
$ok = $conteudo["ok"];
$destino = $conteudo["destino"];
$msg = $conteudo["msg"];
$arkFull = $conteudo['ark_full'] ?? '';
$qrark = $conteudo["qrark"];
$tem_interrogacao = $conteudo['tem_interrogacao'];
$consulta_original_encontrada = $conteudo['consulta_original_encontrada'];
function slug_titulo($s) {
$s = trim((string)$s);
if ($s === '') return '';
// remove acentos
$s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s);
$s = strtolower($s);
// troca tudo que não é letra/número por hífen
$s = preg_replace('/[^a-z0-9]+/', '-', $s);
$s = trim($s, '-');
// limita tamanho (pra não virar um trem sem freio)
return substr($s, 0, 80);
}
$tituloSlug = slug_titulo($conteudo['titulo'] ?? '');
?>
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title><?= $ok ? "Redirecionando…" : "ARK não encontrado" ?></title>
<style>
html,body{margin:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:system-ui,sans-serif;background: #FF5F6D; /* fallback for old browsers */
background: -webkit-linear-gradient(to right, #FFC371, #FF5F6D); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #FFC371, #FF5F6D); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
}
.spinner{width:52px;height:52px;border:5px solid #ddd;border-top-color:#555;border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.msg{max-width:420px;text-align:center;padding:24px}
</style>
<?php
// Injeta o snippet do plausible (arquivo ignorado no git)
@include __DIR__ . '/analytics/plausible.php';
?>
</head>
<body>
<div class="spinner" id="spinner" aria-label="Carregando"></div>
<div class="msg" id="msgBox" style="display:none">
<h1 id="msgTitle">Redirecionando...</h1>
<p id="msgText"></p>
</div>
<script>
const ok = <?= json_encode($ok) ?>;
const destino = <?= json_encode($destino) ?>;
const msg = <?= json_encode($msg) ?>;
const arkFull = <?= json_encode($arkFull) ?>; // "68745/eM8Rf/gJ.ht"
const qrark = <?= json_encode($qrark) ?>; // boolean
const consultaMetadados = <?= json_encode($tem_interrogacao) ?>; // boolean
const consulta_original_encontrada = <?= json_encode($consulta_original_encontrada) ?>;
const tituloSlug = <?= json_encode($tituloSlug) ?>; // "o-titulo-do-livro"
const spinner = document.getElementById('spinner');
const msgBox = document.getElementById('msgBox');
const msgTitle = document.getElementById('msgTitle');
const msgText = document.getElementById('msgText');
function pathSafe(a) {
return String(a)
.split('/')
.filter(Boolean)
.map(encodeURIComponent)
.join('/');
}
const go = () => location.replace(destino);
if (ok) {
const parts = [];
if (!consulta_original_encontrada) parts.push('404');
if (qrark) parts.push('qrcodeLivro');
if (consultaMetadados) parts.push('meta');
if (tituloSlug) parts.push(tituloSlug);
const suffix = parts.length ? '_' + parts.join('_') : '';
const virtualUrl = location.origin + '/' + pathSafe(arkFull) + suffix;
if (typeof plausible === "function") {
plausible("pageview", {
u: virtualUrl,
callback: () => go()
});
setTimeout(go, 1500); // fallback
} else {
go();
}
} else {
spinner.style.display = 'none';
msgBox.style.display = 'block';
msgTitle.textContent = 'Erro';
msgText.textContent = msg;
}
</script>
</body>
</html>
File renamed without changes.
@@ -5,7 +5,7 @@
"título": "Dicionários de Significados Alterados",
"subtítulo": "Registrados nas literaturas brasileira e portuguesa, em letras da MPB e nas histórias em quadrinhos",
"descrição": "Todas as línguas são dinâmicas e vão mudando conforme o tempo. Esta coleção de dicionários faz o registro de diversas palavras que alteraram os seus significados mais antigos. São nomes de animais, plantas, números, aumentativos etc que ganharam um novo significado.",
"livros da coleção": "Volume 1: Dicionário de Animais com Outros Significados (ISBN: 9788595960718 - Não é da Editora Moan - saiu antes da coleção existir); Volume 2: Dicionário de Plantas com Outros Significados (Versão Digital ark:68745/eM485/B6 e Versão Impressa ark:68745/eM485/B6.NT - e ISBN: 9786599140402); Volume 3: Dicionário de Números com Outros Significados (Versão Digital ark:68745/eM485/33 e Versão Impressa ark:68745/eM485/33.37 - ISBN: 9786599140433); Volume 4: Dicionário de Vocábulos Femininos, Aumentativos, Diminutivos, ou Não, com Outros Significados (ARK: 68745/eM485/7h - ISBN: 9786585027076); Volume 5: Dicionário de Vocábulos que Mudaram de Significado (ARK: 68745/eM485/8D - ISBN: 9786585027083);",
"livros da coleção": "Volume 1: Dicionário de Animais com Outros Significados (2ᵃ Edição ARK: 68745/eM485/9n ISBN: 978-65-85027-24-3 — 1ᵃ Edição - Não é da Editora Moan - saiu antes da coleção existir ISBN: 9788595960718); Volume 2: Dicionário de Plantas com Outros Significados (Versão Digital ark:68745/eM485/B6 e Versão Impressa ark:68745/eM485/B6.NT - e ISBN: 9786599140402); Volume 3: Dicionário de Números com Outros Significados (Versão Digital ark:68745/eM485/33 e Versão Impressa ark:68745/eM485/33.37 - ISBN: 9786599140433); Volume 4: Dicionário de Vocábulos Femininos, Aumentativos, Diminutivos, ou Não, com Outros Significados (ARK: 68745/eM485/7h - ISBN: 9786585027076); Volume 5: Dicionário de Vocábulos que Mudaram de Significado (ARK: 68745/eM485/8D - ISBN: 9786585027083);",
"editora": "Editora Moan",
"autor": "Wagner Azevedo",
"palavras-chave": "Dicionários, Língua Portuguesa, Literatura, Música, Gibi",
@@ -1,6 +1,6 @@
{
"ark": "68745/eM485/8D",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eM37B_b_87D.json",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eM485_b_8D.json",
"formato": "Livro Impresso",
"isbn": "9786585027083",
"título": "Dicionário de Vocábulos que Mudaram de Significado",
@@ -36,4 +36,4 @@
"páginas": "176",
"direitos autorais": "2023. Wagner Azevedo - Editora Moan",
"licença": "Todos os direitos reservados. A reprodução desta obra, seja em parte ou no todo, só poderá ser feita mediante autorização sob pena de violação da lei de direitos autorais. (Lei 9.610/98)'"
}
}
@@ -0,0 +1,43 @@
{
"ark": "68745/eM485/9n",
"isbn": "978-65-85027-24-3",
"formato": "Livro Físico",
"status": "Disponível",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eMnb3.json",
"dimensões": "16 x 23 cm x (L x A x P)",
"peso": " g",
"encadernamento": "Capa Dura",
"páginas": "638",
"ano": 2026,
"data": "01/06/2026",
"título": "Dicionário De Animais com Outros Significados",
"subtítulo": "Registrados nas Literaturas Brasileira e Portuguesa, em Letras da MPB e nas Histórias em Quadrinhos",
"autor": "Wagner Azevedo",
"descrição": "Chega a 2ª edição do Dicionário de Animais com Outros Significados, revista e aumentada, o 1º volume da Coleção “Com Outros Significados”. Como minha pesquisa é permanente, agora, oito anos depois, faz-se necessário esta publicação atualizada. No segundo semestre de 2008, em uma aula de Língua Japonesa na UERJ, a professora Rika Hagino comentou sobre uma situação que acontecera no Japão. Um brasileiro que foi empurrado no trem xingou o cidadão nipônico em japonês: “seu cavalo” (como “seu estúpido”), mas o cidadão apenas olhou para trás sem entender nada... Esse relato foi interessante para sabermos que não são todas as culturas que têm a mesma percepção linguística para os usos de determinados vocábulos ou locuções com outros significados. Daí veio a ideia de fazer este dicionário, que posteriormente tornou-se uma coleção com cinco volumes. Agradeço a todos e à Editora Moan por esta nova publicação.",
"editora": "Editora Moan",
"edição": 2,
"coleção": "Dicionário de Significados Alterados",
"ark-colecao": "68745/eM485",
"volume-dentro-da-coleção": "1",
"prefácio": "Vania Lúcia Rodrigues Dutra ",
"editor": "Rafael Tavares Juliani",
"diagramador": "Wagner Azevedo",
"capista": "Rafael Tavares Juliani",
"capa": "https://arai.livro.online/s/9fL3HGiqSoPr7SF",
"revisores": "Vagner Lima da Silva",
"palavras-chaves": "Animais, Dicionários, Histórias em quadrinhos, Língua Portuguesa — Palavras e expressões, Música Popular Brasileira, Onomatopeias",
"área": "Idiomas e referência",
"cdu": "811.134.3’284’374",
"cdd": 469.31,
"ficha-catalográfica": "Eliane de Freitas Leite - Bibliotecária - CRB 8/8415",
"bisac": "FOR020000",
"idioma": "pt-BR",
"local": "Foz do Iguaçu - PR",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Wagner Azevedo, Editora Moan, 2026",
"licença": "Todos os direitos reservados",
"licença-link": "https://www.planalto.gov.br/ccivil_03/leis/l9610.htm",
"outros-créditos": "Fonte da Capa: Nachlieli CLM"
}
@@ -0,0 +1,39 @@
{
"ark": "68745/eM6F4",
"isbn": "978-65-85027-23-6",
"formato": "Livro Físico",
"status": "Disponível",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eMnb3.json",
"dimensões": "14,8 x 21 cm x (L x A x P)",
"peso": " g",
"encadernamento": "Brochura",
"páginas": "52",
"ano": 2025,
"data": "10/11/2025",
"título": "Escrevivências",
"subtítulo": "Escritas de Mim",
"autor": "Denise Ferreira da Cunha Medeiros, Ingrid Rodrigues de Melo, Kissila Teixeira Evangelista da Silva, Luzinete de Araújo, Luzinete de Oliveira, Mariana Sthefanie Nervito, Rejane Ferreira do Nascimento, Sandra Lúcia Ferreira de Oliveira, Tatiane Bredemeier",
"organizador": "Andréia Gomury",
"supervisor": "Andréia Gomury, Elizabeth Marise",
"descrição": "Escrevivências: criações de mim é um livro que nasce do encontro entre leitura, vida e escrita. Inspiradas pela obra Quelé, a voz da cor e pelo conceito de escrevivência, de Conceição Evaristo, as autoras transformam experiências pessoais e coletivas em textos que revelam o poder da palavra como lugar de resistência, memória e afeto. Cada página reflete o gesto de escrever a si e, ao mesmo tempo, escrever o mundo — gesto que faz da escola um espaço de escuta e de reconstrução de sentidos. Porque toda vida é narrativa. E toda narrativa é também um modo de existir.",
"editora": "Editora Moan",
"edição": 1,
"editor": "Rafael Tavares Juliani",
"diagramador": "Rafael Tavares Juliani",
"capista": "Rafael Tavares Juliani",
"capa": "",
"palavras-chaves": "Escrevivência, Microconto, Griot, Poemas, Roteiro, Conceição Evaristo, Quelé",
"área": "Idiomas e referência",
"cdu": "808.1(81)-055.2",
"cdd": "808.81:305.48(81)",
"ficha-catalográfica": "Carla Lopes Ferreira",
"bisac": null,
"idioma": "pt-BR",
"local": "Foz do Iguaçu - PR",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Andréia Gomury, Editora Moan, 2025",
"licença": "CC BY-SA 4.0",
"licença-link": "https://creativecommons.org/licenses/by-sa/4.0/deed.en"
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,25 @@
{
"ark": "68745/eMJh3",
"formato": "Coleção de Livros Impressos",
"coleção": "Compositores da MPB",
"título": "Coleção Compositores da MPB",
"autor": "Wagner Azevedo",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eMJh3.json",
"descrição": "Esta coleção de dicionários Apresenta as figuras de linguagem nas músicas de grandes compositores da MPB.",
"livros-coleção": "Volume 1: Dicionário de Figuras de Linguagem nas Letras Apostas sobre a Música de Ernesto Nazareth (ARK:68745/eMJh3/Qq ISBN: 9786599140xxx); Volume 2: Dicionário de Figuras de Linguagem nas Canções de Ivan Lins e Vítor Martins (ARK:68745/eMJh3/dG ISBN: 978-65-85027-09-0); Volume 3: Dicionário de Figuras de Linguagem nas Canções de Noel Rosa (ARK:68745/eMJh3/tj - e ISBN: 978-65-85027-10-6); Volume 4: Dicionário de figuras de linguagem nas canções de Chiquinha Gonzaga (Editorial Casa de Bonecas e ISBN: 978-65-5480-296-3); Volume 5: Dicionário de figuras de linguagem nas canções de Catullo da Paixão Cearense (Editorial Casa de Bonecas e ISBN: 978-65-5480-304-5); Volume 6: Dicionário de Figuras de Linguagem nas Canções de Jane Duboc (ARK: 68745/eMJh3/H8 e ISBN: 978-65-85027-20-5)",
"editora": "Editora Moan e Editorial Casa de Bonecas",
"autores": "Wagner Azevedo",
"palavras-chave": "Dicionários, Língua Portuguesa, Figuras de Linguagem, Compositores, MPB",
"área": "Idiomas e referência",
"cdd": "469.3",
"bisac": "FOR020000",
"ano": "2024",
"data": "23/07/2024",
"idioma": "Português do Brasil (pt-br)",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Wagner Azevedo, Editora Moan, 2024",
"licença": "Todos os direitos reservados. A reprodução desta obra, seja em parte ou no todo, só poderá ser feita mediante autorização sob pena de violação da lei de direitos autorais. (Lei 9.610/98)",
"licença-link": "https://www.planalto.gov.br/ccivil_03/leis/l9610.htm"
}
@@ -0,0 +1,41 @@
{
"ark": "68745/eMJh3/6t",
"isbn": "978-65-85027-22-9",
"formato": "Livro Físico",
"status": "Disponível",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eMJh3_b_6t.json",
"dimensões": "14,8 x 21 cm x (L x A x P)",
"peso": " g",
"encadernamento": "Brochura",
"páginas": "118",
"ano": 2025,
"data": "30/10/2025",
"título": "Dicionário de Figuras de Linguagem nas Canções de Jay Vaquer",
"autor": "Wagner Azevedo",
"descrição": "Outro dicionário que mostra a expressividade poética das letras do ator, diretor, cantor, músico e compositor Jay Vaquer, através de diversas Figuras de Linguagem. Podemos confirmar que sua obra incorpora os critérios mencionados pelo poeta e crítico literário Ezra Pound: a melopeia (qualidade musical); a fanopeia (imagens visuais); e a logopeia ('dança do intelecto entre as palavras'). Mais uma obra à disposição de todos: professores, alunos, pesquisadores e leitores em geral.",
"editora": "Editora Moan",
"edição": 1,
"coleção": "Coleção Compositores da MPB",
"ark-colecao": "68745/eMJh3",
"volume-dentro-da-coleção": 8,
"prefácio": "",
"editor": "Rafael Tavares Juliani",
"diagramador": "Wagner Azevedo",
"capista": "Rafael Tavares Juliani",
"capa": "",
"revisores": "Barbara Lima da Conceição",
"palavras-chaves": "Jay Vaquer, Figuras de Linguagem, Compositores da MPB",
"área": "Idiomas e referência",
"cdu": "811.134.3’374(038)",
"cdd": 469.0321,
"ficha-catalográfica": "Carla Lopes Ferreira",
"bisac": "FOR020000",
"idioma": "pt-BR",
"local": "Foz do Iguaçu - PR",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Wagner Azevedo, Editora Moan, 2025",
"licença": "Todos os direitos reservados",
"licença-link": "https://www.planalto.gov.br/ccivil_03/leis/l9610.htm"
}
@@ -0,0 +1,41 @@
{
"ark": "68745/eMJh3/H8",
"isbn": "978-65-85027-20-5",
"formato": "Livro Físico",
"status": "Disponível",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eMJh3_b_.json",
"dimensões": "14,8 x 21 cm x (L x A x P)",
"peso": " g",
"encadernamento": "Brochura",
"páginas": "96",
"ano": 2025,
"data": "05/05/2025",
"título": "Dicionário de Figuras de Linguagem nas Canções de Jane Duboc",
"autor": "Wagner Azevedo",
"descrição": "Este dicionário mergulha nas canções de Jane Duboc para revelar as figuras de linguagem que marcam sua expressão artística. Além de identificar e comentar os recursos estilísticos presentes em suas letras, o livro oferece definições claras das principais figuras de linguagem e uma rica base bibliográfica para aprofundamento. Uma ponte entre a poesia da música e o estudo da linguagem.",
"editora": "Editora Moan",
"edição": 1,
"coleção": "Coleção Compositores da MPB",
"ark-colecao": "68745/eMJh3",
"volume-dentro-da-coleção": 6,
"prefácio": "Luciana Lins",
"editor": "Rafael Tavares Juliani",
"diagramador": "Wagner Azevedo",
"capista": "Rafael Tavares Juliani",
"capa": "",
"revisores": "Barbara Lima da Conceição",
"palavras-chaves": "Jane Duboc, Figuras de Linguagem, Compositores da MPB",
"área": "Idiomas e referência",
"cdu": "811.134.3’374(038",
"cdd": 469.0321,
"ficha-catalográfica": "Carla Lopes Ferreira (Bibliotecária CRB1-2960)",
"bisac": "FOR020000",
"idioma": "pt-BR",
"local": "Foz do Iguaçu - PR",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Wagner Azevedo, Editora Moan, 2024",
"licença": "Todos os direitos reservados",
"licença-link": "https://www.planalto.gov.br/ccivil_03/leis/l9610.htm"
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -4,7 +4,7 @@
"formato": "Blog",
"autor": "Editora Moan",
"quem-publica": "Rafael Tavares Juliani",
"apontamento": "https://blog.livro.online",
"apontamento": "https://livro.online/blog",
"data-de-publicação": "07/02/2024",
"observação": "O identificador ARK foi criado após algumas publicações já terem sido feitas.",
"idioma": "pt-BR"
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,42 @@
{
"ark": "68745/eMnb3",
"isbn": "978-65-85027-21-2",
"formato": "Livro Físico",
"status": "Disponível",
"apontamento": "https://ark.livro.online/json/ark_dp_68745_b_eMnb3.json",
"dimensões": "16 x 23 cm x (L x A x P)",
"peso": " g",
"encadernamento": "Brochura",
"páginas": "480",
"ano": 2025,
"data": "30/10/2025",
"título": "Grande Dicionário Brasileiro de Epônimos",
"subtítulo": "Registrados nas Literaturas Brasileira e Portuguesa, em Letras da MPB e nas Histórias em Quadrinhos",
"autor": "Wagner Azevedo",
"descrição": "Neste dicionário — GRANDE DICIONÁRIO BRASILEIRO DE EPÔNIMOS — Wagner Azevedo nos oferece um panorama sistemático e atualizado de um número considerável de epônimos, que assim foram divididos: antropônimos, topônimos, acrônimos e siglas. Na parte destinada aos antropônimos, o autor, graças a sua hercúlea pesquisa, nos apresenta exemplos que vão desde os mais conhecidos como, por exemplo, abreugrafia e Alzheimer — [...] — àqueles desconhecidos até então pela maioria dos leitores, tais como: aikinita e aldino. No que diz respeito aos topônimos, o autor conseguiu conciliar o universo da internet com o tradicional, mas nem por isso menos convidativo e interessante. A última parte deste dicionário tratará dos acrônimos e siglas. Embora muito parecidos quanto à forma, não devem ser confundidos. Por fim, parece-nos que nosso querido Wagner tem por objetivo – como diz o poeta Horácio – “Erigir um monumento mais perene que o bronze”, deixando seu legado às futuras gerações, que poderão, através desta obra, viajar pela máquina do tempo, entender o quão dinâmico é o processo linguístico e compreender o processo cultural a que a língua está sujeita.\nEx imo corde, FRANCISCO DE ASSIS FLORENCIO\n(Professor Doutor Adjunto em Letras Clássicas da UERJ e membro da Academia Brasileira de Filologia – ABRAFIL) ",
"editora": "Editora Moan",
"edição": 1,
"coleção": "",
"ark-colecao": "",
"volume-dentro-da-coleção": "",
"prefácio": "Francisco de Assis Florencio",
"editor": "Rafael Tavares Juliani",
"diagramador": "Wagner Azevedo",
"capista": "Rafael Tavares Juliani",
"capa": "",
"revisores": "André Nemi Conforte",
"palavras-chaves": "Epônimos, Língua Portuguesa, Brasil",
"área": "Idiomas e referência",
"cdu": "811.134.3’284’374",
"cdd": 469.13503,
"ficha-catalográfica": "Carla Lopes Ferreira",
"bisac": "FOR020000",
"idioma": "pt-BR",
"local": "Foz do Iguaçu - PR",
"país": "Brasil",
"faixa-etária": "Acima de 12 anos",
"classificação-indicativa": "Livre para todos os públicos",
"direitos-autorais": "© Wagner Azevedo, Editora Moan, 2025",
"licença": "Todos os direitos reservados",
"licença-link": "https://www.planalto.gov.br/ccivil_03/leis/l9610.htm"
}
File renamed without changes.
File renamed without changes.
@@ -8,15 +8,16 @@ descrição: Todas as línguas são dinâmicas e vão mudando conforme o tempo.
de dicionários faz o registro de diversas palavras que alteraram os seus significados
mais antigos. São nomes de animais, plantas, números, aumentativos etc que ganharam
um novo significado.
livros da coleção: 'Volume 1: Dicionário de Animais com Outros Significados (ISBN: 9788595960718
- Não é da Editora Moan - saiu antes da coleção existir); Volume 2: Dicionário de
Plantas com Outros Significados (Versão Digital ark:68745/eM485/B6 e Versão Impressa
ark:68745/eM485/B6.NT - e ISBN: 9786599140402); Volume 3: Dicionário de Números
com Outros Significados (Versão Digital ark:68745/eM485/33 e Versão Impressa ark:68745/eM485/33.37
- ISBN: 9786599140433); Volume 4: Dicionário de Vocábulos Femininos, Aumentativos,
Diminutivos, ou Não, com Outros Significados (ARK: 68745/eM485/7h - ISBN: 9786585027076);
Volume 5: Dicionário de Vocábulos que Mudaram de Significado (ARK: 68745/eM485/8D
- ISBN: 9786585027083);'
livros da coleção: 'Volume 1: Dicionário de Animais com Outros Significados (2ᵃ Edição
ARK: 68745/eM485/9n ISBN: 978-65-85027-24-3 — 1ᵃ Edição - Não é da Editora Moan
- saiu antes da coleção existir ISBN: 9788595960718); Volume 2: Dicionário de Plantas
com Outros Significados (Versão Digital ark:68745/eM485/B6 e Versão Impressa ark:68745/eM485/B6.NT
- e ISBN: 9786599140402); Volume 3: Dicionário de Números com Outros Significados
(Versão Digital ark:68745/eM485/33 e Versão Impressa ark:68745/eM485/33.37 - ISBN:
9786599140433); Volume 4: Dicionário de Vocábulos Femininos, Aumentativos, Diminutivos,
ou Não, com Outros Significados (ARK: 68745/eM485/7h - ISBN: 9786585027076); Volume
5: Dicionário de Vocábulos que Mudaram de Significado (ARK: 68745/eM485/8D - ISBN:
9786585027083);'
editora: Editora Moan
autor: Wagner Azevedo
palavras-chave: Dicionários, Língua Portuguesa, Literatura, Música, Gibi
@@ -1,5 +1,5 @@
ark: 68745/eM485/8D
apontamento: https://ark.livro.online/json/ark_dp_68745_b_eM37B_b_87D.json
apontamento: https://ark.livro.online/json/ark_dp_68745_b_eM485_b_8D.json
formato: Livro Impresso
isbn: '9786585027083'
título: Dicionário de Vocábulos que Mudaram de Significado
@@ -0,0 +1,53 @@
ark: 68745/eM485/9n
isbn: 978-65-85027-24-3
formato: Livro Físico
status: Disponível
apontamento: https://ark.livro.online/json/ark_dp_68745_b_eMnb3.json
dimensões: 16 x 23 cm x (L x A x P)
peso: ' g'
encadernamento: Capa Dura
páginas: '638'
ano: 2026
data: 01/06/2026
título: Dicionário De Animais com Outros Significados
subtítulo: Registrados nas Literaturas Brasileira e Portuguesa, em Letras da MPB e
nas Histórias em Quadrinhos
autor: Wagner Azevedo
descrição: 'Chega a 2ª edição do Dicionário de Animais com Outros Significados, revista
e aumentada, o 1º volume da Coleção “Com Outros Significados”. Como minha pesquisa
é permanente, agora, oito anos depois, faz-se necessário esta publicação atualizada.
No segundo semestre de 2008, em uma aula de Língua Japonesa na UERJ, a professora
Rika Hagino comentou sobre uma situação que acontecera no Japão. Um brasileiro que
foi empurrado no trem xingou o cidadão nipônico em japonês: “seu cavalo” (como “seu
estúpido”), mas o cidadão apenas olhou para trás sem entender nada... Esse relato
foi interessante para sabermos que não são todas as culturas que têm a mesma percepção
linguística para os usos de determinados vocábulos ou locuções com outros significados.
Daí veio a ideia de fazer este dicionário, que posteriormente tornou-se uma coleção
com cinco volumes. Agradeço a todos e à Editora Moan por esta nova publicação.'
editora: Editora Moan
edição: 2
coleção: Dicionário de Significados Alterados
ark-colecao: 68745/eM485
volume-dentro-da-coleção: '1'
prefácio: 'Vania Lúcia Rodrigues Dutra '
editor: Rafael Tavares Juliani
diagramador: Wagner Azevedo
capista: Rafael Tavares Juliani
capa: https://arai.livro.online/s/9fL3HGiqSoPr7SF
revisores: Vagner Lima da Silva
palavras-chaves: Animais, Dicionários, Histórias em quadrinhos, Língua Portuguesa
— Palavras e expressões, Música Popular Brasileira, Onomatopeias
área: Idiomas e referência
cdu: 811.134.3’284’374
cdd: 469.31
ficha-catalográfica: Eliane de Freitas Leite - Bibliotecária - CRB 8/8415
bisac: FOR020000
idioma: pt-BR
local: Foz do Iguaçu - PR
país: Brasil
faixa-etária: Acima de 12 anos
classificação-indicativa: Livre para todos os públicos
direitos-autorais: © Wagner Azevedo, Editora Moan, 2026
licença: Todos os direitos reservados
licença-link: https://www.planalto.gov.br/ccivil_03/leis/l9610.htm
outros-créditos: 'Fonte da Capa: Nachlieli CLM'
@@ -0,0 +1,48 @@
ark: 68745/eM6F4
isbn: 978-65-85027-23-6
formato: Livro Físico
status: Disponível
apontamento: https://ark.livro.online/json/ark_dp_68745_b_eMnb3.json
dimensões: 14,8 x 21 cm x (L x A x P)
peso: ' g'
encadernamento: Brochura
páginas: '52'
ano: 2025
data: 10/11/2025
título: Escrevivências
subtítulo: Escritas de Mim
autor: Denise Ferreira da Cunha Medeiros, Ingrid Rodrigues de Melo, Kissila Teixeira
Evangelista da Silva, Luzinete de Araújo, Luzinete de Oliveira, Mariana Sthefanie
Nervito, Rejane Ferreira do Nascimento, Sandra Lúcia Ferreira de Oliveira, Tatiane
Bredemeier
organizador: Andréia Gomury
supervisor: Andréia Gomury, Elizabeth Marise
descrição: 'Escrevivências: criações de mim é um livro que nasce do encontro entre
leitura, vida e escrita. Inspiradas pela obra Quelé, a voz da cor e pelo conceito
de escrevivência, de Conceição Evaristo, as autoras transformam experiências pessoais
e coletivas em textos que revelam o poder da palavra como lugar de resistência,
memória e afeto. Cada página reflete o gesto de escrever a si e, ao mesmo tempo,
escrever o mundo — gesto que faz da escola um espaço de escuta e de reconstrução
de sentidos. Porque toda vida é narrativa. E toda narrativa é também um modo de
existir.'
editora: Editora Moan
edição: 1
editor: Rafael Tavares Juliani
diagramador: Rafael Tavares Juliani
capista: Rafael Tavares Juliani
capa: ''
palavras-chaves: Escrevivência, Microconto, Griot, Poemas, Roteiro, Conceição Evaristo,
Quelé
área: Idiomas e referência
cdu: 808.1(81)-055.2
cdd: 808.81:305.48(81)
ficha-catalográfica: Carla Lopes Ferreira
bisac: null
idioma: pt-BR
local: Foz do Iguaçu - PR
país: Brasil
faixa-etária: Acima de 12 anos
classificação-indicativa: Livre para todos os públicos
direitos-autorais: © Andréia Gomury, Editora Moan, 2025
licença: CC BY-SA 4.0
licença-link: https://creativecommons.org/licenses/by-sa/4.0/deed.en
File renamed without changes.
File renamed without changes.
Loaded 100 of 136 files, more files were not shown because too many files have changed in this diff. Show more