Merge branch 'main' of git.owlcode.tech:sergiotarxz/burguillos.info

This commit is contained in:
sergiotarxz 2023-07-28 17:50:06 +02:00
commit 511e879d51
150 changed files with 5352 additions and 962 deletions

26
.eslintrc.js Normal file
View File

@ -0,0 +1,26 @@
module.exports = {
env: {
browser: true,
es2021: true
},
overrides: [
],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: 'tsconfig.json'
},
plugins: [ ],
rules: {
indent: ['error', 4, { SwitchCase: 1 }],
},
settings: {
'import/resolver': {
typescript: {
project: [
'tsconfig.json'
]
}
}
}
}

25
Build.PL Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env perl
use Module::Build;
my $home = $ENV{HOME};
my $build = Module::Build->new(
module_name => 'BurguillosInfo',
license => 'AGPLv3',
dist_author => 'Sergio Iglesias <contact@owlcode.tech>',
dist_abstract => 'The burguillos.info webpage.',
requires => {
'Mojolicious' => 0,
'Const::Fast' => 0,
'Crypt::URandom' => 0,
'Crypt::Bcrypt' => 0,
'DBI' => 0,
'DBD::Pg' => 0,
'DateTime::Format::ISO8601.pm' => 0,
'DateTime::Format::Mail.pm' => 0,
'SVG' => 0,
'XML::Twig' => 0,
'JSON' => 0,
},
);
$build->create_build_script;

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

2
babel.config.json Normal file
View File

@ -0,0 +1,2 @@
{
}

View File

@ -1,7 +1,9 @@
{
"secrets": ["secret_change_for_pwgen_generated_one_with_at_least 255 chars"],
"bcrypt_pass_stats": ["change_for_bcrypted_password"],
"bcrypt_pass_stats": "change_for_bcrypted_password",
"db": {
"database": "example"
}
},
"base_url": "https://burguillos.info",
"listen": "https:localhost:3555"
}

View File

@ -1,9 +1,9 @@
<category>
<title>Animales y mascotas.</title>
<description>
<p>Esta catogoría sirve como medio para hacerse eco de las noticias y plataformas relevantes para el bienestar de la fauna y mascotas de Burguillos.</p>
<p>Esta categoría sirve como medio para hacerse eco de las noticias y plataformas relevantes para el bienestar de la fauna y mascotas de Burguillos.</p>
<p>No se admitirán anuncios de compra-venta de animales tan solo adopciones solidarias y exclusivamente de animales domésticos esterilizados, en ningún caso se admitirá la transferencia de especies silvestres en este medio.</p>
<p>No se admitirán anuncios de compra-venta de animales, tan solo adopciones solidarias y exclusivamente de animales domésticos esterilizados, en ningún caso se admitirá la transferencia de especies silvestres en este medio.</p>
<p>Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a> si necesitas realizar algún anuncio acorde a esta categoría.</p>
</description>

View File

@ -0,0 +1,54 @@
<category>
<title>Donde comer en Burguillos. - Cartas y Menús.</title>
<description>
<h2>Descubre los bares y restaurantes de Burguillos con sus cartas, menús y datos de contacto.</h2>
<p>Aquí puedes encontrar información acerca de los negocios de hostelería de Burguillos.</p>
<p>Disfruta tu comida.</p>
<p>¿Quieres que tu comercio aparezca aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a></p>
</description>
<parent>comercios</parent>
<priority>0</priority>
<menu_text>Donde comer</menu_text>
<slug>donde-comer</slug>
<attributes>
<attribute>
<title>Pedir comida a domicilio en Burguillos.</title>
<identifier>reparto-a-domicilio-comida</identifier>
<priority>0</priority>
<menu_text>Listado de sitios de comida con reparto a domicilio.</menu_text>
<description>
<h2>Cartas y Menús de Pizzerías, Hamburgueserías, Kebab, Restaurantes, Bares, etc.</h2>
<p>Te filtramos todos los sitios según si puedes pedir a domicilio en Burguillos, todos los negocios listados incluyen carta, menú y teléfono de contacto. (O el medio de contacto pertinente para el negocio en caso de no ser el teléfono.)</p>
<p>¿Conoces algún negocio que debería estar listado aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a> y lo añadiremos a este registro.</p>
</description>
</attribute>
<attribute>
<title>Comer hamburguesas en Burguillos - Cartas y Menús.</title>
<identifier>hamburguesas</identifier>
<priority>0</priority>
<menu_text>Listado de sitios de comida que preparan hamburguesas.</menu_text>
<description>
<h2>Hamburgueserias y todo tipo de establecimientos que preparan hamburguesas.</h2>
<p>Te filtramos todos los sitios según si puedes pedirte la hamburguesa de la que tantas ganas tienes a continuación.</p>
<p>¿Conoces algún negocio que debería estar listado aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a> y lo añadiremos a este registro.</p>
</description>
</attribute>
<attribute>
<title>Pizzerías en Burguillos - Cartas y Menús.</title>
<identifier>pizzerias</identifier>
<priority>0</priority>
<menu_text>Listado de sitios de comida que preparan pizzas.</menu_text>
<description>
<h2>Pizzerías y todo tipo de establecimientos que preparan pizzas.</h2>
<p>Te filtramos todos los sitios según si puedes pedirte la pizza de la que tantas ganas tienes a continuación.</p>
<p>¿Conoces algún negocio que debería estar listado aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a> y lo añadiremos a este registro.</p>
</description>
</attribute>
</attributes>
</category>

View File

@ -2,9 +2,11 @@
<title>Esta página.</title>
<description>
<p>¿Quieres promocionar tu negocio o asociación en Burguillos.info?</p>
<p>Contacta con <a href="mailto://contact@owlcode.tech">Owlcode</a> y te informaremos de los pasos a tomar.</p>
<p>Contacta con <a href="mailto:contact@owlcode.tech">Owlcode</a> y te informaremos de los pasos a tomar.</p>
<p>Esta página es software libre, puedes tomar cualquier parte del código de la página para tu propia web o programa mientras cumplas con la licencia AGPLv3 or later, puedes encontrar su código aquí.</p>
<p>Esta página es software libre, puedes tomar cualquier parte del código de la página para tu propia web o programa mientras cumplas con la licencia AGPLv3 or later, puedes encontrar su código <a href="https://git.owlcode.tech/sergiotarxz/burguillos.info">aquí</a>.</p>
<p>Si tienes conocimientos de HTML puedes crear tu propio artículo enviando una pull request a este enlace creando un fichero nuevo en content/posts, si no tienes conocimientos de HTML puedes contactar con nosotros y crearemos el artículo con el contenido que desees.</p>
</description>
<priority>999</priority>
<menu_text>Esta página</menu_text>

View File

@ -1,11 +1,11 @@
<category>
<title>Portal de información de Burguillos.</title>
<title>Información de Burguillos.</title>
<description>
<p><b>Burguillos.info no está afiliado con el Ayuntamiento de Burguillos.</b></p>
<p>Burguillos.info no está afiliado con el Ayuntamiento de Burguillos.</p>
<p>Esta página está destinada a informar de los sucesos y negocios de nuestro pueblo, cualquiera puede redactar una noticia para que aparezca en este medio mientras pase un proceso de revisión por parte del staff de Burguillos.info.</p>
</description>
<priority>0</priority>
<menu_text><img alt="Principio" class="index-image-menu" src="/img/burguillos.png?v=1"/></menu_text>
<menu_text><img alt="Principio" class="index-image-menu" src="/img/burguillos.webp?v=1"/></menu_text>
<slug>index</slug>
</category>

View File

@ -1,11 +1,14 @@
<post>
<author>Burguillos.info</author>
<date>2022-11-09T22:38+00:00</date>
<title>Horarios autobuses 2022.</title>
<title>Horarios autobuses Burguillos - Sevilla 2023.</title>
<last_modification_date>2023-05-03T03:40+00:00</last_modification_date>
<ogdesc>Los horarios de autobuses de Burguillos.</ogdesc>
<category>autobuses</category>
<slug>horarios-autobuses-2022</slug>
<slug>horarios-autobuses</slug>
<img src="/img/autobus.webp"/>
<content>
<h2>Horarios Autobuses Castiblanco - Burguillos - Sevilla - Almaden de la Plata - Alcalá del Río - Rinconada - San Ignacio del Viar.</h2>
<h3>Destino Sevilla.</h3>
<table class="ir-a-sevilla">
<tr>

View File

@ -5,13 +5,13 @@
<ogdesc>Migrantes Bienvenidos.</ogdesc>
<category>index</category>
<slug>migrantes-bienvenidos</slug>
<img src="/img/refugees-welcome.png"/>
<img src="/img/refugees-welcome.webp"/>
<content>
<p>Debido a la llegada continuada de personas que provienen de otros países, provincias y localidades, desde Burguillos.info hemos considerado oportuno dedicarle un post a todos aquel que no es natal de Burguillos pero que ya es un burguillero más.</p>
<p>La gente de Burguillos aprecia enormemente la riqueza cultural producto de la mezcla de culturas que se produce en el pueblo.</p>
<p>Queremos que todo aquel que no haya nacido en Burguillos pueda encontrar en este, nuestro pueblo un segundo hogar, por ello consideramos importante revindicar que las personas migrantes tengan acceso a todos sus derechos durante su estancia en Burguillos.</p>
<p>¿Vienes de fuera? En Burguillos.info nos gustaría hacernos eco de tu historia. Contacta con <a href="mailto://contact@owlcode.tech">contact@owlcode.tech</a> para contarnos tu experiencia.</p>
<p>¿Vienes de fuera? En Burguillos.info nos gustaría hacernos eco de tu historia. Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a> para contarnos tu experiencia.</p>
</content>
</post>

View File

@ -14,41 +14,41 @@
<p>En primer lugar vamos a instalar Feeder, un cliente de RSS de software libre para Android.</p>
<img src="/img/rss/1.jpg" alt="Captura de pantalla de la aplicación Feeder en el Play Store."/>
<img src="/img/rss/1.webp" alt="Captura de pantalla de la aplicación Feeder en el Play Store."/>
<p>Ahora visitarémos bajarémos abajo del todo de cualquier página de Burguillos.info y veremos un botón morado con un punto y dos curvas que nos indicará que nos suscribamos.</p>
<img src="/img/rss/2.jpg" alt="Captura de pantalla del botón de suscribirse."/>
<img src="/img/rss/2.webp" alt="Captura de pantalla del botón de suscribirse."/>
<p>Procederemos a dejar presionado sobre el botón hasta que nos aparezca este menú.</p>
<img src="/img/rss/3.jpg" alt="Menú en el que seleccionar copiar enlace"/>
<img src="/img/rss/3.webp" alt="Menú en el que seleccionar copiar enlace"/>
<p>Es muy importante que verifiquemos que la url termina en all.xml, si no nos habremos equivocado de botón, el otro idéntico es para suscribirse solo a una categoría, lo cual es útil si por ejemplo solo quieres enterarte de las noticias relacionadas con el autobús.</p>
<p>Una vez verificado, procederemos a pulsar sobre copiar enlace y abriremos Feeder, la aplicación que acabamos de descargar.</p>
<p>Una vez abierta pulsaremos en la esquina superior derecha sobre los tres puntos y veremos esta pantalla:</p>
<img src="/img/rss/4.jpg" alt="Feeder con el menú abierto."/>
<img src="/img/rss/4.webp" alt="Feeder con el menú abierto."/>
<p>Pulsaremos sobre "Add Feed" y nos saldrá esto:</p>
<img src="/img/rss/5.jpg" alt="Feeder con un cuadro de dialogo para añadir feed abierto."/>
<img src="/img/rss/5.webp" alt="Feeder con un cuadro de dialogo para añadir feed abierto."/>
<p>Dejamos presionado hasta que nos aparezca la opción de pegar el texto que copiamos antes y lo pegamos.</p>
<img src="/img/rss/6.jpg" alt="Feeder con un cuadro de dialogo para añadir feed abierto con el siguiente contenido 'https://burguillos.info/all.rss'."/>
<img src="/img/rss/6.webp" alt="Feeder con un cuadro de dialogo para añadir feed abierto con el siguiente contenido 'https://burguillos.info/all.rss'."/>
<p>Hecho esto pulsamos sobre buscar y si lo hemos hecho todo bien veremos lo siguiente:</p>
<img src="/img/rss/7.jpg" alt="Feeder con un cuadro de dialogo para añadir feed abierto con el siguiente contenido 'https://burguillos.info/all.rss' y abajo un dialogo mostrando los datos de Feed de Burguillos.info."/>
<img src="/img/rss/7.webp" alt="Feeder con un cuadro de dialogo para añadir feed abierto con el siguiente contenido 'https://burguillos.info/all.rss' y abajo un dialogo mostrando los datos de Feed de Burguillos.info."/>
<p>Pulsamos sobre el elemento que ha aparecido debajo del cuadro de busqueda y pasaremos a otra pantalla donde deberemos desplazarnos abajo del todo.</p>
<img src="/img/rss/8.jpg" alt="Un dialogo donde se muestran preferencias para el Feed"/>
<img src="/img/rss/8.webp" alt="Un dialogo donde se muestran preferencias para el Feed"/>
<p>Cuando pulsemos "Ok" habremos conseguido suscribirnos a Burguillos.info.</p>
<img src="/img/rss/9.jpg" alt="Las noticias de Burguillos.info ahora aparecen listadas en la aplicación."/>
<img src="/img/rss/9.webp" alt="Las noticias de Burguillos.info ahora aparecen listadas en la aplicación."/>
<p>RSS es más divertido cuando te suscribes a todos los sitios web que te interesen que provean RSS, de ese modo puedes ser el primero en enterarte de todo lo que esté pasando, y de forma totalmente anónima.</p>
</div>

View File

@ -1,64 +1,74 @@
<post>
<author>Burguillos.info</author>
<date>2022-11-11T23:09+00:00</date>
<title>La Tienda de Noemi.</title>
<ogdesc>La Tienda de Noemi.</ogdesc>
<category>comercios</category>
<title>Carta y Menú de la Tienda de Noemi en Burguillos.</title>
<last_modification_date>2023-05-03T20:10+00:00</last_modification_date>
<img src="/img/noemi.webp"/>
<ogdesc>Carta y Menú de la Tienda de Noemi en Burguillos.</ogdesc>
<category>donde-comer</category>
<slug>tienda-noemi</slug>
<attributes>
<attribute>hamburguesas</attribute>
</attributes>
<content>
<h2>Hamburguesas, Pollofres, Gofres, Buñuelos, Montaditos, Salchipapas, entra y descubrelo.</h2>
<img alt="Front door of the shop Tienda Noemi" style="border: solid 1px black;" src="/img/noemi.webp"/>
<p>Hoy os traemos un negocio de nueva apertura, "La Tienda de Noemi" localizado en Calle Albahaca Local 2 ACC, ideal para comer en Burguillos.</p>
<p>Este negocio abre de 17:00 a 22:00 de Lunes a Jueves y de 17:00 a 00:00 de Viernes a Domingo.</p>
<p>Además de vender multitud de bebidas, esta tienda ofrece bocadillos y otros productos preparados como buñuelos, además puedes dejar tu pedido encargado por teléfono en <a href="tel://+34698901484">698901484</a>.</p>
<p>Además de vender multitud de bebidas, esta tienda ofrece bocadillos y otros productos preparados como buñuelos, además puedes dejar tu pedido encargado por teléfono en <a href="tel://+34698901484">698901484</a>, deberás recogerlo en el establecimiento.</p>
<p>A continuación listamos el menú completo de comidas para haceros la boca agua.</p>
<h3>Hamburguesas</h3>
<ol class="productos">
<li>Hamburguesa Simple. (Carne y queso.) <b>2€</b></li>
<li>Hamburguesa Completa. (Carne, cebolla, lechuga, tomate y queso.) <b>2.50€</b></li>
<li>Hamburguesa Super. (Carne, huevo, bacon, queso, cebolla y york.) <b>3.50€</b></li>
<li>Hamburguesa Yopi. (Filete pollo, queso, tomate, cebolla y lechuga.) <b>2.50€</b></li>
<li>Hamburguesa Simple. (Carne y queso.) <b>2€</b></li>
<li>Hamburguesa Completa. (Carne, cebolla, lechuga, tomate y queso.) <b>2.50€</b></li>
<li>Hamburguesa Super. (Carne, huevo, bacon, queso, cebolla y york.) <b>3.50€</b></li>
<li>Hamburguesa Yopi. (Filete pollo, queso, tomate, cebolla y lechuga.) <b>2.50€</b></li>
</ol>
<h3>Bocadillos</h3>
<li>Bocadillo de pollo con queso. <b>2.50€</b></li>
<li>Bocadillo de pollo con cebolla, queso y tomate. <b>2.50€</b></li>
<li>Bocadillo de superpollo con queso, bacon, cochinito, tomate, cebolla y lechuga. <b>3€</b></li>
<li>Bocadillo de filete de lomo con queso. <b>2.50€</b></li>
<li>Bocadillo de filete de lomo con queso, tomate, cebolla y lechuga. <b>3€</b></li>
<li>Bocadillo de superlomo con queso, bacon, cochinito, tomate, cebolla y lechuga. <b>3€</b></li>
<li>Bocadillo de cochinito con queso. <b>2€</b></li>
<li>Bocadillo de cochinito con queso, bacon, cebolla, tomate y lechuga. <b>3€</b></li>
<li>Bocadillo de lomo adobado con queso. <b>2€</b></li>
<li>Bocadillo de lomo adobado con queso, bacon, cebolla, tomate y lechuga. <b>3€</b></li>
<li>Bocadillo de bacon y queso. <b>1.50€</b></li>
<li>Bocadillo vegetal con pollo. <b>3.50€</b></li>
<li>Serranito. (Pollo o lomo, tortilla francesa, pimiento, tomate y queso.) <b>4€</b></li>
<li>Super serranito. (Pollo o lomo, tortilla francesa, pimiento, cochinito, bacon, patatas, tomate y queso.) <b>6€</b></li>
<li>Perrito caliente simple. <b>2€</b></li>
<li>Sandwich de jamon york y queso. <b>1.50€</b></li>
<li>Sandwich vegetal. <b>2€</b></li>
<li>Montadito de pollo o lomo. <b>2€</b></li>
<ol class="productos" start="5">
<li>Bocadillo de pollo con queso. <b>2.50€</b></li>
<li>Bocadillo de pollo con cebolla, queso y tomate. <b>2.50€</b></li>
<li>Bocadillo de superpollo con queso, bacon, cochinito, tomate, cebolla y lechuga. <b>3€</b></li>
<li>Bocadillo de filete de lomo con queso. <b>2.50€</b></li>
<li>Bocadillo de filete de lomo con queso, tomate, cebolla y lechuga. <b>3€</b></li>
<li>Bocadillo de superlomo con queso, bacon, cochinito, tomate, cebolla y lechuga. <b>3€</b></li>
<li>Bocadillo de cochinito con queso. <b>2€</b></li>
<li>Bocadillo de cochinito con queso, bacon, cebolla, tomate y lechuga. <b>3€</b></li>
<li>Bocadillo de lomo adobado con queso. <b>2€</b></li>
<li>Bocadillo de lomo adobado con queso, bacon, cebolla, tomate y lechuga. <b>3€</b></li>
<li>Bocadillo de bacon y queso. <b>1.50€</b></li>
<li>Bocadillo vegetal con pollo. <b>3.50€</b></li>
<li>Serranito. (Pollo o lomo, tortilla francesa, pimiento, tomate y queso.) <b>4€</b></li>
<li>Super serranito. (Pollo o lomo, tortilla francesa, pimiento, cochinito, bacon, patatas, tomate y queso.) <b>6€</b></li>
<li>Perrito caliente simple. <b>2€</b></li>
<li>Sandwich de jamon york y queso. <b>1.50€</b></li>
<li>Sandwich vegetal. <b>2€</b></li>
<li>Montadito de pollo o lomo. <b>2€</b></li>
</ol>
<h3>Otros</h3>
<li>Nuggets con patatas. (8 unidades.) <b>3.50€</b></li>
<li>Croquetas con patatas. (8 unidades.) <b>3.50€</b></li>
<li>Salchipapa pequeña. <b>2€</b></li>
<li>Salchipapa grande. <b>3.50€</b></li>
<li>Patatas pequeñas. <b>2€</b></li>
<li>Patatas grandes. <b>3.50€</b></li>
<li>Crepes. <b>3.50€</b></li>
<li>Tortitas. <b>3.50€</b></li>
<li>Gofres con chocolate. <b>3.50€</b></li>
<li>Buñuelos. <b>3.50€</b></li>
<li>Pollofres. <b>4€</b></li>
<ol class="productos" start="23">
<li>Nuggets con patatas. (8 unidades.) <b>3.50€</b></li>
<li>Croquetas con patatas. (8 unidades.) <b>3.50€</b></li>
<li>Salchipapa pequeña. <b>2€</b></li>
<li>Salchipapa grande. <b>3.50€</b></li>
<li>Patatas pequeñas. <b>2€</b></li>
<li>Patatas grandes. <b>3.50€</b></li>
<li>Crepes. <b>3.50€</b></li>
<li>Tortitas. <b>3.50€</b></li>
<li>Gofres con chocolate. <b>3.50€</b></li>
<li>Buñuelos. <b>3.50€</b></li>
<li>Pollofres. <b>4€</b></li>
</ol>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto://contact@owlcode.tech">contact@owlcode.tech</a>.</p>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -4,7 +4,7 @@
<title>Cartel de Cuentacuentos Infantil "Don Juan Tenorio".</title>
<ogdesc>Cartel de Cuentacuentos Infantil "Don Juan Tenorio".</ogdesc>
<category>index</category>
<img src="/img/mairami-preview.png"/>
<img src="/img/mairami-preview.webp"/>
<slug>cuentacuentos-infantil-don-juan-tenorio</slug>
<content>
<p>Hoy os traemos información de una representación teatral que se ha producido este mismo día en Alcalá del Rio.</p>
@ -12,7 +12,7 @@
<p>La obra ha sido representada por la Asociación de Teatro Mairami cuyos origenes están fuertemente ligados a Burguillos y los habitantes de Burguillos profesamos infinito cariño por los que conforman esta asociación por su inestimable contribución a la propagación de la cultura.</p>
<p>Adjuntamos algunas imágenes relevantes, el cartel de la obra y una fotografía de otra representación que muestra a una parte de los actores de Mairami.</p>
<img alt="Cartel de la obra." src="/img/mairami-1.jpg"/>
<img alt="Elenco de actores." src="/img/mairami-2.jpg"/>
<img alt="Cartel de la obra." src="/img/mairami-1.webp"/>
<img alt="Elenco de actores." src="/img/mairami-2.webp"/>
</content>
</post>

View File

@ -4,7 +4,7 @@
<title>Información fresca del Cuentacuentos de Mairami del 2022/11/12.</title>
<ogdesc>Información fresca del Cuentacuentos de Mairami del 2022/11/12.</ogdesc>
<category>index</category>
<img src="/img/mairami-preview.png"/>
<img src="/img/mairami-preview.webp"/>
<slug>cuentacuentos-infantil-don-juan-tenorio-imagenes</slug>
<content>
<p>En la tarde de ayer 12 de noviembre, la Compañía de teatro MAIRAMI, realizó un Cuentacuentos basado en la obra de José Zorrilla "Don Juan Tenorio", una versión que combina verso y prosa, con semejanzas actuales para que el público infantil pueda entender los entresijos de esta obra maestra.</p>
@ -13,11 +13,11 @@
<p>Ademas traemos las cuentas de Instagram y Facebook de Mairami para que podais seguir todas sus novedades <a href="https://www.instagram.com/teatro_mairami/">@teatro_mairami</a> y <a href="https://es-es.facebook.com/ACMairami/">A.C. Mairami</a>
<p>Sin más demora ahí van las imagenes y el vídeo completo.</p>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/1.jpg"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/2.jpg"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/3.jpg"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/4.jpg"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/5.jpg"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/1.webp"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/2.webp"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/3.webp"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/4.webp"/>
<img alt="La compañia mairami interpreta un cuentacuentos de Don Juan Tenorio" src="/img/mairami-cuentacuentos/5.webp"/>
<video src="/vid/cuentacuentos-don-juan-tenorio-mairami.mp4" controls/>
</content>
</post>

View File

@ -4,10 +4,10 @@
<title>Últimas plazas para Taller de Macrame.</title>
<ogdesc>Últimas plazas para Taller de Macrame.</ogdesc>
<category>talleres</category>
<img src="/img/poster-macrame-preview.png"/>
<img src="/img/poster-macrame-preview.webp"/>
<slug>ultimas-plazas-taller-de-macrame</slug>
<content>
<img alt="Poster del taller" src="/img/poster-macrame.png"/>
<img alt="Poster del taller" src="/img/poster-macrame.webp"/>
<p>Ultima hora, nos hemos enterado de un taller de Macramé planeado para el 26 de Noviembre de 10:00 a 18:00 en la Mercería la Gallina Costurera localizada en Avenida Pepe Luna.</p>
<p>El taller está organizado por Maka Guijo y costará 45€ por persona.</p>

View File

@ -4,10 +4,10 @@
<title>Venta de calendarios de la Plataforma N.A.L.A.</title>
<ogdesc>Venta de calendarios de la Plataforma N.A.L.A.</ogdesc>
<category>animales-y-mascotas</category>
<img src="/img/plataforma-nala-preview.png"/>
<img src="/img/plataforma-nala-preview.webp"/>
<slug>venta-de-calendarios-plataforma-nala</slug>
<content>
<img alt="Logo plataforma NALA" src="/img/plataforma-nala.png"/>
<img alt="Logo plataforma NALA" src="/img/plataforma-nala.webp"/>
<p>Plataforma N.A.L.A. es una entidad que se dedica a buscar un hogar a mascotas abandonadas en las cercanias de Burguillos.</p>
<p>Debido al deplorable estado en el que suelen encontrarse a los animales y a la necesidad de esterilizarlos antes de darlos en adopción para evitar la proliferación de más animales abandonados, N.A.LA acumula durante el año deudas veterinarias que sufraga con la emisión de un calendario solidario.</p>

View File

@ -4,10 +4,10 @@
<title>Clases de Guitarra con Eduardo Trassierra.</title>
<ogdesc>Clases de Guitarra con Eduardo Trassierra.</ogdesc>
<category>talleres</category>
<img src="/img/eduardo-trasierra-preview.png"/>
<img src="/img/eduardo-trasierra-preview.webp"/>
<slug>clases-guitarra-eduardo-trassierra</slug>
<content>
<img alt="Imagen de las clases de guitarra, el profesor Eduardo Trassierra" src="/img/eduardo-trasierra.jpg"/>
<img alt="Imagen de las clases de guitarra, el profesor Eduardo Trassierra" src="/img/eduardo-trasierra.webp"/>
<p>Os informamos de que se ha abierto el plazo de inscripción para clases de guitarra impartidas por Eduardo Trassierra, un reputado guitarrista a escala nacional.</p>
<p>Las clases estarán localizadas en nuestro municipio, Burguillos.</p>

View File

@ -4,10 +4,10 @@
<title>Fin de semana de cultura.</title>
<ogdesc>Fin de semana de cultura.</ogdesc>
<category>index</category>
<img src="/img/portada-certamen-teatro-preview.png"/>
<img src="/img/portada-certamen-teatro-preview.webp"/>
<slug>fin-de-semana-de-cultura</slug>
<content>
<img alt="Cartel de las obras." src="/img/portada-certamen-teatro.jpg"/>
<img alt="Cartel de las obras." src="/img/portada-certamen-teatro.webp"/>
<p>Hoy nos hacemos eco de una noticia que hemos encontrado en la página web del ayuntamiento, el XII Certamen de Teatro de Burguillos.</p>
<p>Vamos a proceder a fusilar el artículo para que lo podáis leer aquí y dejaremos el enlace para que podaís visitar el original:</p>
<p>No hagas planes para este fin de semana y vive con nosotros el <a href="https://www.facebook.com/hashtag/certamen">#Certamen</a> de <a href="https://www.facebook.com/hashtag/teatro">#Teatro</a> "Villa de <a href="https://www.facebook.com/hashtag/burguillos">#Burguillos</a>" Os mostramos las obras seleccionadas y los horarios de representación:</p>

View File

@ -1,13 +1,20 @@
<post>
<author>Burguillos.info</author>
<date>2022-11-18T00:00+00:00</date>
<title>El Bocatón - Café - Bar - Pastelería - Pizzeria - Hamburguesería.</title>
<ogdesc>El Bocatón - Café - Bar - Pastelería - Pizzeria - Hamburguesería.</ogdesc>
<category>comercios</category>
<img src="/img/bocaton-preview.png"/>
<last_modification_date>2023-05-02T00:00+00:00</last_modification_date>
<title>El Bocatón - Burguillos - Carta y Menú</title>
<ogdesc>El Bocatón - Burguillos - Carta y Menú</ogdesc>
<category>donde-comer</category>
<img src="/img/bocaton-preview.webp"/>
<slug>el-bocaton</slug>
<attributes>
<attribute>reparto-a-domicilio-comida</attribute>
<attribute>hamburguesas</attribute>
<attribute>pizzerias</attribute>
</attributes>
<content>
<img alt="Exterior del Bar Bocatón." src="/img/bocaton-4.jpg"/>
<h2>Café - Bar - Pastelería - Pizzeria - Hamburguesería</h2>
<img alt="Exterior del Bar Bocatón." src="/img/bocaton-4.webp"/>
<p>Damos la bienvenida a un nuevo negocio al directorio de Burguillos.info, El Bocatón.</p>
<p>El Bocatón es un Café - Bar ubicado al lado del Parque del Barrio Lejos, (Calle Naranjo, 11) ideal para tomarte algo mientras tus hijos juegan en el parque.</p>
@ -45,7 +52,7 @@
<h3>Chapata Pizza</h3>
<p>Adjuntamos imagen de la Chapata Pizza para que podáis verla antes de mostar las opciones.</p>
<img alt="Chapata Pizza" src="/img/chapata-pizza.jpg"/>
<img alt="Chapata Pizza" src="/img/chapata-pizza.webp"/>
<ol>
<li>Completa con dos ingredientes. <b>4€</b></li>
@ -130,9 +137,5 @@
<p>Aprovechamos este espacio final tras terminar de listar el menú para adjuntaros más imágenes del local y desearos una feliz comida.</p>
<img alt="Exterior del Bar Bocatón." src="/img/bocaton-1.jpg"/>
<img alt="Exterior del Bar Bocatón." src="/img/bocaton-2.jpg"/>
<img alt="Exterior del Bar Bocatón." src="/img/bocaton-3.jpg"/>
</content>
</post>

View File

@ -5,9 +5,9 @@
<ogdesc>¡Silencio, se piensa!.</ogdesc>
<category>index</category>
<slug>silencio-se-piensa</slug>
<img src="/img/silencio-se-piensa-preview.png"/>
<img src="/img/silencio-se-piensa-preview.webp"/>
<content>
<img alt="Portada silencio, se piensa" src="/img/silencio-se-piensa-1.jpg">
<img alt="Portada silencio, se piensa" src="/img/silencio-se-piensa-1.webp">
<p>Hemos recibido información adicional de la obra de teatro del día 2022/11/19, desde Burguillos.info procedemos a comunicaros las novedades:</p>
<p>🎭 Continuamos con el Certamen de teatro “Villa de Burguillos “ con la 2da compañía finalista , Producciones el dramaturgo de Jerez de la Frontera ( Cádiz) y que estrenan en primicia su obra : ¡Silencio, se piensa ! Escrita por José Mateos , director de la compañía. Los jóvenes actores Luis Guerrero y Emilio Rosales son los en cargados de envolvernos en esta magnífica historia que narra el futuro incierto de dos actores que acaban de quedarse sin trabajo... obra que recurre al auto sacramental como género clásico poco usado hoy día por los dramaturgos contemporáneos . Estilo que ejercen de forma magistral induciendo sutilmente al bonito ejercicio de pensar con profundidad y espíritu autocrítico. ¿¿Te vas a perder esta oportunidad?? Te esperamos a las 20 :00 H en el teatro municipal. 🎭</p>

View File

@ -1,13 +1,15 @@
<post>
<author>Burguillos.info</author>
<date>2022-11-19T18:03+00:00</date>
<title>Centro Médico Juan Manuel Pérez Sanchez</title>
<ogdesc>Centro Médico Juan Manuel Pérez Sanchez</ogdesc>
<title>Centro Médico Juan Manuel Pérez Sanchez - Datos de Contacto - Pedir Cita</title>
<ogdesc>Centro Médico Juan Manuel Pérez Sanchez - Datos de Contacto - Pedir Cita</ogdesc>
<last_modification_date>2023-05-03T00:59+00:00</last_modification_date>
<category>comercios</category>
<slug>centro-medico-juan-manuel-perez-sanchez</slug>
<img src="/img/policlinica-burguillos-preview.png"/>
<img src="/img/policlinica-burguillos-preview.webp"/>
<content>
<img alt="Cartel de Centro Médico Juan Manuel Pérez Sanchez" src="/img/policlinica-burguillos-2.jpg"/>
<h2>Clinica Dental, Ortodoncia, Pedagogía y Podolologia en Burguillos.</h2>
<img alt="Cartel de Centro Médico Juan Manuel Pérez Sanchez" src="/img/policlinica-burguillos-2.webp"/>
<p>La clínica Juan Manuel Pérez Sanchez es un centro de atención a la salud dedicado a las siguientes especialidades:</p>
<ul>
@ -23,6 +25,6 @@
<p>Localizado en Calle la Fuente número 24.</p>
<img alt="Entrada de la clínica" src="/img/policlinica-burguillos-1.jpg"/>
<img alt="Entrada de la clínica" src="/img/policlinica-burguillos-1.webp"/>
</content>
</post>

View File

@ -1,21 +1,26 @@
<post>
<author>Burguillos.info</author>
<date>2022-11-22T09:47+00:00</date>
<title>Mesón - Bar - Cristobal</title>
<ogdesc>Mesón - Bar - Cristobal</ogdesc>
<category>comercios</category>
<title>Mesón - Bar - Cristobal - Carta y Menú.</title>
<ogdesc>Mesón - Bar - Cristobal - Carta y Menú.</ogdesc>
<last_modification_date>2023-05-03T02:34+02:00</last_modification_date>
<category>donde-comer</category>
<slug>bar-cristobal</slug>
<img src="/img/cristobal-preview.png"/>
<attributes>
<attribute>hamburguesas</attribute>
</attributes>
<img src="/img/cristobal-preview.webp"/>
<content>
<img alt="Entrada al Mesón - Bar Cristobal." src="/img/cristobal.jpg"/>
<p>El Mesón - Bar Cristobal ubicado en la Calle los Palmeros número 30 es una opción ideal para tomarte un café o comer en Burguillos.</p>
<h2 style="background: black; color: red;">Menú actualizado con nuevos precios y productos 2023-05-03</h2>
<img alt="Entrada al Mesón - Bar Cristobal." src="/img/cristobal.webp"/>
<p>El Mesón - Bar Cristobal ubicado en la Calle los Palmeros número 32 es una opción ideal para tomarte un café o comer en Burguillos.</p>
<p>Además acepta pedidos a domicilio durante los meses Noviembre, Diciembre, Enero y Febrero de Martes a Domingo durante las noches.</p>
<p>El número de teléfono de contacto es <a href="tel:+34621210460">621210460</a>.</p>
<p>A continuación procedemos a dejar la carta para que podáis realizar el pedido que deseeis:</p>
<h3>Entrantes</h3>
<h2>Entrantes</h2>
<table>
<tr>
<th></th>
@ -55,18 +60,18 @@
</tr>
<tr>
<td>Ensalada Mixta</td>
<td>-</td>
<td>-</td>
<td>4€</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>Ensalada Normal</td>
<td>-</td>
<td>-</td>
<td>3€</td>
<td>-</td>
<td>-</td>
</tr>
</table>
<h3>Aperitivos</h3>
<h2>Aperitivos</h2>
<table>
<tr>
<th></th>
@ -117,7 +122,166 @@
<td>8€</td>
</tr>
</table>
<h3>Pescados</h3>
<h2>En Temporada</h2>
<table>
<tr>
<th></th>
<th>Tapa</th>
<th>1/2 Ración</th>
<th>Ración</th>
</tr>
<tr>
<td>Cabrillas</td>
<td>2.50€</td>
<td>5€</td>
<td>10€</td>
</tr>
<tr>
<td>Caracoles</td>
<td>2.50€</td>
<td>5€</td>
<td>10€</td>
</tr>
</table>
<h2>Ibéricos</h2>
<table>
<tr>
<th></th>
<th>Tapa</th>
<th>1/2 Ración</th>
<th>Ración</th>
</tr>
<tr>
<td>Secreto</td>
<td>--</td>
<td>S-P</td>
<td>--</td>
</tr>
<tr>
<td>Lagrimitas</td>
<td>3.50€</td>
<td>7€</td>
<td>14€</td>
</tr>
<tr>
<td>Lagarto</td>
<td>3.50€</td>
<td>7€</td>
<td>14€</td>
</tr>
<tr>
<td>Tocinito</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
</table>
<h2>Carnes</h2>
<table>
<tr>
<th></th>
<th>Tapa</th>
<th>1/2 Ración</th>
<th>Ración</th>
</tr>
<tr>
<td>Carne Asá</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Solomillo al Whisky</td>
<td>3.50€</td>
<td>8€</td>
<td>16€</td>
</tr>
<tr>
<td>Solomillo a la Pimienta</td>
<td>3.50€</td>
<td>8€</td>
<td>16€</td>
</tr>
<tr>
<td>Solomillo al Roquefort</td>
<td>3.50€</td>
<td>8€</td>
<td>16€</td>
</tr>
<tr>
<td>Churrasco de Pollo/Cerdo</td>
<td>--</td>
<td>5.50€</td>
<td>--</td>
</tr>
<tr>
<td>Mini Serranito de Pollo/Cerdo</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Serranito de Pollo/Cerdo</td>
<td>--</td>
<td>5€</td>
<td>--</td>
</tr>
<tr>
<td>Montadito de Pollo/Cerdo</td>
<td>--</td>
<td>2.50€</td>
<td>--</td>
</tr>
<tr>
<td>Montadito de Gambas</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Mantecadito de Pollo/Cerdo</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Pechuga de Pollo</td>
<td>--</td>
<td>5.50€</td>
<td>--</td>
</tr>
<tr>
<td>Pinchito de Pollo/Cerdo</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Brocheta de Solomillo</td>
<td>--</td>
<td>7€</td>
<td>--</td>
</tr>
<tr>
<td>Hamburguesa Simple</td>
<td>--</td>
<td>2.50€</td>
<td>--</td>
</tr>
<tr>
<td>Hamburguesa Completa</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Hamburguesa de Buey</td>
<td>--</td>
<td>5€</td>
<td>--</td>
</tr>
</table>
<h2>Pescados</h2>
<table>
<tr>
<th></th>
@ -180,6 +344,12 @@
<td>8€</td>
<td>14€</td>
</tr>
<tr>
<td>Pescado Variado.</td>
<td>-</td>
<td>7€</td>
<td>-</td>
</tr>
<tr>
<td>Pez Espada</td>
<td>--</td>
@ -199,160 +369,7 @@
<td>--</td>
</tr>
</table>
<h3>En temporada</h3>
<table>
<tr>
<th></th>
<th>Tapa</th>
<th>1/2 Ración</th>
<th>Ración</th>
</tr>
<tr>
<td>Cabrillas</td>
<td>2.50€</td>
<td>5€</td>
<td>10€</td>
</tr>
<tr>
<td>Caracoles</td>
<td>2.50€</td>
<td>5€</td>
<td>10€</td>
</tr>
</table>
<h3>Carnes</h3>
<table>
<tr>
<th></th>
<th>Tapa</th>
<th>1/2 Ración</th>
<th>Ración</th>
</tr>
<tr>
<td>Carne Asá</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Churrasco de Pollo/Cerdo</td>
<td>--</td>
<td>5.50€</td>
<td>--</td>
</tr>
<tr>
<td>Mini Serranito de Pollo/Cerdo</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Serranito de Pollo/Cerdo</td>
<td>--</td>
<td>5€</td>
<td>--</td>
</tr>
<tr>
<td>Montadito de Pollo/Cerdo</td>
<td>--</td>
<td>2.50€</td>
<td>--</td>
</tr>
<tr>
<td>Montadito de Gambas</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Pechuga de Pollo</td>
<td>--</td>
<td>5.50€</td>
<td>--</td>
</tr>
<tr>
<td>Pinchito de Pollo/Cerdo</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Solomillo al Whisky</td>
<td>3.50€</td>
<td>8€</td>
<td>16€</td>
</tr>
<tr>
<td>Solomillo a la Pimienta</td>
<td>3.50€</td>
<td>8€</td>
<td>16€</td>
</tr>
<tr>
<td>Solomillo al Roquefort</td>
<td>3.50€</td>
<td>8€</td>
<td>16€</td>
</tr>
<tr>
<td>Brocheta de Solomillo</td>
<td>--</td>
<td>7€</td>
<td>--</td>
</tr>
<tr>
<td>Hamburguesa Simple</td>
<td>--</td>
<td>2.50€</td>
<td>--</td>
</tr>
<tr>
<td>Hamburguesa Completa</td>
<td>--</td>
<td>3€</td>
<td>--</td>
</tr>
<tr>
<td>Hamburguesa de Buey</td>
<td>--</td>
<td>5€</td>
<td>--</td>
</tr>
</table>
<h3>Ibéricos</h3>
<table>
<tr>
<th></th>
<th>Tapa</th>
<th>1/2 Ración</th>
<th>Ración</th>
</tr>
<tr>
<td>Secreto</td>
<td>--</td>
<td>S-P</td>
<td>--</td>
</tr>
<tr>
<td>Lagrimitas</td>
<td>3.50€</td>
<td>7€</td>
<td>14€</td>
</tr>
<tr>
<td>Lagarto</td>
<td>3.50€</td>
<td>7€</td>
<td>14€</td>
</tr>
<tr>
<td>Tocinito</td>
<td>3.50€</td>
<td>7€</td>
<td>14€</td>
</tr>
</table>
<h3>Cazuelitas</h3>
<h2>Cazuelitas</h2>
<table>
<tr>
<th></th>
@ -366,6 +383,18 @@
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Bacalao con Tomate</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Espinacas</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Carne con tomate</td>
<td>3€</td>
@ -378,24 +407,14 @@
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Espinacas</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
<tr>
<td>Bacalao con Tomate</td>
<td>3€</td>
<td>6€</td>
<td>12€</td>
</tr>
</table>
<h3>Postres</h3>
<h2>Postres</h2>
<ol>
<li>Arroz con leche <b>2.50€</b></li>
<li>Natillas <b>2.50€</b></li>
<li>Helados <b>Precio Variable</b></li>
<li>Flan de Huevo <b>2.50€</b></li>
<li>Helados Nestle <b>Precio Variable</b></li>
</ol>
<p>Por último desde Burguillos.info os indicamos que el precio por el servicio de pan y picos por comensal es de 0.30€ y que tenéis la posibilidad de pedir un extra en salsas por 0.50€.</p>

View File

@ -4,9 +4,10 @@
<title>Diaspora para las masas.</title>
<ogdesc>Diaspora para las masas.</ogdesc>
<category>index</category>
<img src="/img/diaspora-article-preview.png"/>
<img src="/img/diaspora-article-preview.webp"/>
<slug>social-burguillos-info</slug>
<content>
<h3 style="color: red; background: black;">Este servicio ha sido temporalmente descontinuado por falta de actualizaciones por parte de sus desarrolladores. Disculpen las molestias</h3>
<p>Hoy desde Burguillos.info os traemos por un lado un nuevo método de estar al tanto de las novedades de la web y por otro una forma nueva de comunicarte con los otros burguilleros y burguilleras.</p>
<p>La nueva web <a href="https://social.burguillos.info">social.burguillos.info</a> es eso y más, dicha web es una instancia de Diaspora, una red social de software libre que te permite interactuar con quien quieras de la red independientemente de en que instancia te encuentras mediante un algoritmo conocido como federación.</p>
@ -17,24 +18,24 @@
<p>En primer lugar en la parte de abajo de la web podrás encontrar un nuevo icono a parte del ya conocido de suscripción por RSS, uno que es una suerte de asteristo con un circulo negro alrededor.</a>
<img alt="Indicaciones para encontrar el icono de suscripción por Diaspora" style="border: solid 1px black;" src="/img/diaspora-article-image-1.png"/>
<img alt="Indicaciones para encontrar el icono de suscripción por Diaspora" style="border: solid 1px black;" src="/img/diaspora-article-image-1.webp"/>
<p>Al pulsar sobre el llegarás a nuestro perfil en dicha red.</p>
<img alt="Perfil de Burguillos.info en Diaspora." style="border: solid 1px black;" src="/img/diaspora-article-image-2.png"/>
<img alt="Perfil de Burguillos.info en Diaspora." style="border: solid 1px black;" src="/img/diaspora-article-image-2.webp"/>
<p>No obstante aun no podremos seguir a la cuenta porque aun no nos hemos registrado. Como he dicho, podemos seguir a Burguillos.info desde cualquier instancia, puedes elegir una de <a href="https://diaspora.fediverse.observer/">diaspora.fediverse.observer</a> o usar la propia de Burguillos.info, en este caso voy a seguir el tutorial desde la instancia de Burguillos.info.</p>
<img alt="Perfil de Burguillos.info en Diaspora con la opción de registrarse marcada." style="border: solid 1px black;" src="/img/diaspora-article-image-3.png"/>
<img alt="Perfil de Burguillos.info en Diaspora con la opción de registrarse marcada." style="border: solid 1px black;" src="/img/diaspora-article-image-3.webp"/>
<p>Pulsamos sobre "Create account" para registrarnos y empezar a disfrutar Diaspora.</p>
<img alt="Datos de inscripción rellenos." style="border: solid 1px black;" src="/img/diaspora-article-image-4.png"/>
<img alt="Datos de inscripción rellenos." style="border: solid 1px black;" src="/img/diaspora-article-image-4.webp"/>
<p>Rellenamos la información con nuestro correo electrónico, nombre de usuario, contraseña repetida dos veces y resolvemos la comprobación de que somos humanos, para despues presionar de nuevo en "Create Account".</p>
<p>Si tienes dificultades en este paso o cualquier otro contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
<img alt="Menú pidiendonos más datos que queramos incluir." style="border: solid 1px black;" src="/img/diaspora-article-image-5.png"/>
<img alt="Menú pidiendonos más datos que queramos incluir." style="border: solid 1px black;" src="/img/diaspora-article-image-5.webp"/>
<p>Una vez hayamos completado la inscripción con exito aparecerá una nueva pantalla ofreciendonos a introducir más información para hacer la experiencia mejor como un avatar y hashtags para que otros usuarios sepan cuales son tus intereses.</p>
@ -42,29 +43,29 @@
<p>Una vez hayas terminado de personalizar a tu gusto tu cuenta, pulsamos sobre "Awesome! Take me to diaspora* >>"</p>
<img alt="Vista principal de Diaspora*." style="border: solid 1px black;" src="/img/diaspora-article-image-6.png"/>
<img alt="Vista principal de Diaspora*." style="border: solid 1px black;" src="/img/diaspora-article-image-6.webp"/>
<p>Al llegar a esta imagen habremos terminado el proceso de registro en Diaspora*, ahora querremos seguir a Burguillos.info, para ello pulsamos en el icono de suscripción en la parte de abajo de este artículo.</p>
<img alt="Indicaciones para encontrar el icono de suscripción por Diaspora" style="border: solid 1px black;" src="/img/diaspora-article-image-1.png"/>
<img alt="Indicaciones para encontrar el icono de suscripción por Diaspora" style="border: solid 1px black;" src="/img/diaspora-article-image-1.webp"/>
<p>Seguimos el enlace.</p>
<img alt="El perfil de Burguillos.info con el nombre de usuario al estilo email seleccionado." style="border: solid 1px black;" src="/img/diaspora-article-image-7.png"/>
<img alt="El perfil de Burguillos.info con el nombre de usuario al estilo email seleccionado." style="border: solid 1px black;" src="/img/diaspora-article-image-7.webp"/>
<p>Seleccionamos el nombre de usuario, que será siempre parecido a una dirección de correo electrónico.</p>
<img alt="El nombre de usuario copiado en la barra de busqueda." style="border: solid 1px black;" src="/img/diaspora-article-image-8.png"/>
<img alt="El nombre de usuario copiado en la barra de busqueda." style="border: solid 1px black;" src="/img/diaspora-article-image-8.webp"/>
<p>Copiamos dicho nombre en la barra de busqueda y pulsamos intro.</p>
<img alt="La nueva pantalla tras pulsar sobre add contact y indicando que se pulse sobre Acquaintances." style="border: solid 1px black;" src="/img/diaspora-article-image-9.png"/>
<img alt="La nueva pantalla tras pulsar sobre add contact y indicando que se pulse sobre Acquaintances." style="border: solid 1px black;" src="/img/diaspora-article-image-9.webp"/>
<p>Pulsamos sobre "Add contact" y aparecerá un menú desplegable donde pulsaremos sobre Acquaintances para indicar que eres conocido de Burguillos.info, con usuarios con los que tengas mayor confianza puedes pulsar Family, Friend o Work, de ese modo puedes redactar tus posts para que lleguen solo a las personas que deseés.</p>
<p>Cuando lo hagas y pulses a "stream", verás que en tu timeline ya aparecen los posts de Burguillos.info.</p>
<img alt="Timeline lleno de posts de Burguillos.info" style="border: solid 1px black;" src="/img/diaspora-article-image-10.png"/>
<img alt="Timeline lleno de posts de Burguillos.info" style="border: solid 1px black;" src="/img/diaspora-article-image-10.webp"/>
<p>Tan solo me queda desearte una feliz estancia en Diaspora*.</p>

View File

@ -4,7 +4,7 @@
<title>Servidor de chat de Burguillos.</title>
<ogdesc>Servidor de chat de Burguillos.</ogdesc>
<category>index</category>
<img src="/img/xmpp-preview.png"/>
<img src="/img/xmpp-preview.webp"/>
<slug>chat-burguillos</slug>
<content>
<p>Desde Burguillos.info creemos en las tecnologías de comunicación descentralizadas, debido a ello configuramos hace poco un servidor de Diaspora* para que los burguilleros y burguilleras puedan usarlo como foro sustituyendo a Facebook.</p>
@ -26,22 +26,22 @@
<p>En primer lugar tendrás que descargar un cliente de XMPP, os recomiendo usar <a href="https://play.google.com/store/apps/details?id=eu.siacs.conversations&gl=US">Conversations</a> ya que implementa encriptación de extremo a extremo, lo que significa que el dueño de tu servidor nunca podrá leer tus mensajes. (Si usas bien esa feature verificando las claves para evitar que sean interceptadas.)</p>
<p>Una vez lo hayas instalado, cuando abras la nueva aplicación encontrarás una pantalla como esta.</p>
<img alt="Pantalla de bienvenida de Conversations" src="/img/xmpp-1.jpg"/>
<img alt="Pantalla de bienvenida de Conversations" src="/img/xmpp-1.webp"/>
<p>Como aun no tenemos una cuenta pulsaremos sobre "Create new account".</p>
<img alt="Pantalla de selección entre servidor por defecto o custom." src="/img/xmpp-2.jpg"/>
<img alt="Pantalla de selección entre servidor por defecto o custom." src="/img/xmpp-2.webp"/>
<p>Una vez hayamos pulsado nos hará una nueva pregunta, si queremos usar el proveedor de Conversations.im o otro.</p>
<p>Para favorecer la descentralización y aprovechar el servidor del pueblo pulsaremos sobre "Use my own provider", si quisieses escoger la primera opción también podrías hablar con la gente suscrita a Burguillos.info, la única desventaja es que no podrías ver las salas públicas creadas en Burguillos.info, tendrías que buscarlas manualmente por su nombre.</p>
<img alt="Pantalla de introducción de datos" src="/img/xmpp-3.jpg"/>
<img alt="Pantalla de introducción de datos" src="/img/xmpp-3.webp"/>
<p>Ahora la aplicación nos pide que introduzcamos el nuevo usuario a crear, para crear tu nombre de usuario deberás hacerlo como si fuese un email terminado en @burguillos.info, por ejemplo manuelsanchez@burguillos.info, anarodriguez@burguillos.info, asociacionX@burguillos.info...</p>
<p>Debes tener cuídado al introducir la contraseña, ya que si la pierdes no tendrás ninguna forma de recuperarla y perderás el acceso a la cuenta, de todos modos crear una nueva es gratis y puedes tener tantas como quieras.</p>
<img alt="Pantalla de selección de avatar" src="/img/xmpp-4.jpg"/>
<img alt="Pantalla de selección de avatar" src="/img/xmpp-4.webp"/>
<p>Ahora nos da la opción de introducir un avatar para hacer nuestra cuenta única y que la gente pueda reconocernos en la red, un avatar es una pequeña imagen que puede ser una foto tuya, de tu mascota, de algo que te guste...</p>

View File

@ -5,9 +5,9 @@
<ogdesc>Di no a la violencia machísta.</ogdesc>
<category>index</category>
<slug>25-n-di-no-a-la-violencia-machista</slug>
<img src="/img/feminismo.png"/>
<img src="/img/feminismo.webp"/>
<content>
<img alt="Simbolo feminista" src="/img/feminismo.jpg"/>
<img alt="Simbolo feminista" src="/img/feminismo.webp"/>
<p>Hoy, día 25 de Noviembre se celebra el día contra la violencia machísta.</p>
<p>Se estima que el setenta por ciento de las mujeres sufre este tipo de violencia a lo largo de su vida<sup><a href="#cita1">1</a></sup></p>

View File

@ -0,0 +1,48 @@
<post>
<author>Sergio Iglesias (Lead Developer)</author>
<date>2023-04-30T23:58:37+02:00</date>
<title>Problemas técnicos.</title>
<ogdesc>Explicación sobre porque no se ha podido acceder a la web estos últimos días.</ogdesc>
<category>index</category>
<img src="/img/fibra-cortada.webp"/>
<slug>problemas-tecnicos</slug>
<content>
<h3>Burguillos.info ha vuelto a la normalidad tras 5 días inoperativo, te explicamos las razones.</h3>
<img style="border: 1px black solid;" src="/img/fibra-cortada.webp" alt="A fiber cable cutted down"/>
<p>En burguillos.info siempre hemos pensado que tenía lógica tener el servidor localizado en Burguillos y no
en otro país como Alemania. Debido a que ningún proveedor de VPS tiene localización en nuestro municipio decidimos
alojar la web en un pequeño ordenador en mi casa que es también sede de la empresa que lleva burguillos.info,
owlcode.tech.</p>
<p>Esta decisión técnica tuvo sentido a pesar de existir proveedores que la podrían alojar con menos problemas habituales
en Burguillos como pueden ser los frecuentes cortes en el suministro eléctrico. Pensamos que si vas a hacer una web sobre Burguillos que menos que
el servidor se encuentre aquí fomentando la economía local y no la economía de otra localidad o país.</p>
<p>No obstante en un despreciable acto de mala voluntad alguien decidió que el cable de fibra óptica de esta web
le estorbaba y lo cortó. Hasta aquí todo tiene fácil solución y no hubiese justificado más de
dos días de tiempo inactivo ya que el técnico de la fibra llegó al día siguiente y realizó el diagnóstico
de que la falta de conectividad se debía a que el cable de fibra óptica había sido seccionado de forma completa
resultando de ese modo imposible que la información fluyese por el mismo, por lo que al día siguiente procedería
a la reinstalación completa del cable.</p>
<p>No obstante uno de los vecinos.- Que en ningún modo está demostrado que tuviese nada que ver con el corte del canal
de comunicación a pesar de haber estado realizando una obra donde reorganizó la disposición del cableado en su fachada.-
Se negó en rotundo a la reposición del cable, fundamental no solo para el funcionamiento de esta web sino también para
mi trabajo.</p>
<p>A día de hoy la sede de esta empresa continúa sin un canal de fibra óptica para operar debido a las reiteradas
negativas del sujeto en cuestión.</p>
<p>El servidor ha sido desplazado a otra localización donde permanecerá hasta que se restaure el servicio y desde
owlcode.tech nos reservamos el derecho a ejercer acciones legales.</p>
<p>Tras el desplazamiento al inspeccionar el servicio social.burguillos.info hemos constatado que no es compatible
con versiones soportadas por la comunidad del lenguaje de programación Ruby, por lo que hemos decidido apagarlo
y sustituirlo por otro servicio de naturaleza federada como puede ser Mastodon. Aceptamos sugerencias sobre qué
software de red social os gustaría ver en este sitio.</p>
<p>Esperamos desde burguillos.info que paséis una mejor semana que la que yo he tenido.</p>
</content>
</post>

View File

@ -0,0 +1,34 @@
<post>
<author>Burguillos.info</author>
<date>2023-04-30T23:58:37+02:00</date>
<title>Subida de precio de los autobuses.</title>
<ogdesc>Precios premium por un servicio tercermundista, el estado actual de los autobuses de Burguillos.</ogdesc>
<category>index</category>
<img src="/img/autobus-burguillos-tercer-mundo.webp"/>
<slug>subida-precio-autobus-burguillos</slug>
<content>
<img style="border: 1px black solid;" src="/img/autobus-burguillos-tercer-mundo.webp" alt="Image of an overloaded bus in a third world country."/>
<h3>Precios premium por un servicio tercermundista, el estado actual de los autobuses de Burguillos.</h3>
<p>Damas ha incrementado una vez más el precio del autobús de 2.31€ a <b>2.50€</b>,
mientras el descuento del gobierno nos llega mal y tarde.</p>
<p>Este es solo uno más de la lista de <b>atropellos</b> que la empresa Damas lleva
realizados en la línea de nuestra localidad con los infinitos retrasos de las líneas,
la gente que esta línea.- Supuestamente deficitaria.- Ha dejado en tierra por estar el
autobús demasiado lleno y horarios que no permiten el desarrollo sostenible efectivo
de nuestra localidad.</p>
<p>Desde Damas nos avocan a utilizar coche para desplazarnos a los municipios cercanos, un
medio de transporte extremadamente contaminante comparativamente al autobús haciendo de
este modo lobby de la industria automovilística que está destruyendo nuestro planeta.</p>
<p>Los burguilleros y burguilleras debemos plantarnos ante este insulto a la inteligencia
que es querernos vender como un descuento una subida de precio, debemos hacer saber a
Damas que con Burguillos no se juega.</p>
<p>Por Burguillos y nuestro planeta pasemos a la acción, si no nos quieren escuchar obliguemosles
a hacerlo.</p>
</content>
</post>

View File

@ -0,0 +1,495 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-01T15:35+00:00</date>
<last_modification_date>2023-05-03T15:35+00:00</last_modification_date>
<title>Carta y Menú de Los Naranjos en Burguillos.</title>
<ogdesc>Carta y Menú de Los Naranjos en Burguillos.</ogdesc>
<img src="/img/pizzeria-los-naranjos-preview.webp"/>
<category>donde-comer</category>
<slug>pizzeria-los-naranjos</slug>
<attributes>
<attribute>reparto-a-domicilio-comida</attribute>
<attribute>hamburguesas</attribute>
<attribute>pizzerias</attribute>
</attributes>
<content>
<h2>Pizzería, Hamburguesería, Kebab, Pescado, Aliños.</h2>
<img style="border: 1px black solid;" src="/img/pizzeria-los-naranjos.webp" alt="The front door of the pizzeria"/>
<p>Hoy añadimos a este directorio un clásico en las cenas de los fines
de semana de los habitantes de Burguillos, la Pizzería los Naranjos.</p>
<p>Las especialidades de este negocio son las hamburguesas, pizzas y kebabs,
imprescindible si buscas un sitio para comer en Burguillos.</p>
<p>El negocio se encuentra en Avenida Arroyo Paso de la Villa numero 22, el teléfono es el siguiente <a href="tel:+34657375878">657 375 878</a>, envían pedidos a domicilio dentro de esta localidad.</p>
<p>Adjuntamos el menú de los Naranjos a continuación en formato de texto legible con discapacidad visual: (En ningún caso los ingredientes deben usarse como lista de alérgenos, pregunte en el establecimiento o por teléfono al hacer su pedido.)</p>
<h3>Pizzas</h3>
<table>
<tr>
<th>Número</th>
<th>Nombre</th>
<th>Ingredientes</th>
<th>Precio</th>
</tr>
<tr>
<td>1</td>
<td>Margarita</td>
<td>Tomate, mozzarella y orégano.</td>
<td>4.50€</td>
</tr>
<tr>
<td>2</td>
<td>Atún</td>
<td>Tomate, mozzarella, atún y orégano.</td>
<td>5.00€</td>
</tr>
<tr>
<td>3</td>
<td>Bacon</td>
<td>Tomate, mozzarella, bacon y orégano.</td>
<td>5.00€</td>
</tr>
<tr>
<td>4</td>
<td>Jamón</td>
<td>Tomate, mozzarella, jamón y orégano.</td>
<td>5.00€</td>
</tr>
<tr>
<td>5</td>
<td>Chorizo</td>
<td>Tomate, mozzarella, chorizo y orégano.</td>
<td>5.00€</td>
</tr>
<tr>
<td>6</td>
<td>Anchoas</td>
<td>Tomate, mozzarella, anchoas, pimiento y orégano.</td>
<td>5.50€</td>
</tr>
<tr>
<td>7</td>
<td>Serrana</td>
<td>Tomate, mozzarella, chorizo, jamón y orégano.</td>
<td>5.50€</td>
</tr>
<tr>
<td>8</td>
<td>Napolitana</td>
<td>Tomate, mozzarella, atún, champiñones, jamón y orégano.</td>
<td>6.00€</td>
</tr>
<tr>
<td>9</td>
<td>Italiana</td>
<td>Tomate, mozzarella, jamón york, atún y orégano.</td>
<td>6.00€</td>
</tr>
<tr>
<td>10</td>
<td>4 Estaciones</td>
<td>Tomate, mozzarella, alcachofas, jamón york, anchoas, salami y orégano.</td>
<td>6.00€</td>
</tr>
<tr>
<td>11</td>
<td>Barbacoa de pollo</td>
<td>Tomate, mozzarella, pollo, salsa barbacoa y orégano.</td>
<td>6.00€</td>
</tr>
<tr>
<td>12</td>
<td>Barbacoa de cerdo</td>
<td>Tomate, mozzarella, cerdo, salsa barbacoa y orégano.</td>
<td>6.00€</td>
</tr>
<tr>
<td>13</td>
<td>Romana</td>
<td>Tomate, mozzarella, champiñones, atún y orégano.</td>
<td>6.00€</td>
</tr>
<tr>
<td>14</td>
<td>Carbonara</td>
<td>Mozzarella, salsa carbonara, bacon, champiñones, cebolla y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>15</td>
<td>Vegetal</td>
<td>Tomate, mozzarella, atún, huevo, alcachofa, espárragos y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>16</td>
<td>Mediterranea</td>
<td>Tomate, mozzarella, pollo, bacon, queso gouda, pimiento, cebolla y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>17</td>
<td>Hawaiana</td>
<td>Tomate, mozzarella, bacon, queso gouda, <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ">piña</a> y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>18</td>
<td>Pepperoni</td>
<td>Tomate, mozzarella, pepperoni y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>19</td>
<td>4 Quesos</td>
<td>Tomate, mozzarella, 4 quesos y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>20</td>
<td>Pimientos</td>
<td>Tomate, mozzarella, champiñones, pimientos fritos, cebolla y orégano.</td>
<td>6.50€</td>
</tr>
<tr>
<td>21</td>
<td>Rulo de queso de cabra</td>
<td>Tomate, mozzarella, queso de rulo de cabra y cebolla caramelizada.</td>
<td>7.00€</td>
</tr>
<tr>
<td>22</td>
<td>Especial de la casa</td>
<td>Tomate, mozzarella, aceitunas verdes, palitos de pollo crujiente y orégano.</td>
<td>5.00€</td>
</tr>
<tr>
<td>23</td>
<td>5 quesos.</td>
<td>Tomate, mozzarella, 4 quesos, roquefort y orégano.</td>
<td>7.00€</td>
</tr>
</table>
<p>*Puedes solicitar un ingrediente extra en tu pizza por 0.50€.</p>
<h3>Hamburguesas.</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Mixta 100g</td>
<td>2.00€</td>
</tr>
<tr>
<td>Mixta 150g</td>
<td>3.50€</td>
</tr>
<tr>
<td>Ternera 150g</td>
<td>4.00€</td>
</tr>
<tr>
<td>Buey 250g</td>
<td>5.00€</td>
</tr>
<tr>
<td>Super XXL</td>
<td>7.50€</td>
</tr>
<tr>
<td>Crispy Chicken</td>
<td>3.50€</td>
</tr>
</table>
<h3>Kebab.</h3>
<p>Recordad especificar si quereis durum o pita para evitar sorpresas. Haz
tu kebab menú por un euro más y recibe patatas y refresco.</p>
<table>
<tr>
<th>Nombre.</th>
<th>Precio.</th>
</tr>
<tr>
<td>Kebab pollo completo.</td>
<td>4.50€</td>
</tr>
<tr>
<td>Kebab pollo solo carne.</td>
<td>5.50€</td>
</tr>
<tr>
<td>Kebab ternera completo.</td>
<td>4.50€</td>
</tr>
<tr>
<td>Kebab ternera solo carne.</td>
<td>5.50€</td>
</tr>
</table>
<h3>Perritos.</h3>
<table>
<tr>
<th>Nombre.</th>
<th>Ingredientes.</th>
<th>Precio.</th>
</tr>
<tr>
<td>Simple</td>
<td>N/A</td>
<td>2.00€</td>
</tr>
<tr>
<td>Vegetal</td>
<td>Lechuga, tomate, cebolla y pepinillos.</td>
<td>2.80€</td>
</tr>
<tr>
<td>Completo de la casa</td>
<td>Lechuga, cebolla crujiente, queso fundido y 4 salsas.</td>
<td>3.50€</td>
</tr>
</table>
<h3>Baguettes.</h3>
<p>Recuerda pedir la salsa para acompañar si quieres alguna.</p>
<table>
<tr>
<th>Nombre.</th>
<th>Precio.</th>
</tr>
<tr>
<td>Tortilla de patatas.</td>
<td>2.80€</td>
</tr>
<tr>
<td>Cochinito.</td>
<td>2.80€</td>
</tr>
<tr>
<td>Bacon y queso.</td>
<td>2.80€</td>
</tr>
<tr>
<td>Jamón york y queso.</td>
<td>2.50€</td>
</tr>
<tr>
<td>Pechuga de pollo, lechuga y tomate.</td>
<td>3.50€</td>
</tr>
<tr>
<td>Atún y bacon.</td>
<td>3.60€</td>
</tr>
<tr>
<td>Pollo empanado.</td>
<td>3.50€</td>
</tr>
</table>
<h3>Especiales de la casa.</h3>
<table>
<tr>
<th>Nombre.</th>
<th>Precio.</th>
</tr>
<tr>
<td>Costilla BBQ.</td>
<td>6.80€</td>
</tr>
<tr>
<td>Palitos de pollo crujiente.</td>
<td>2.50€</td>
</tr>
<tr>
<td>Alitas adobadas.</td>
<td>2.50€</td>
</tr>
<tr>
<td>Nuggets POP.</td>
<td>2.50€</td>
</tr>
<tr>
<td>Cazuela de papas gratinadas.</td>
<td>4.00€</td>
</tr>
</table>
<h3>Aliños.</h3>
<table>
<tr>
<th>Nombre.</th>
<th>Precio tapa.</th>
<th>Precio plato.</th>
</tr>
<tr>
<td>Ensaladilla.</td>
<td>3.00€</td>
<td>5.50€</td>
</tr>
<tr>
<td>Papas aliñadas.</td>
<td>2.50€</td>
<td>5.00€</td>
</tr>
<tr>
<td>Plato tomate.</td>
<td>N/A</td>
<td>3.50€</td>
</tr>
<tr>
<td>Pimientos asados.</td>
<td>3.00€</td>
<td>5.50€</td>
</tr>
<tr>
<td>Aliño de huevas.</td>
<td>3.00€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Boquerones en vinagre.</td>
<td>3.50€</td>
<td>6.50€</td>
</tr>
<tr>
<td>Anchoas del cantabrico.</td>
<td>1.20€/ud</td>
<td>N/A</td>
</tr>
</table>
<h3>Pescado.</h3>
<table>
<tr>
<th>Nombre.</th>
<th>Precio.</th>
</tr>
<tr>
<td>Boquerones.</td>
<td>4.50€</td>
</tr>
<tr>
<td>Lomo de merluza.</td>
<td>5.50€</td>
</tr>
<tr>
<td>Chipirón a la plancha.</td>
<td>6.80€</td>
</tr>
<tr>
<td>Puntillitas.</td>
<td>5.60€</td>
</tr>
<tr>
<td>Choco.</td>
<td>6.60€</td>
</tr>
<tr>
<td>Cazón en adobo.</td>
<td>5.50€</td>
</tr>
<tr>
<td>Calamares.</td>
<td>6.00€</td>
</tr>
<tr>
<td>Gambas.</td>
<td>S/M</td>
</tr>
<tr>
<td>Pez espada.</td>
<td>8.50€</td>
</tr>
</table>
<h3>Carne.</h3>
<table>
<tr>
<th>Nombre.</th>
<th>Precio.</th>
</tr>
<tr>
<td>Lomo al whisky.</td>
<td>6.50€</td>
</tr>
<tr>
<td>Churrasco de cerdo.</td>
<td>6.00€</td>
</tr>
<tr>
<td>Churrasco de pollo.</td>
<td>5.50€</td>
</tr>
<tr>
<td>Carrillada ibérica.</td>
<td>6.90€</td>
</tr>
<tr>
<td>Flamenquín cordobés.</td>
<td>4.50€</td>
</tr>
<tr>
<td>Pollo empanado.</td>
<td>5.00€</td>
</tr>
</table>
<p>*Carnes a la brasa durante los fines de semana.</p>
<h3>Salsas.</h3>
<p>¡Acuerdate de pedirlas si las quieres!</p>
<table>
<tr>
<th>Nombre.</th>
</tr>
<tr>
<td>Ali Oli.</td>
</tr>
<tr>
<td>Barbacoa.</td>
</tr>
<tr>
<td>Mayonesa.</td>
</tr>
<tr>
<td>Ketchup.</td>
</tr>
<tr>
<td>Mostaza.</td>
</tr>
<tr>
<td>Salsa brava.</td>
</tr>
<tr>
<td>Moho picón.</td>
</tr>
<tr>
<td>Salsa whisky.</td>
</tr>
</table>
<p>Además de todo esto hacen <b>Paella y Arroz con bogavante</b> por encargo.</p>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -0,0 +1,258 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-04T15:08+00:00</date>
<title>Carta y Menú de El Fogón de Segovia en Burguillos.</title>
<ogdesc>Carta y Menú de El Fogón de Segovia en Burguillos.</ogdesc>
<img src="/img/fogon-de-segovia.jpg"/>
<category>donde-comer</category>
<slug>el-fogon-de-segovia</slug>
<content>
<img alt="Front door of 'El Fogón de Segovia'" style="border: solid 1px black;" src="/img/fogon-de-segovia.jpg"/>
<h2>Especialidad en cordero y cochinillo asado al horno de leña, información para reservar.</h2>
<p>Este restaurante de estilo segoviano prepara unos platos que son una delicia. ¡Si no lo has probado todavía no sabes lo que te pierdes!</p>
<p>El Fogón de Segovia está localizado en Avenida Alcalde José Cuesta Godoy número 35, su horario es de Martes a Domingo de 10:00-17:00.</p>
<p>Las reservas se deberán hacer exclusivamente por este teléfono <a href="tel:+34670950789">670 950 789</a>, su página web oficial es <a href="https://elfogondesegovia.com">https://elfogondesegovia.com</a>.</p>
<p>Adjuntamos la carta a continuación.</p>
<p>¡Disfruta de tu almuerzo!</p>
<h3>Entrantes.</h3>
<h4>Entrantes.</h4>
<ul>
<li>Morcilla Segovia.</li>
<li>Chorizo de la olla.</li>
<li>Calamares en su tinta.</li>
<li>Mollejas de cordero.</li>
<li>Riñones de cordero. (Preguntar)</li>
<li>Patatas fritas redondas.</li>
<li>Foie.</li>
<li>Foie fresco.</li>
<li>Setas al ajillo.</li>
<li>Croquetas caseras.</li>
<li>Chocos fritos.</li>
<li>Gambas cocidas.</li>
<li>Tostas con salmorejo y jamón.</li>
<li>Tostas con salmorejo y anchoas.</li>
<li>Queso viejo.</li>
<li>Caña de lomo.</li>
<li>Jamón ibérico.</li>
<li>Judiones de la granja.</li>
<li>Ensaladilla rusa.</li>
<li>Revuelto de setas.</li>
<li>Revuelto de ajetes.</li>
<li>Revuelto de habas.</li>
<li>Alcachofas con jamón.</li>
<li>Pisto de la casa.</li>
<li>Pimientos rellenos. (Huevo y atún)</li>
<li>Sopa castellana.</li>
<li>Sopa de picadillo.</li>
<li>Cebolla Frita.</li>
</ul>
<h4>Ensaladas.</h4>
<ul>
<li>Ensalada del fogón. (Pimientos rojos asados)</li>
<li>Ensalada mixta.</li>
<li>Ensalada de aguacates y maíz.</li>
<li>Ensalada de cogollos.</li>
<li>Ensalada de cogollos y anchoas.</li>
<li>Ensalada verde.</li>
<li>Ensalada de remolacha. (Lechuga, maíz, nueces, miel)</li>
</ul>
<h4>Aperitivos.</h4>
<ul>
<li>Pan.</li>
<li>Aceitunas.</li>
</ul>
<h3>Medias y Tapas.</h3>
<h4>Medias raciones.</h4>
<ul>
<li>Tostas con salmorejo y jamón.</li>
<li>Tostas con salmorejo y anchoas.</li>
<li>Ensaladilla rusa.</li>
<li>Jamón ibérico.</li>
<li>Caña de lomo ibérico.</li>
<li>Queso viejo.</li>
<li>Chorizo de la olla.</li>
<li>Morcilla de Segovia.</li>
<li>Croquetas caseras.</li>
<li>Pisto de la casa.</li>
<li>Lomo de la olla.</li>
<li>Foie de ave.</li>
<li>Aliño atún.</li>
</ul>
<h4>Tapas. (Solo en barra)</h4>
<ul>
<li>Tostas con salmorejo y anchoas.</li>
<li>Tostas con salmorejo y jamón.</li>
<li>Ensaladilla.</li>
<li>Jamón ibérico.</li>
<li>Caña de lomo ibérico.</li>
<li>Queso viejo.</li>
<li>Chorizo de la olla.</li>
<li>Croquetas caseras.</li>
<li>Chocos fritos.</li>
<li>Pisto de la casa.</li>
<li>Lomo de cerdo de la olla.</li>
<li>Morcilla de Segovia.</li>
<li>Variado de chacinas. (Plato pequeño)</li>
</ul>
<h3>Segundos platos.</h3>
<h4>Asados. (Por encargo)</h4>
<ul>
<li>Cuarto de cochinillo. (Para dos personas)</li>
<li>Cuarto de cordero. (Para dos personas)</li>
</ul>
<h4>Carnes.</h4>
<ul>
<li>Solomillo de ternera.</li>
<li>Entrecot de angus.</li>
<li>Entrecot de buey.</li>
<li>Entrecot de ternera.</li>
<li>Chuletillas de cordero.</li>
<li>Presa ibérica.</li>
<li>Lomo de la olla.</li>
<li>Solomillo de cerdo. (En salsa)</li>
<li>Solomillo de cerdo ibérico. (A la plancha)</li>
<li>Magret de pato.</li>
<li>Filete de pollo.</li>
<li>Carne de cerdo. (En salsa)</li>
</ul>
<h4>Pescados.</h4>
<ul>
<li>Salmón a la plancha.</li>
<li>Pez espada.</li>
<li>Lenguado a la plancha.</li>
<li>Bacalao rebozado o con tomate.</li>
</ul>
<h3>Carta de vinos.</h3>
<h4>Vinos de la casa.</h4>
<ul>
<li>Rioja "22 pies" crianza.</li>
<li>Ribera del Duero "Valdrinal Entrega"</li>
</ul>
<h4>Riojas.</h4>
<ul>
<li>Izadi "Crianza"</li>
<li>Cuatro rayas 40 Vendimias "Crianza"</li>
</ul>
<h4>Riberas del duero.</h4>
<ul>
<li>Vega Sicilia Valbuena 5°</li>
<li>Malleolus "Crianza"</li>
<li>Jaros "Crianza"</li>
<li>Tomás Postigo "Crianza"</li>
<li>Pesquera "Crianza"</li>
<li>Matarromera "Crianza"</li>
<li>Viña Pedrosa "Crianza"</li>
<li>Mauro "Crianza"</li>
<li>Emilio Moro "Finca Resalso"</li>
<li>Pruno "Cosecha"</li>
<li>Yllera "Crianza"</li>
</ul>
<h4>Toro.</h4>
<ul>
<li>Flor de Vetus "Crianza"</li>
</ul>
<h4>Blancos.</h4>
<ul>
<li>Yllera Cinco.5 Verdejo Afrutado.</li>
<li>Palestra Rueda. (Semi seco afrutado)</li>
</ul>
<h4>Rosados.</h4>
<ul>
<li>Peñascal "Aguja"</li>
</ul>
<h4>Cavas.</h4>
<ul>
<li>Brut Reserva Perelada.</li>
</ul>
<h4>Champagne.</h4>
<ul>
<li>Laurent Perrier</li>
</ul>
<h3>Postres.</h3>
<h4>Postres caseros.</h4>
<ul>
<li>Helado de nata con chocolate.</li>
<li>Helado de turrón.</li>
<li>Crema catalana.</li>
<li>Flan de huevo.</li>
<li>Tocinillo con almendras.</li>
<li>Tarta de la casa.</li>
<li>Tarta de chocolate.</li>
<li>Tarta de queso.</li>
<li>Peras al vino tinto.</li>
<li>Tarta "Pachanga" (Galleta, flan y chocolate)</li>
<li>Sorbete de limón.</li>
<li>Torrijas de vino. (Solo en temporada)</li>
<li>Canutillos con crema pastelera.</li>
<li>Tarta de cuajada.</li>
<li>Tiramisú.</li>
<li>Ponche segoviano.</li>
<li>Mousse de limón.</li>
<li>Mousse de chocolate.</li>
<li>Arroz con leche.</li>
<li>Poléa. (Temporada de invierno)</li>
<li>Pestiños. (Temporada de invierno)</li>
</ul>
<h4>Helados (Nestle)</h4>
<ul>
<li>Tarta helada al whisky.</li>
<li>Bombones de vainilla.</li>
<li>Copa de fresa y nata.</li>
<li>Bombón de almendras.</li>
<li>Mikolápiz.</li>
<li>Fantasmikos.</li>
<li>Bombón de nata.</li>
</ul>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -0,0 +1,460 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-04T22:32+00:00</date>
<title>Carta y Menú de la Pizzería Genuino en Burguillos.</title>
<ogdesc>Carta y Menú de la Pizzería Genuino en Burguillos.</ogdesc>
<img src="/img/genuino.webp"/>
<category>donde-comer</category>
<attributes>
<attribute>reparto-a-domicilio-comida</attribute>
<attribute>pizzerias</attribute>
</attributes>
<slug>pizzeria-genuino</slug>
<content>
<img alt="Front door of 'Pizzería Genuino'" style="border: solid 1px black;" src="/img/genuino.webp"/>
<h2>Pizzería italiana Genuino, envío a domicilio en Burguillos.</h2>
<p>La Pizzería Genuino es ampliamente reconocida por los habitantes de Burguillos por la calidad de sus pizzas, se puede tanto comer en el establecimiento como pedir a domicilio.</p>
<p>La ubicación de la pizzería es Calle Manuel Medina número 1, el número de teléfono para realizar pedidos es <a href="tel:+34672128822">672 128 822</a> y el horario es de 20:00-00:00 durante todos los días de la semana.</p>
<p>Procedemos a dejaros la carta con los enlaces a la página web oficial de cada producto para que tengais siempre disponible la última información:</p>
<h3>Las más vendidas. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/las-mas-vendidas">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Ingredientes</th>
<th>Precio Mediana</th>
<th>Precio Grande</th>
</tr>
<tr>
<td>4 Formaggi</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/16-4-formaggi?c=las-mas-vendidas">Enlace</a></td>
<td>Tomate, mozzarella, brie, gorgonzola y grana padano</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Cotto</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/10-cotto?c=las-mas-vendidas">Enlace</a></td>
<td>Tomate  mozzarella y jamón de york</td>
<td>7.00€</td>
<td>15.00€</td>
</tr>
<tr>
<td>Carnivora</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/58-carnivora?c=las-mas-vendidas">Enlace</a></td>
<td>Tomate, mozzarella, criollo, frankfurt, bacon y jamón de york</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Golosa</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/55-golosa?c=las-mas-vendidas">Enlace</a></td>
<td>Mozzarella, champiñones, bacon y nata</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>365</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/62-365?c=las-mas-vendidas">Enlace</a></td>
<td>Tomate, doble de mozzarella, chorizo, jamón de york y orégano</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Cotto e funghi</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/13-cotto-e-funghi?c=las-mas-vendidas">Enlace</a></td>
<td>Tomate, mozzarella, champiñones y jamón de york</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>Piccantissima</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/52-piccantissima?c=las-mas-vendidas">Enlace</a></td>
<td>PREGUNTAR</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Carbonara italiana</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/56-carbonara-italiana?c=las-mas-vendidas">Enlace</a></td>
<td>Mozzarella, guanciale, pecorino romano, huevo y pimienta</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Chips</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/19-chips?c=las-mas-vendidas">Enlace</a></td>
<td>Tomate, mozzarella, frankfurt y patatas fritas</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
</table>
<h3>Las más ligeras. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/las-mas-ligeras">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Ingredientes</th>
<th>Precio Mediana</th>
<th>Precio Grande</th>
</tr>
<tr>
<td>Fresca fresca</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/35-fresca-fresca?c=las-mas-ligeras">Enlace</a></td>
<td>Tomate, tomate cherry, mozzarella fresca, aceitunas negras, rucula y grana padano</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Italia</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/20-italia?c=las-mas-ligeras">Enlace</a></td>
<td>Mozzarella, tomate cherry, jamón serrano, rúcula y grana padano</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Delicata</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/61-delicata?c=las-mas-ligeras">Enlace</a></td>
<td>Mozzarella, calabacín y grana padano</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>Meravigliosa</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/51meravigliosa?c=las-mas-ligeras">Enlace</a></td>
<td>Tomate, mozzarella, calabacín, tomate cherry y brie</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Parmigiana</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/42-parmigiana?c=las-mas-ligeras">Enlace</a></td>
<td>Tomate, mozzarella, berenjena y grana padano</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>Funghi</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/11-funghi?c=las-mas-ligeras">Enlace</a></td>
<td>Tomate, mozzarella y champiñones</td>
<td>7.00€</td>
<td>15.00€</td>
</tr>
</table>
<h3>A la italiana. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/a-la-italiana">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Ingredientes</th>
<th>Precio Mediana</th>
<th>Precio Grande</th>
</tr>
<tr>
<td>Margherita</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/4-margherita?c=a-la-italiana">Enlace</a></td>
<td>Tomate y mozzarella</td>
<td>6.50€</td>
<td>14.00€</td>
</tr>
<tr>
<td>Napoli</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/6-napoli?c=a-la-italiana">Enlace</a></td>
<td>Tomate, mozzarella, anchoa, orégano</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>Siciliana</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/7-siciliana?c=a-la-italiana">Enlace</a></td>
<td>Tomate, anchoas, aceitunas negras, alcaparras y orégano</td>
<td>PREGUNTAR</td>
<td>PREGUNTAR</td>
</tr>
<tr>
<td>Romana</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/8-romana?c=a-la-italiana">Enlace</a></td>
<td>Tomate, mozzarella, anchoas, alcaparras y orégano</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>4 Stagioni</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/15-4-stagioni?c=a-la-italiana">Enlace</a></td>
<!-- acieutnas in the link -->
<td>Tomate, mozzarella, champiñones, jamón de york, aceitunas negras y alcachofas</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Capricciosa</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/17-capricciosa?c=a-la-italiana">Enlace</a></td>
<td>Tomate, mozzarella, champiñones, jamón de york, aceitunas negras y alcachofas</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Bufala</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/22-bufala?c=a-la-italiana">Enlace</a></td>
<td>Tomate y mozzarella fresca</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Boscaiola</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/24-boscaiola?c=a-la-italiana">Enlace</a></td>
<td>Tomate, mozzarella, criollo y champiñones</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
</table>
<h3>A la Genuino. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/a-la-genuino">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Ingredientes</th>
<th>Precio Mediana</th>
<th>Precio Grande</th>
</tr>
<tr>
<td>Nonna Ina</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/21-nonna-ina?c=a-la-genuino">Enlace</a></td>
<td>Tomate, mozzarella, criollo y gorgonzola</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>Gustosa</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/53-gustosa?c=a-la-genuino">Enlace</a></td>
<td>Tomate, mozzarella, calabacín, bacon y nata</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Contadina</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/54-contadina?c=a-la-genuino">Enlace</a></td>
<td>Tomate, mozzarella, criollo, cebolla morada y pimiento rojo</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Quinta del Villa</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/57-quinta-del-villa?c=a-la-genuino">Enlace</a></td>
<td>Tomate, mozzarella, criollo, brie, tomate cherry y grana padano</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Quinta del Manu</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/60-quinta-del-manu?c=a-la-genuino">Enlace</a></td>
<td>Tomate, mozzarella, criollo, chorizo, cebolla morada y grana padano</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
<tr>
<td>Amatriciana</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/63-amatriciana?c=a-la-genuino">Enlace</a></td>
<td>Tomate, mozzarella, guanciale, cebolla morada, pecorino romano y pimienta</td>
<td>8.50€</td>
<td>18.00€</td>
</tr>
</table>
<h3>Del mar. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/del-mar">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Ingredientes</th>
<th>Precio Mediana</th>
<th>Precio Grande</th>
</tr>
<tr>
<td>Tonno</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/26-tonno?c=del-mar">Enlace</a></td>
<td>Tomate, mozzarella y atún</td>
<td>7.50€</td>
<td>16.00€</td>
</tr>
<tr>
<td>Tonno e cipolla</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/27-tonno-e-cipolla?c=del-mar">Enlace</a></td>
<td>Tomate, mozzarella, atún y cebolla morada</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Tonno e carciofini</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/28-tonno-e-carciofini?c=del-mar">Enlace</a></td>
<td>Tomate, mozzarella, atún y alcachofas</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Tonno y mais</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/29-tonno-y-mais?c=del-mar">Enlace</a></td>
<td>Tomate, mozzarella, atún, aceitunas negras y maiz</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
<tr>
<td>Nettuno</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/30-nettuno?c=del-mar">Enlace</a></td>
<td>Mozzarella, atún, tomate cherry y cebolla morada</td>
<td>8.00€</td>
<td>17.00€</td>
</tr>
</table>
<h3>Especialidades. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/especialidades">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Ingredientes</th>
<th>Precio Simple</th>
<th>Precio Completo</th>
</tr>
<tr>
<td>Hot dog + bebida</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/46-hot-dog-bebida?c=especialidades">Enlace</a></td>
<td>PREGUNTAR</td>
<td>4.00€</td>
<td>4.50€</td>
</tr>
<tr>
<td>Calzone liscio</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/47-calzone-liscio?c=especialidades">Enlace</a></td>
<td>Tomate, mozzarella y jamón de york</td>
<td>NO DISPONIBLE</td>
<td>7.00€</td>
</tr>
<tr>
<td>Calzone farcito</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/48-calzone-farcito?c=especialidades">Enlace</a></td>
<td>Tomate, mozzarella, jamón de york y champiñones</td>
<td>NO DISPONIBLE</td>
<td>7.50€</td>
</tr>
<tr>
<td>Calzone 4 formaggi</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/49-calzone-4-formaggi?c=especialidades">Enlace</a></td>
<td>Tomate, mozzarella, brie, gorgonzola y grana padano</td>
<td>NO DISPONIBLE</td>
<td>8.00€</td>
</tr>
<tr>
<td>Calzone Nutella</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/50-calzone-nutella?c=especialidades">Enlace</a></td>
<td>Nutella</td>
<td>NO DISPONIBLE</td>
<td>4.00€</td>
</tr>
<tr>
<td>Pizzotto farcito</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/59-pizzotto-farcito?c=especialidades">Enlace</a></td>
<td>Mini calzone relleno al gusto</td>
<td>NO DISPONIBLE</td>
<td>4.00€</td>
</tr>
</table>
<h3>Bebidas y cervezas. <a href="https://www.mundogenuino.eu/nuestra-carta/.c/bebidas-y-cervezas">Enlace oficial</a></h3>
<table>
<tr>
<th>Nombre</th>
<th>Enlace</th>
<th>Precio</th>
</tr>
<tr>
<td>Agua (500ml)</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/agua-50cc?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.00€</td>
</tr>
<tr>
<td>Coca Cola</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/coca-cola?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Coca Cola Zero</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/coca-cola-zero?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Coca Cola Zero Zero</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/coca-cola-zero-zero?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Fanta de naranja</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/fanta-naranja?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Fanta de limón</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/fanta-de-limon?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Aquarius de limón</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/aquarius-limon?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.70€</td> <!--Preguntar -->
</tr>
<tr>
<td>Aquarius de naranja</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/aquarius-naranja?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Nestea</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/nestea?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Coca Cola 2l</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/coca-cola-2l?c=bebidas-y-cervezas">Enlace</a></td>
<td>2.50€</td>
</tr>
<tr>
<td>Coca Cola Zero 2l</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/coca-cola-zero-2l?c=bebidas-y-cervezas">Enlace</a></td>
<td>2.50€</td>
</tr>
<tr>
<td>Fanta naranja 2l</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/fanta-naranja-2l?c=bebidas-y-cervezas">Enlace</a></td>
<td>2.50€</td>
</tr>
<tr>
<td>Cruzcampo 250ml</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/cruzcampo-25cc?c=bebidas-y-cervezas">Enlace</a></td>
<td>1.50€</td>
</tr>
<tr>
<td>Cruzcampo 1l</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/cruzcampo-1-litro?c=bebidas-y-cervezas">Enlace</a></td>
<td>2.50€</td>
</tr>
<tr>
<td>Tinto de verano</td>
<td><a href="https://www.mundogenuino.eu/nuestra-carta/tinto-de-verano?c=bebidas-y-cervezas">Enlace</a></td>
<td>2.00€</td>
</tr>
</table>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -0,0 +1,668 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-05T22:21+00:00</date>
<title>Carta y Menú del Bar - Restaurante Durán - Centro de día en Burguillos.</title>
<ogdesc>Carta y Menú del Bar - Restaurante Durán - Centro de día en Burguillos.</ogdesc>
<img src="/img/duran.webp"/>
<category>donde-comer</category>
<attributes>
<attribute>hamburguesas</attribute>
</attributes>
<slug>bar-restaurante-duran</slug>
<content>
<img alt="Front door of 'Bar-Restaurante Durán - Centro de día'" style="border: solid 1px black;" src="/img/duran.webp"/>
<h2>Información de contacto para preparación de pedidos.</h2>
<p>El Bar-Restaurante Durán - Centro de día, ubicado en avenida de Andalucía número 4 ofrece una propuesta única con sus platos de calidad excepcional.</p>
<p>Os recomendamos probar los crepes de pollo, desde Burguillos.info los hemos probado y hemos quedado encantados por lo deliciosos que están.</p>
<p>El teléfono de contacto es <a href="tel:+34604404294">604 404 294</a>, se pueden pedir platos para recoger más adelante, pero por el momento no admiten pedidos a domicilio.</p>
<p>Si deseas una salsa a parte la tendrás por 50 centimos extra.</p>
<p>Procedemos a transcribir la carta a continuación:</p>
<h3>Aliños</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio media ración</th>
<th>Precio ración</th>
</tr>
<tr>
<td>Ensaladilla</td>
<td>2.50€</td>
<td>5.00€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Aliño de pulpo</td>
<td>3.00€</td>
<td>6.00€</td>
<td>9.00€</td>
</tr>
<tr>
<td>Aliño de hueva</td>
<td>3.00€</td>
<td>6.00€</td>
<td>9.00€</td>
</tr>
<tr>
<td>Salpicón de marisco</td>
<td>3.00€</td>
<td>6.00€</td>
<td>9.00€</td>
</tr>
<tr>
<td>Coctel de marisco</td>
<td>---</td>
<td>3.50€</td>
<td>---</td>
</tr>
<tr>
<td>Ensalada mixta</td>
<td>---</td>
<td>6.00€</td>
<td>---</td>
</tr>
<tr>
<td>Ensalada cesar</td>
<td>---</td>
<td>7.00€</td>
<td>---</td>
</tr>
<tr>
<td>Ensalada de la casa</td>
<td>---</td>
<td>7.50€</td>
<td>---</td>
</tr>
</table>
<h3>Guisos</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Carrillada</td>
<td>4.00€</td>
</tr>
</table>
<h3>Hamburguesas</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio simple</th>
<th>Precio completa</th>
</tr>
<tr>
<td>Pollo</td>
<td>2.50€</td>
<td>4.00€</td>
</tr>
<tr>
<td>Buey</td>
<td>3.50€</td>
<td>7.00€</td>
</tr>
<tr>
<td>Crujiente</td>
<td>---</td>
<td>6.00€</td>
</tr>
<tr>
<td>Del Durán</td>
<td>---</td>
<td>7.50€</td>
</tr>
</table>
<h3>Aperitivos</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio media ración</th>
<th>Precio ración</th>
</tr>
<tr>
<td>Croquetas de pollo</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Croquetas de jamón</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Croquetas de gambas</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Variado de croquetas</td>
<td>---</td>
<td>---</td>
<td>11.00€</td>
</tr>
<tr>
<td>Papas bravas</td>
<td>2.50€</td>
<td>5.00€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Papas de la casa</td>
<td>2.50€</td>
<td>5.00€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Papas alioli calientes</td>
<td>2.50€</td>
<td>5.00€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Gratinadas 4 quesos con bacon</td>
<td>---</td>
<td>---</td>
<td>6.50€</td>
</tr>
<tr>
<td>Gratinadas a la carbonara</td>
<td>---</td>
<td>---</td>
<td>6.50€</td>
</tr>
<tr>
<td>Lagrimitas de pollo</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Tocinito</td>
<td>3.00€</td>
<td>6.00€</td>
<td>9.00€</td>
</tr>
<tr>
<td>Alitas a la barbacoa</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Bartolito</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Queso frito</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Taleguillas de queso</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Pollo al cajun</td>
<td>4.00€</td>
<td>8.00€</td>
<td>12.00€</td>
</tr>
</table>
<h3>Montaditos</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Pollo o lomo</td>
<td>2.50€</td>
</tr>
<tr>
<td>Jamón y queso</td>
<td>3.00€</td>
</tr>
<tr>
<td>Melva con pimientos</td>
<td>3.00€</td>
</tr>
<tr>
<td>Gambas con alioli</td>
<td>3.00€</td>
</tr>
</table>
<h3>Carnes</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio media ración</th>
<th>Precio ración</th>
</tr>
<tr>
<td>Carne asada</td>
<td>3.00€</td>
<td>6.00€</td>
<td>9.00€</td>
</tr>
<tr>
<td>Solomillo</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Pechuga</td>
<td>3.00€</td>
<td>6.00€</td>
<td>---</td>
</tr>
<tr>
<td>Pollo crujiente</td>
<td>4.00€</td>
<td>8.00€</td>
<td>12.00€</td>
</tr>
<tr>
<td>Tosta de solomillo</td>
<td>4.00€</td>
<td>8.00€</td>
<td>12.00€</td>
</tr>
<tr>
<td>Solomillo con queso y cebolla caramelizada</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Mini serranito pollo/lomo o tortilla</td>
<td>---</td>
<td>3.50€</td>
<td>4.00€</td>
</tr>
<tr>
<td>Serranito pollo/lomo o tortilla</td>
<td>---</td>
<td>5.00€</td>
<td>5.50€</td>
</tr>
<tr>
<td>Berenjena rellena</td>
<td>---</td>
<td>---</td>
<td>4.50€</td>
</tr>
<tr>
<td>Solomillo de pavo</td>
<td>---</td>
<td>---</td>
<td>7.00€</td>
</tr>
<tr>
<td>Churrasco de cerdo</td>
<td>---</td>
<td>---</td>
<td>7.00€</td>
</tr>
<tr>
<td>Brocheta de solomillo</td>
<td>---</td>
<td>---</td>
<td>7.00€</td>
</tr>
<tr>
<td>Cachopo</td>
<td>---</td>
<td>---</td>
<td>7.00€</td>
</tr>
<tr>
<td>Solomillo mostaza crujiente</td>
<td>---</td>
<td>---</td>
<td>7.00€</td>
</tr>
<tr>
<td colspan="4">(Salsa a elejir) Alioli, mojo picón, verde, carbonara, roque y whisky </td>
</tr>
</table>
<h3>Pescados</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio media ración</th>
<th>Precio ración</th>
</tr>
<tr>
<td>Adobo</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Boquerones</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Chipirón plancha o frito</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Chocos fritos</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Brocheta de marisco</td>
<td>---</td>
<td>---</td>
<td>5.50€</td>
</tr>
<tr>
<td>Lomito de merluza</td>
<td>---</td>
<td>---</td>
<td>4.50€</td>
</tr>
<tr>
<td>Solomillo de atún</td>
<td>---</td>
<td>---</td>
<td>4.50€</td>
</tr>
<tr>
<td>Pez espada</td>
<td>---</td>
<td>---</td>
<td>10.00€</td>
</tr>
<tr>
<td>Merluza a la marinera</td>
<td>---</td>
<td>---</td>
<td>6.50€</td>
</tr>
<tr>
<td>Choco a la plancha</td>
<td>---</td>
<td>---</td>
<td>10.50€</td>
</tr>
<tr>
<td>Pulpo a la gallega</td>
<td>---</td>
<td>---</td>
<td>8.00€</td>
</tr>
<tr>
<td>Cazuela de gulas, chipirones, almejas y langostinos</td>
<td>---</td>
<td>---</td>
<td>8.00€</td>
</tr>
<tr>
<td>Gambas al ajillo</td>
<td>---</td>
<td>---</td>
<td>8.00€</td>
</tr>
<tr>
<td>Saquito de gambas</td>
<td>---</td>
<td>---</td>
<td>5.00€</td>
</tr>
</table>
<h3>Panes</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Gambas y alioli</td>
<td>6.00€</td>
</tr>
<tr>
<td>Salmorejo y bacalao</td>
<td>7.00€</td>
</tr>
<tr>
<td>Gordi (Mojo Picón)</td>
<td>7.00€</td>
</tr>
<tr>
<td>Salmorejo y jamón</td>
<td>5.00€</td>
</tr>
<tr>
<td>Chicharrón de Cádiz y queso</td>
<td>7.00€</td>
</tr>
<tr>
<td>Queso de rulo, bacon y nueces</td>
<td>7.00€</td>
</tr>
<tr>
<td>Gulas y huevos de codorniz</td>
<td>8.00€</td>
</tr>
</table>
<h3>Revuelto</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Bacalao dorado</td>
<td>7.50€</td>
</tr>
<tr>
<td>Gulas y langostinos</td>
<td>7.50€</td>
</tr>
<tr>
<td>Morcilla de arroz y piñones</td>
<td>7.00€</td>
</tr>
<tr>
<td>Huevos rotos con gulas y langostinos</td>
<td>8.00€</td>
</tr>
</table>
<h3>Sugerencias</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Crepes de carrilla</td>
<td>4.00€</td>
</tr>
<tr>
<td>Crepes de pollo</td>
<td>4.00€</td>
</tr>
<tr>
<td>Champiñones rellenos</td>
<td>4.00€</td>
</tr>
<tr>
<td>Conos de langostinos</td>
<td>4.00€</td>
</tr>
<tr>
<td>Fideos tostados</td>
<td>4.00€</td>
</tr>
<tr>
<td>Solomillo mozárabe</td>
<td>3.50€</td>
</tr>
<tr>
<td>Rollitos serranos</td>
<td>3.50€/7.00€</td>
</tr>
<tr>
<td>Perrito del kiki</td>
<td>4.50€</td>
</tr>
<tr>
<td>Torre serrana</td>
<td>3.50€</td>
</tr>
<tr>
<td>Cazuela de chipirón, langostinos, gulas y almejas</td>
<td>7.50€</td>
</tr>
<tr>
<td>Queso frito, boquerones y salmorejo</td>
<td>4.00€</td>
</tr>
<tr>
<td>Patatas arrieras</td>
<td>6.00€</td>
</tr>
<tr>
<td>Tabla de queso frito</td>
<td>8.00€</td>
</tr>
<tr>
<td>Morcilla crocante</td>
<td>4.00€</td>
</tr>
<tr>
<td>Donut de queso</td>
<td>4.50€</td>
</tr>
</table>
<h3>Para los peques</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio media ración</th>
<th>Precio ración</th>
</tr>
<tr>
<td>Perritos</td>
<td>---</td>
<td>---</td>
<td>3.50€</td>
</tr>
<tr>
<td>Nuggets</td>
<td>3.50€</td>
<td>7.00€</td>
<td>10.50€</td>
</tr>
<tr>
<td>Mini hamburguesas</td>
<td>---</td>
<td>---</td>
<td>3.50€</td>
</tr>
</table>
<h3>Postres</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Coulant de chocolate</td>
<td>4.00€</td>
</tr>
<tr>
<td>Gofres</td>
<td>2.50€</td>
</tr>
<tr>
<td>Gofres + helado</td>
<td>3.50€</td>
</tr>
<tr>
<td>Gofres especial chocolate</td>
<td>4.00€</td>
</tr>
<tr>
<td>Crepes</td>
<td>2.50€</td>
</tr>
<tr>
<td>Crepes + helado</td>
<td>3.50€</td>
</tr>
<tr>
<td>Crepes especial chocolate</td>
<td>4.00€</td>
</tr>
<tr>
<td>Tartas caseras</td>
<td>2.50€</td>
</tr>
<tr>
<td>Brownei de galleta</td>
<td>4.00€</td>
</tr>
<tr>
<td>Torrija caramelizada</td>
<td>4.00€</td>
</tr>
<tr>
<td>Batidos helado (Sabores a elegir)</td>
<td>4.00€</td>
</tr>
</table>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -0,0 +1,322 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-06T15:33+00:00</date>
<title>Carta y Menú del Café - Bar Beluche en Burguillos.</title>
<ogdesc>Carta y Menú del Café - Bar Beluche en Burguillos.</ogdesc>
<img src="/img/beluche.webp"/>
<category>donde-comer</category>
<attributes>
<attribute>hamburguesas</attribute>
<attribute>reparto-a-domicilio-comida</attribute>
</attributes>
<slug>cafe-bar-beluche</slug>
<content>
<img width="50%" alt="Front door of 'Café-Bar Beluche'" style="border: solid 1px black;" src="/img/beluche.webp"/>
<h2>Información de contacto para preparación de pedidos y envío a domicilio.</h2>
<p>El Café - Bar Beluche es uno de los lugares favoritos de los habitantes de Burguillos para comer o simplemente tomar un refresco o un café.</p>
<p>Su ubicación en calle Albahaca número 13 es inmejorable, ofreciendo terrazas a parte de mesas en el interior.</p>
<p>Los teléfonos de contacto son <a href="tel:+34694200713">694 200 713</a> y <a href="tel:+34691492054">691 492 054</a>, puedes usarlos para reservar, pedir comida a domicilio o pedir que te preparen platos para llevar.</p>
<p>Procedemos a transcribir la carta a continuación:</p>
<h3>Ensaladas</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Mixta</td>
<td>6.00€</td>
</tr>
<tr>
<td>César</td>
<td>6.50€</td>
</tr>
</table>
<h3>Revueltos</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Gula langostinos</td>
<td>7.50€</td>
</tr>
<tr>
<td>Bacalao dorado</td>
<td>7.50€</td>
</tr>
</table>
<h3>Para compartir</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio plato</th>
</tr>
<tr>
<td>Papas bravas</td>
<td>3.00€</td>
<td>5.50€</td>
</tr>
<tr>
<td>Papas de mi prima</td>
<td>3.50€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Papas arrieras</td>
<td>3.80€</td>
<td>6.50€</td>
</tr>
<tr>
<td>Bartolitos. (Langostinos con bacon)</td>
<td>3.80€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Queso rulo con bacon, nueces y miel de caña</td>
<td>3.80€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Morcilla crocanti</td>
<td>3.50€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Muss de pato</td>
<td>4.00€</td>
<td>8.00€</td>
</tr>
<tr>
<td>Duo de rulo y muss de pato</td>
<td>---</td>
<td>7.00€</td>
</tr>
<tr>
<td>Talegitas de queso</td>
<td>3.50€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Champiñones con alioli y jamón</td>
<td>3.50€</td>
<td>6.50€</td>
</tr>
<tr>
<td>Fideos tostados</td>
<td>---</td>
<td>4.00€</td>
</tr>
<tr>
<td>Variado de croquetas</td>
<td>---</td>
<td>11.00€</td>
</tr>
</table>
<h3>Rico rico</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio plato</th>
</tr>
<tr>
<td>Pastel de berenjenas</td>
<td>---</td>
<td>3.50€</td>
</tr>
<tr>
<td>Timbal de arroz con chipirones y alioli</td>
<td>4.00€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Gambas al ajillo</td>
<td>---</td>
<td>7.50€</td>
</tr>
<tr>
<td>Flauta de jamón york y queso</td>
<td>3.00€</td>
<td>6.00€</td>
</tr>
<tr>
<td>Saquitos de gambas y salsa de mango</td>
<td>---</td>
<td>4.80€</td>
</tr>
<tr>
<td>Medallones de solomillo. (Roque, whisky, mojo)</td>
<td>3.50€</td>
<td>6.50€</td>
</tr>
<tr>
<td>Solomillo rulo de queso y miel de caña</td>
<td>4.00€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Carrillada ibérica</td>
<td>3.50€</td>
<td>7.00€</td>
</tr>
<tr>
<td>Pollo bechamel</td>
<td>3.60€</td>
<td>6.50€</td>
</tr>
<tr>
<td>Pollo kentucky</td>
<td>---</td>
<td>3.50€</td>
</tr>
</table>
<h3>Pescados</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio plato</th>
</tr>
<tr>
<td>Chipirones</td>
<td>3.90€</td>
<td>7.50€</td>
</tr>
<tr>
<td>Pez espada</td>
<td>---</td>
<td>12.00€</td>
</tr>
<tr>
<td>Merluza confitada</td>
<td>---</td>
<td>7.50€</td>
</tr>
<tr>
<td>Bacalao confitado</td>
<td>---</td>
<td>9.00€</td>
</tr>
</table>
<h3>Carnes</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio tapa</th>
<th>Precio plato</th>
</tr>
<tr>
<td>Solomillo ibérico</td>
<td>---</td>
<td>12.00€</td>
</tr>
<tr>
<td>Presa ibérica</td>
<td>---</td>
<td>14.00€</td>
</tr>
<tr>
<td>Pluma ibérica</td>
<td>---</td>
<td>13.00€</td>
</tr>
<tr>
<td>Presa con mostaza</td>
<td>4.00€</td>
<td>8.00€</td>
</tr>
<tr>
<td>Solomillo de pavo</td>
<td>---</td>
<td>9.00€</td>
</tr>
<tr>
<td>Medallones de solomillo</td>
<td>3.50€</td>
<td>6.50€</td>
</tr>
<tr>
<td>Hamburguesa de buey</td>
<td>---</td>
<td>5.50€</td>
</tr>
<tr>
<td>Abanico ibérico</td>
<td>---</td>
<td>11.00€</td>
</tr>
<tr>
<td>Mini hamburguesa</td>
<td>---</td>
<td>2.50€</td>
</tr>
<tr>
<td>Montadito de pollo o lomo</td>
<td>---</td>
<td>2.50€</td>
</tr>
<tr>
<td>Mini de pollo o lomo</td>
<td>---</td>
<td>3.50€</td>
</tr>
<tr>
<td>Serranito</td>
<td>---</td>
<td>5.50€</td>
</tr>
<tr>
<td>Montadito de gambas con alioli</td>
<td>---</td>
<td>3.20€</td>
</tr>
</table>
<h3>Postres</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Gofres con nata y chocolate</td>
<td>3.50€</td>
</tr>
<tr>
<td>Tortitas americanas</td>
<td>3.80€</td>
</tr>
<tr>
<td>Tartas (Porción)</td>
<td>3.50€</td>
</tr>
<tr>
<td>Coulant con helado de vainilla</td>
<td>4.00€</td>
</tr>
</table>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -0,0 +1,409 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-06T22:14+00:00</date>
<title>Carta y Menú de la Pizzería - Hamburguesería - Baguetería Pepín</title>
<ogdesc>Carta y Menú de la Pizzería - Hamburguesería - Baguetería Pepín</ogdesc>
<img src="/img/pepin.webp"/>
<category>donde-comer</category>
<attributes>
<attribute>hamburguesas</attribute>
<attribute>pizzerias</attribute>
<attribute>reparto-a-domicilio-comida</attribute>
</attributes>
<slug>pizzeria-pepin</slug>
<content>
<img width="50%" alt="Front door of 'Pizzería - Hamburguesería - Baguetería Pepín'" style="border: solid 1px black;" src="/img/pepin.webp"/>
<h2>Información de contacto para preparación de pedidos y envío a domicilio.</h2>
<p>La Pizzería - Hamburguesería - Baguetería Pepín.- Ubicada en calle Los Álamos número 13.- Es el lugar perfecto para una comida en familia o con amigos, además tienes la posibilidad de realizar tu pedido a domicilio.</p>
<p>El teléfono de contacto para los pedidos a domicilio es <a href="tel:+34692149337">692 149 337</a>.</p>
<p>Procedemos a transcribir la carta a continuación:</p>
<h3>Pizzas.</h3>
<p>Por el precio indicado en la carta puedes pedir una pizza con dos ingredientes, a partir del tercero el precio se incrementa de esta forma:</p>
<h4>Precio ingredientes.</h4>
<table>
<tr>
<th>Tipo de pizza</th>
<th>Incremento de precio por ingrediente extra</th>
</tr>
<tr>
<td>Pequeña</td>
<td>0.50€</td>
</tr>
<tr>
<td>Mediana</td>
<td>0.60€</td>
</tr>
<tr>
<td>Grande</td>
<td>0.70€</td>
</tr>
</table>
<h4>Tabla de precios pizzas.</h4>
<p>Las siguientes ofertas aplican al precio de las pizzas, si pides dos medianas te sale por 10€, mientras que si pides dos grandes por 17€. Ademas una pizza grande con 6 o más ingredientes te permite tener una pizza extra pequeña de forma gratuíta.</p>
<table>
<tr>
<th>Tipo de pizza</th>
<th>Precio</th>
</tr>
<tr>
<td>Pequeña</td>
<td>4.00€</td>
</tr>
<tr>
<td>Mediana</td>
<td>5.50€</td>
</tr>
<tr>
<td>Grande</td>
<td>9.00€</td>
</tr>
</table>
<h4>Ingredientes a escoger.</h4>
<ul>
<li>Jamón york.</li>
<li>Roquefort.</li>
<li>Chorizo.</li>
<li>Salchicha.</li>
<li>Gambas.</li>
<li>Aceitunas.</li>
<li>Jamón.</li>
<li>Cebolla.</li>
<li>Bacon.</li>
<li>Maíz.</li>
<li>Piña.</li>
<li>Pimiento rojo.</li>
<li>Pimiento verde.</li>
<li>Pepinillo.</li>
<li>Huevo.</li>
<li>Champiñones.</li>
<li>Anchoas.</li>
<li>Atún.</li>
<li>Carne.</li>
<li>Salsa barbacoa.</li>
<li>Salsa carbonara.</li>
<li>Ternera.</li>
<li>Peperoni.</li>
<li>Cheddar.</li>
</ul>
<h3>Hamburguesas.</h3>
<h4>Hamburguesas sin menú.</h4>
<table>
<tr>
<th>Nombre</th>
<th>Ingredientes</th>
<th>Precio</th>
</tr>
<tr>
<td>Hamburguesa de Buey</td>
<td>---</td>
<td>5.00€</td>
</tr>
<tr>
<td>Normal</td>
<td>Carne y queso</td>
<td>1.50€</td>
</tr>
<tr>
<td>Sabrosa</td>
<td>Carne, bacon, cebolla y queso</td>
<td>2.50€</td>
</tr>
<tr>
<td>Súper</td>
<td>Dos carnes, lechuga, tomate, cebolla y queso</td>
<td>2.80€</td>
</tr>
<tr>
<td>Completa</td>
<td>Carne, huevo, lechuga, tomate, cebolla y queso</td>
<td>2.50€</td>
</tr>
<tr>
<td>Dipo</td>
<td>Filete de pollo, lechuga, tomate, cebolla y queso</td>
<td>2.50€</td>
</tr>
<tr>
<td>Jomi</td>
<td>Carne, cochinito, tomate, pepinillo y queso</td>
<td>2.50€</td>
</tr>
<tr>
<td>Crujiente de pollo</td>
<td>---</td>
<td>4.50€</td>
</tr>
<tr>
<td>Perrito caliente</td>
<td>---</td>
<td>2.50€</td>
</tr>
<tr>
<td>Nuggets</td>
<td>---</td>
<td>2.80€</td>
</tr>
</table>
<h4>Hamburguesas con menú.</h4>
<p>Todos los menús incluyen patatas y refresco.</p>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Mini menú (Hamburguesa Normal)</td>
<td>3.60€</td>
</tr>
<tr>
<td>Mega menú (Hamburguesa Completa)</td>
<td>4.60€</td>
</tr>
<tr>
<td>Menú Sabrosa</td>
<td>4.60€</td>
</tr>
<tr>
<td>Menú Dipo</td>
<td>4.60€</td>
</tr>
<tr>
<td>Menú Jomi</td>
<td>4.60€</td>
</tr>
<tr>
<td>Menú Nuggets</td>
<td>4.80€</td>
</tr>
<tr>
<td>Menú Perrito</td>
<td>4.60€</td>
</tr>
<tr>
<td>Super Menú</td>
<td>4.90€</td>
</tr>
</table>
<h3>Baguettes.</h3>
<h4>Baguettes sin menú.</h4>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Cochinito</td>
<td>3.00€</td>
</tr>
<tr>
<td>Tortilla de patatas</td>
<td>3.00€</td>
</tr>
<tr>
<td>Bacon y queso</td>
<td>3.00€</td>
</tr>
<tr>
<td>Jamón y queso</td>
<td>3.00€</td>
</tr>
<tr>
<td>Tortilla francesa</td>
<td>2.80€</td>
</tr>
<tr>
<td>Pollo y lechuga</td>
<td>3.70€</td>
</tr>
<tr>
<td>Vegetal</td>
<td>3.00€</td>
</tr>
<tr>
<td>Filete de lomo</td>
<td>3.70€</td>
</tr>
<tr>
<td>Chorizo y roquefort</td>
<td>2.50€</td>
</tr>
<tr>
<td>Atún y pimiento</td>
<td>3.00€</td>
</tr>
<tr>
<td>Pollo y vegetal</td>
<td>3.90€</td>
</tr>
</table>
<h4>Baguettes con menú.</h4>
<p>Los menús incluyen patatas y refresco.</p>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Cochinito</td>
<td>4.80€</td>
</tr>
<tr>
<td>Bacon</td>
<td>4.80€</td>
</tr>
<tr>
<td>Vegetal</td>
<td>4.80€</td>
</tr>
<tr>
<td>Atún y pimientos</td>
<td>4.80€</td>
</tr>
<tr>
<td>Chorizo y roquefort</td>
<td>4.30€</td>
</tr>
<tr>
<td>Pollo y lechuga</td>
<td>5.00€</td>
</tr>
<tr>
<td>Pollo y vegetal</td>
<td>5.60€</td>
</tr>
<tr>
<td>Tortilla de patatas</td>
<td>4.80€</td>
</tr>
<tr>
<td>Tortilla francesa</td>
<td>4.70€</td>
</tr>
<tr>
<td>Lomo</td>
<td>5.50€</td>
</tr>
<tr>
<td>Jamón y queso</td>
<td>4.80€</td>
</tr>
</table>
<h3>Complementos</h3>
<table>
<tr>
<th>Nombre</th>
<th>Precio</th>
</tr>
<tr>
<td>Palomitas de queso</td>
<td>4.50€</td>
</tr>
<tr>
<td>Croquetas de jamón</td>
<td>3.00€</td>
</tr>
<tr>
<td>Churrasco de cerdo</td>
<td>5.00€</td>
</tr>
<tr>
<td>Pechuga de pollo</td>
<td>5.00€</td>
</tr>
<tr>
<td>Cartucho de patatas fritas pequeño</td>
<td>1.00€</td>
</tr>
<tr>
<td>Cartucho de patatas fritas grande</td>
<td>2.00€</td>
</tr>
<tr>
<td>Serranito de lomo o pollo</td>
<td>4.00€</td>
</tr>
<tr>
<td>Patatas bravas</td>
<td>3.00€</td>
</tr>
<tr>
<td>Montadito de pollo</td>
<td>3.00€</td>
</tr>
<tr>
<td>Patatas gratinadas con bacon y cheddar</td>
<td>4.00€</td>
</tr>
<tr>
<td>Salsa a elegir (Mojo picón, alioli, barbacoa)</td>
<td>0.40€</td>
</tr>
</table>
<h3>Ensaladas</h3>
<table>
<tr>
<th>Nombre</th>
<th>Ingredientes</th>
<th>Precio</th>
</tr>
<tr>
<td>Mixta</td>
<td>Lechuga, tomate, cebolla y huevo</td>
<td>3.00€</td>
</tr>
<tr>
<td>Especial</td>
<td>Lechuga, tomate, huevo, atún, cebolla, jamón york y piña</td>
<td>4.00€</td>
</tr>
</table>
<h3>Bebidas</h3>
<table>
<tr>
<th>Tipo</th>
<th>Precio</th>
</tr>
<tr>
<td>Cerveza o zumo</td>
<td>1.00€</td>
</tr>
<tr>
<td>Refresco</td>
<td>1.20€</td>
</tr>
</table>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

View File

@ -0,0 +1,20 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-08T22:14:00+02:00</date>
<title>Jornada de puertas abiertas "Guillena con el pueblo saharaui".</title>
<ogdesc>Jornada de puertas abiertas "Guillena con el pueblo saharaui".</ogdesc>
<category>index</category>
<img src="/img/sahara-adopta.webp"/>
<slug>sahara-acogida-ninos</slug>
<content>
<img style="border: 1px black solid;" src="/img/sahara-adopta.webp" alt="Transcript: Jornada de puertas abiertas Guillena adopta sonrisas. (Guillena con el pueblo saharahui)"/>
<h2>Acogida urgente de niños saharauis, se buscan familias de Sevilla, Burguillos, Alcalá del río, Castilblanco de los arroyos, la Rinconada, Guillena.</h2>
<p>La asociación "Guillena con el pueblo saharaui" organiza una jornada de puertas abiertas en Guillena calle Manuel Romero Romero número 1 el día 12 de Mayo de 2023 a las 20:30.</p>
<p>Estáis invitados a asistir, por otro lado se informa de la necesidad urgente de familias dispuestas a acoger de forma temporal a niños saharauis, contactad con este email <a href="mailto:guillenaconelpueblosaharaui@gmail.com">guillenaconelpueblosaharaui@gmail.com</a> para recibir toda la información si estais dispuestos a acoger a uno de estos niños.</p>
<p>Se actualizará con más información este artículo en los próximos días.</p>
</content>
</post>

View File

@ -0,0 +1,198 @@
<post>
<author>Burguillos.info</author>
<date>2023-05-12T14:03+00:00</date>
<last_modification_date>2023-06-06T15:06+00:00</last_modification_date>
<title>Carta y Menú de la Hamburguesería la Ermita</title>
<ogdesc>Carta y Menú de la Hamburguesería la Ermita</ogdesc>
<img src="/img/hamburgueseria-la-ermita.webp"/>
<category>donde-comer</category>
<attributes>
<attribute>hamburguesas</attribute>
<attribute>pizzerias</attribute>
<attribute>reparto-a-domicilio-comida</attribute>
</attributes>
<slug>hamburgueseria-la-ermita</slug>
<content>
<h2 style="background: black; color: red;">Ahora aceptan pedidos a domicilio.</h2>
<img width="50%" alt="Front door of 'Hamburguesería la Ermita'" style="border: solid 1px black;" src="/img/hamburgueseria-la-ermita.webp"/>
<h2>Información de contacto para preparación de pedidos.</h2>
<p>(Parrafo actualizado tras la cata del equipo de Burguillos.info) La hamburguesería la Ermita es un restaurante de nueva apertura, sus hamburguesas son de una calidad excelente, los tiempos de espera para la preparación son cortos y cuídan hasta el mínimo detalle.</p>
<p>Su localización es calle Cádiz número 3 y su número de teléfono para la preparación de pedidos y envío a domicilio es <a href="tel:+34682283189">682 283 189</a>.</p>
<p>Procedemos a listar la carta.</p>
<h3>Entrantes.</h3>
<ul>
<li>Chili Cheese Bite <b>3€ tapa</b>.</li>
<li>Fingers de mozarella <b>3€ tapa</b>.</li>
<li>Aros de cebolla <b>3€ tapa</b>.</li>
<li>Nuggets <b>3€ tapa</b>.</li>
<li>Crujientes de pollo <b>3€ tapa</b>.</li>
<li>Lagrimitas <b>3€ tapa</b>.</li>
<li>Croquetas de jamón / queso azul y cebolla caramelizada / pizza <b>3€ tapa</b>.</li>
<li>Patatas alioli <b>2.50€ tapa 4€ plato</b>.</li>
<li>Ensaladilla <b>2.50€ tapa 4€ plato</b>.</li>
</ul>
<h3>Pizzas.</h3>
<p>Todas las pizzas vienen con 2 ingredientes incluidos en el precio, por 0.60€ puedes añadir un ingrediente extra o una salsa extra por 0.30€.</p>
<p>Tienes la posibilidad de pedir una pizza mediana nutella por 5.50€ desde Burguillos.info suponemos que no se permiten
otros ingredientes para evitar aberraciones gastronómicas.</p>
<h4>Tamaño de pizza.</h4>
<ul>
<li>Mediana <b>5.50€</b>.</li>
<li>Grande <b>9.00€</b>.</li>
</ul>
<h4>Ingredientes disponibles.</h4>
<ul>
<li>Jamón York</li>
<li>Bacon</li>
<li>Salchicha</li>
<li>Pepperoni</li>
<li>Roquefort</li>
<li>Jamón</li>
<li>Barbacoa</li>
<li>Atún</li>
<li>Cebolla</li>
<li>Pimientos</li>
<li>Gambas</li>
<li>Huevo</li>
<li>Aceitunas</li>
<li>Pepinillos</li>
<li>Champiñones</li>
<li>Maíz</li>
<li>Piña</li>
<li>Anchoa</li>
<li>Rulo de cabra</li>
<li>Rúcula</li>
<li>Tomate natural</li>
<li>Carbonara</li>
<li>Carne kebab</li>
<li>Pollo asado y salsa kebab</li>
<li>4 quesos</li>
</ul>
<h3>Bebidas.</h3>
<ul>
<li>Refresco <b>1.50€</b></li>
<li>Cerveza de barril <b>1.80€</b></li>
<li>Pitufo (3/4) <b>1.80€</b></li>
<li>Tinto <b>1.50€</b></li>
<li>Radler <b>1.80€</b></li>
<li>Cerveza sin botellín <b>1.20€ 3/4 1.80€</b></li>
<li>Litro <b>2.20€</b></li>
<li>Agua pequeña <b>0.80€</b></li>
<li>Agua grande <b>1.20€</b></li>
<li>Zumo <b>1.00€</b></li>
<li>Café e infusión <b>1.20€</b></li>
<li>Combinado <b>4.50€</b></li>
</ul>
<h3>Helados.</h3>
<ul>
<li>Sandy <b>2.20€</b></li>
<li>Mini Sandy <b>1.50€</b></li>
<li>Mix Sandy <b>3.20€</b></li>
<li>Mini Mix Sandy <b>2.50€</b></li>
<li>Batido pequeño <b>2.50€</b></li>
<li>Batido grande <b>3.20€</b></li>
</ul>
<h3>Bocadillos.</h3>
<ul>
<li>Tortilla <b>3.00€</b></li>
<li>Cochinito <b>3.00€</b></li>
<li>Lomo adobado <b>3.00€</b></li>
<li>Bacon y queso <b>3.00€</b></li>
<li>Atún y pimiento <b>3.00€</b></li>
<li>Carne mechada y chimichurri <b>3.50€</b></li>
<li>Filete de lomo, mayonesa y lechuga <b>3.50€</b></li>
<li>Serranito de pollo o cerdo <b>4.50€</b></li>
</ul>
<h3>Montaditos.</h3>
<ul>
<li>Gambas alioli <b>2.50€</b></li>
<li>Melva con pimiento <b>2.50€</b></li>
<li>Carne mechada con chimichurri <b>2.50€</b></li>
<li>Solomillo (Whisky, roquefort o pimienta) <b>2.50€</b></li>
<li>Pollo o lomo <b>2.50€</b></li>
</ul>
<h3>Perritos.</h3>
<ul>
<li>Simple (Salchicha + salsa) <b>2.00€</b></li>
<li>Completo (Salchicha, cebolla frita, zanahoria, patatas paja y salsa) <b>2.50€</b></li>
</ul>
<h3>Carnes.</h3>
<ul>
<li>Pechuga y patatas <b>5€ plato</b>.</li>
<li>Churrasco y patatas <b>5€ plato</b>.</li>
<li>Solomillo (Whisky, roquefort o pimienta) <b>3.00€ tapa 5.00€ plato</b>.</li>
</ul>
<h3>Patatas gratinadas.</h3>
<p>En formato pequeño cuestan 4.00€ y en formato grande 6.00€, a elegir entre las siguientes combinaciones.</p>
<ul>
<li>Alioli + queso + bacon.</li>
<li>Salsa cheedar + bacon + cebolla frita.</li>
<li>Salsa kebab + carne kebab.</li>
</ul>
<h3>Patatas normales.</h3>
<ul>
<li>Pequeñas <b>1.00€</b></li>
<li>Grandes <b>1.50€</b></li>
<li>Gajo <b>grande 1.50€</b></li>
<li>Cris Criss - Cross <b>grande 2.00€</b></li>
</ul>
<h3>Hamburguesas.</h3>
<p>Puedes solicitar un extra en salsa por 0.30€.</p>
<ul>
<li>Solo carne <b>1.50€</b>.</li>
<li>Solo queso <b>2.00€</b>.</li>
<li>BBQ (Carne, salsa barbacoa, queso y pepinillo) <b>2.50€</b>.</li>
<li>Texas (Carne, salsa barbacoa, queso y aros de cebolla) <b>2.50€</b>.</li>
<li>Cheedar simple (Carne, salsa cheedar, tomate, cebolla frita) <b>2.50€</b>.</li>
<li>Salad (Carne, mayonesa, lechuga y tomate) <b>2.50€</b>.</li>
<li>Porky (Carne cerdo, bacon, salsa bacon, queso, tomate, cebolla frita) + patatas <b>6.50€</b>.</li>
<li>Roquefort (Carne mixta, salsa roquefort, lechuga, tomate, queso granapadano, bacon y cebolla frita) + patatas <b>6.50€</b>.</li>
<li>Campera (Pollo campero, mayonesa, lechuga, tomate, queso y bacon) + patatas <b>6.50€</b>.</li>
<li>Miel y mostaza (Carne mixta, rúcula, tomate, cebolla caramelizada, queso gouda, bacon, salsa miel y mostaza) + patatas <b>6.50€</b>.</li>
<li>Boletus (Carne mixta, queso gouda, bacon, champiñones y salsa boletus) + patatas <b>6.50€</b>.</li>
<li>La Ermita (Carne retinto, salsa barbacoa especial, tomate, cebolla frita, rulo de cabra y bacon) + patatas <b>7.50€</b>.</li>
<li>Cabrales (Carne mixta, salsa cabrales, gouda, bacon, lechuga, tomate y queso) + patatas <b>6.50€</b>.</li>
<li>Cheedar (Carne mixta o pollo empanado, salsa cheedar, cebolla frita, tomate, queso y bacon) + patatas <b>6.50€</b>.</li>
<li>Completa (Carne mixta, mayonesa, lechuga, cebolla frita, tomate, pepinillo y cebolla) + patatas <b>6.50€</b>.</li>
<li>Huevo (Carne mixta, mayonesa, lechuga, cebolla frita, tomate, queso, huevo y bacon) + patatas <b>6.50€</b>.</li>
<li>Steak (Carne mixta, mayonesa, lechuga, tomate, queso, bacon y salsa bbq) + patatas <b>6.50€</b>.</li>
<li>Cheese bacon (Carne mixta, queso, bacon, pepinillo, ketchup, mostaza y cebolla) + patatas <b>6.50€</b>.</li>
<li>Romana (Carne mixta, salsa bbq, lechuga, tomate, queso y aros de cebolla) + patatas <b>6.50€</b>.</li>
</ul>
<p>¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a>.</p>
</content>
</post>

56
extract_carta_genuino.pl Normal file
View File

@ -0,0 +1,56 @@
#!/usr/bin/env perl
use v5.36.0;
use strict;
use warnings;
use utf8;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
my $base_url = "https://www.mundogenuino.eu";
my $dom = $ua->get($base_url)->result->dom;
my $category_anchors = $dom->find('a.s123-fast-page-load');
binmode STDOUT, ':utf8';
for my $category_anchor ($category_anchors->each) {
my $title_category = $category_anchor->all_text;
my $url_category = $base_url . $category_anchor->attr('href');
next unless $title_category;
$title_category =~ s/^\s+//;
$title_category =~ s/\s+$//;
say "$title_category";
say "$url_category";
my $dom_category = $ua->get($url_category)->result->dom;
my @product_containers = $dom_category->find('a.article-container')->each;
for my $product_container (@product_containers) {
my $url_product = $base_url.$product_container->attr('href');
my $product_title = $product_container->at('h4')->all_text;
my $dom_product = $ua->get($url_product)->result->dom;
my $ingredients_tag = $dom_product->at('strong');
my $ingredients = '';
if (defined $ingredients_tag) {
$ingredients = $ingredients_tag->all_text;
}
my @prices;
my $i = 0;
my $product_text = $dom_product->all_text;
while ($product_text =~ /(\S+(\s*)€)/ug) {
my $price = $1;
$price =~ s/,/./g;
$price =~ s/\s//g;
push @prices, $price;
last if ++$i == 2;
}
if (!scalar @prices) {
my ($price) = $product_text =~ /(\d+,\d{2})(?:\s|$)/;
if (defined $price) {
$price =~ s/,/./g;
push @prices, $price.'€';
}
}
say join '', map { "($_)" } $product_title, $url_product, $ingredients, @prices;
}
# say join "\n", $dom_category->find('h4')->map('all_text')->each;
}

16
generate_pass.pl Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env perl
use v5.36.0;
use strict;
use warnings;
use Crypt::URandom qw/urandom/;
use Crypt::Bcrypt qw/bcrypt bcrypt_check/;
my $new_password = urandom(50);
my $new_salt = urandom(16);
$new_password = unpack 'H*', $new_password;
say "This is your password: ($new_password)";
say "This is bcrypted: (@{[bcrypt $new_password, '2b', 12, $new_salt]})";

29
js-src/index.ts Normal file
View File

@ -0,0 +1,29 @@
"use strict";
import Tablesort from 'tablesort';
window.Tablesort = require('tablesort');
require('tablesort/src/sorts/tablesort.number');
window.onload = () => {
const menu_expand = document.querySelector('a.menu-expand');
const mobile_foldable = document.querySelector('nav.mobile-foldable');
const tables = document.querySelectorAll('table')
if (menu_expand !== null && mobile_foldable !== null) {
menu_expand.addEventListener('click', () => {
mobile_foldable.classList.toggle('show');
});
}
for (const table of tables) {
const header = table.querySelector('tr');
if (header !== null) {
header.setAttribute('data-sort-method', 'none')
for (const th of header.querySelectorAll('th')) {
if (th.getAttribute('data-sort-method') == null) {
th.setAttribute('data-sort-method', 'thead')
}
}
}
new Tablesort(table)
}
};

View File

@ -19,21 +19,30 @@ sub startup ($self) {
);
my $config = $self->plugin('JSONConfig');
$self->config(
hypnotoad => { proxy => 1, listen => ['http://localhost:3000'] } );
$self->secrets($self->config->{secrets});
hypnotoad => { proxy => 1, listen => [$self->config('listen') // 'http://localhost:3000'] } );
$self->config( css_version => int( rand(10000) ) );
$self->secrets( $self->config->{secrets} );
# Router
my $r = $self->routes;
# Normal route to controller
$r->get('/')->to('Page#index');
$r->get('/sitemap.xml')->to('Sitemap#sitemap');
$r->get('/robots.txt')->to('Robots#robots');
$r->get('/aprende-a-dibujar-con-krita')->to('Page#rickroll');
# $r->get('/:post')->to('Page#post');
$r->get('/stats')->to('Metrics#stats');
$r->get('/<:category>.rss')->to('Page#category_rss');
$r->get('/:category_slug/atributo/<:attribute_slug>-preview.png')->to('Attribute#get_attribute_preview');
$r->get('/:category_slug/atributo/:attribute_slug')->to('Attribute#get');
$r->get('/<:category>-preview.png')->to('Page#get_category_preview');
$r->get('/:category')->to('Page#category');
$r->get('/posts/<:slug>-preview.png')->to('Page#get_post_preview');
$r->get('/posts/:slug')->to('Page#post');
$r->get('/filtros')->to('Filter#list');
$r->get('/filtros/:slug')->to('Filter#get');
$r->get('/stats/login')->to('Metrics#login');
$r->post('/stats/login')->to('Metrics#submit_login');
}

View File

@ -5,10 +5,14 @@ use v5.34.1;
use strict;
use warnings;
use feature 'signatures';
use Const::Fast;
use Mojo::DOM;
use Path::Tiny;
use BurguillosInfo::Preview;
const my $CURRENT_FILE => __FILE__;
const my $CATEGORIES_DIR =>
path($CURRENT_FILE)->parent->parent->parent->child('content/categories');
@ -19,7 +23,7 @@ sub new {
return bless {}, shift;
}
sub Retrieve {
sub Retrieve($self) {
if ( defined $cached_categories ) {
return $cached_categories;
}
@ -28,26 +32,100 @@ sub Retrieve {
warn "Bad file $category_file, omiting...", next
if !-f $category_file || $category_file !~ /\.xml$/;
my $dom = Mojo::DOM->new( $category_file->slurp_utf8 );
my $title = $dom->at(':root > title')->text
defined(my $title = $dom->at(':root > title')->text)
or die "Missing title at $category_file.";
my $description = $dom->at(':root > description')->content
defined(my $description = $dom->at(':root > description')->content)
or die "Missing description at $category_file";
my $slug = $dom->at(':root > slug')->text
defined(my $slug = $dom->at(':root > slug')->text)
or die "Missing slug at $category_file";
my $menu_text = $dom->at(':root > menu_text')->content
defined (my $menu_text = $dom->at(':root > menu_text')->content)
or die "Missing menu_text at $category_file";
defined (my $priority = $dom->at(':root > priority')->text)
or die "Missing priority at $category_file";
my $attributes = $self->_GetAttributes($dom, $category_file);
my $parent_tag = $dom->at(':root > parent');
my $parent;
if (defined $parent_tag) {
$parent = $parent_tag->content;
}
my $category = {
title => $title,
menu_text => $menu_text,
slug => $slug,
description => $description,
priority => $priority,
(
(defined $parent) ?
(parent => $parent) :
()
),
attributes => $attributes,
};
$cached_categories->{$slug} = $category;
}
$self->_AvoidGrandChildCategories($cached_categories);
$self->_PopulateChildrenField($cached_categories);
return $cached_categories;
}
sub _GetAttributes($self, $dom, $category_file) {
my $attributes_tag = $dom->at(':root > attributes');
my %attributes;
if (defined $attributes_tag) {
my @attribute_tag_list = $attributes_tag->find('attributes > attribute')->each;
for my $attribute_tag (@attribute_tag_list) {
defined (my $menu_text = $attribute_tag->at('attribute > menu_text')->content)
or die "Missing attribute menu_text at $category_file";
defined (my $description = $attribute_tag->at('attribute > description')->content)
or die "Missing attribute description at $category_file";
defined (my $title = $attribute_tag->at('attribute > title')->text)
or die "Missing attribute title at $category_file";
defined (my $identifier = $attribute_tag->at('attribute > identifier')->text)
or die "Missing attribute identifier at $category_file";
defined (my $priority = $attribute_tag->at('attribute > priority')->text)
or die "Missing attribute priority at $category_file";
$attributes{$identifier} = {
title => $title,
identifier => $identifier,
priority => $priority,
menu_text => $menu_text,
description => $description,
};
}
}
return \%attributes;
}
sub _PopulateChildrenField($self, $categories) {
for my $category_name (keys %$categories) {
my $category = $categories->{$category_name};
$category->{children} //= [];
my $parent_name = $category->{parent};
if (!defined $parent_name) {
next;
}
my $parent = $categories->{$parent_name};
if (!defined $parent) {
die "Category $parent not exists and is the parent of $category_name.";
}
$parent->{children} //= [];
push $parent->{children}->@*, $category;
}
}
sub _AvoidGrandChildCategories($self, $categories) {
for my $category_slug (keys %$categories) {
my $category = $categories->{$category_slug};
my $parent = $category->{parent};
if (defined $parent && defined $categories->{$parent}{parent}) {
die "$category_slug category is grandchild of $categories->{$parent}{parent}) category and this is not allowed.";
}
}
}
sub PreviewOg($self, $category) {
my $title = $category->{title};
my $description = $category->{description};
return BurguillosInfo::Preview->Generate($title, $description, undef);
}
1;

View File

@ -0,0 +1,66 @@
package BurguillosInfo::Controller::Attribute;
use v5.34.1;
use strict;
use warnings;
use Data::Dumper;
use BurguillosInfo::Categories;
use Mojo::Base 'Mojolicious::Controller', -signatures;
use BurguillosInfo::Preview;
sub get_attribute_preview ($self) {
my $category_slug = $self->param('category_slug');
my $attribute_slug = $self->param('attribute_slug');
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $category = $categories->{$category_slug};
if ( !defined $category ) {
return $self->reply->not_found;
}
my $attribute = $category->{attributes}{$attribute_slug};
if ( !defined $attribute ) {
return $self->reply->not_found;
}
$self->render(
format => 'png',
data => BurguillosInfo::Preview->Generate(
$attribute->{title}, $attribute->{description}, undef
),
);
}
sub get ($self) {
my $category_slug = $self->param('category_slug');
my $attribute_slug = $self->param('attribute_slug');
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $category = $categories->{$category_slug};
if ( !defined $category ) {
return $self->reply->not_found;
}
my $attribute = $category->{attributes}{$attribute_slug};
if ( !defined $attribute ) {
return $self->reply->not_found;
}
my $posts = BurguillosInfo::Posts->RetrieveDirectPostsForCategory(
$category->{slug} );
$posts = [ grep { defined $_->{attributes}{$attribute_slug} } @$posts ];
my $base_url = $self->config('base_url');
$self->render(
template => 'page/attribute',
category => $category,
attribute => $attribute,
categories => $categories,
posts => $posts,
ogimage => $base_url . '/'
. $category->{slug}
. '/atributo/'
. $attribute->{identifier}
. '-preview.png',
);
}
1;

View File

@ -9,7 +9,7 @@ use Data::Dumper;
use BurguillosInfo::Tracking;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Base 'Mojolicious::Controller', '-signatures';
use DateTime::Format::ISO8601;
use DateTime::Format::Mail;
@ -37,7 +37,27 @@ sub stats {
}
my $data = $tracking->get_global_data($self);
my $data_per_url = $tracking->get_data_for_urls($self);
$self->render(tracking_data => $data, tracking_by_url => $data_per_url);
my $google_data = $tracking->get_google_data($self);
$self->_filter_data_per_url($data_per_url);
$self->_filter_data_per_url($google_data);
$self->render(tracking_data => $data, tracking_by_url => $data_per_url, google_data => $google_data);
}
sub _filter_data_per_url($self, $data_per_url) {
my $filter = $self->param('filter');
if (!defined $filter) {
return;
}
my @new_data_per_url;
if ($filter eq 'remove-extensions') {
for my $url (@$data_per_url) {
if ($url->{path} =~ /\.\w+$/) {
next;
}
push @new_data_per_url, $url;
}
}
@$data_per_url = @new_data_per_url;
}
sub submit_login {

View File

@ -10,7 +10,7 @@ use BurguillosInfo::Posts;
use Data::Dumper;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Base 'Mojolicious::Controller', '-signatures';
use DateTime::Format::ISO8601;
use DateTime::Format::Mail;
@ -27,6 +27,14 @@ sub index {
);
}
sub rickroll($self) {
if ($self->req->headers->user_agent =~ /bot/i) {
return $self->render(text => '');
}
$self->res->headers->location('http://ibaillanos.tv');
$self->render(text => '', status => 302);
}
sub category_rss {
my $self = shift;
my $categories = BurguillosInfo::Categories->new->Retrieve;
@ -64,7 +72,7 @@ sub category_rss {
'Todas las noticias de la categoria de Burguillos.info '
. $category->{title} );
my $link_tag = Mojo::DOM->new_tag( 'link',
'https://burguillos.info/' . $category->{slur} );
'https://burguillos.info/' . $category->{slug} );
$channel_tag->child_nodes->first->append_content($title_tag);
$channel_tag->child_nodes->first->append_content($description_tag);
$channel_tag->child_nodes->first->append_content($link_tag);
@ -94,9 +102,10 @@ sub _post_to_rss {
my $guid = Mojo::DOM->new_tag( 'guid', $post->{slug} );
my $date = Mojo::DOM->new_tag(
'pubDate',
''.DateTime::Format::Mail->format_datetime(
''
. DateTime::Format::Mail->format_datetime(
DateTime::Format::ISO8601->parse_datetime( $post->{date} )
)
)
);
$item_tag->child_nodes->first->append_content($title_tag);
@ -112,15 +121,17 @@ sub post {
my $slug = $self->param('slug');
my ( $posts_categories, $posts_slug ) =
BurguillosInfo::Posts->new->Retrieve;
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $post = $posts_slug->{$slug};
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $post = $posts_slug->{$slug};
if ( !defined $post ) {
$self->render( template => '404', status => 404 );
return;
}
my $current_category = $categories->{ $post->{category} };
$self->stash(ogimage => 'https://burguillos.info/posts/'.$post->{slug}.'-preview.png');
$self->stash(useragent => $self->req->headers->user_agent);
my $base_url = $self->config('base_url');
$self->stash(
ogimage => $base_url . '/posts/' . $post->{slug} . '-preview.png' );
$self->stash( useragent => $self->req->headers->user_agent );
$self->render( post => $post, current_category => $current_category );
}
@ -129,30 +140,48 @@ sub category {
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $category_name = $self->param('category');
my $current_category = $categories->{$category_name};
my $base_url = $self->config('base_url');
if ( !defined $current_category ) {
$self->render( template => '404', status => 404 );
return;
}
$self->render(
template => 'page/index',
categories => $categories,
template => 'page/index',
categories => $categories,
ogimage => $base_url . '/' . $current_category->{slug} . '-preview.png',
current_category => $current_category
);
}
sub get_category_preview {
my $self = shift;
my $category_slug = $self->param('category');
my $category_model = BurguillosInfo::Categories->new;
my $categories = $category_model->Retrieve;
if ( !defined $categories->{$category_slug} ) {
$self->render( template => '404', status => 404 );
return;
}
my $category = $categories->{$category_slug};
$self->render(
format => 'png',
data => $category_model->PreviewOg($category)
);
}
sub get_post_preview {
my $self = shift;
my $slug = $self->param('slug');
my $post_model = BurguillosInfo::Posts->new;
my ( $posts_categories, $posts_slug ) = $post_model->Retrieve;
if ( !defined $posts_slug->{$slug} ) {
$self->render( template => '404', status => 404 );
return;
}
my $post = $posts_slug->{$slug};
$self->render(
format => 'png',
data => $post_model->PostPreviewOg($post)
);
my $self = shift;
my $slug = $self->param('slug');
my $post_model = BurguillosInfo::Posts->new;
my ( $posts_categories, $posts_slug ) = $post_model->Retrieve;
if ( !defined $posts_slug->{$slug} ) {
$self->render( template => '404', status => 404 );
return;
}
my $post = $posts_slug->{$slug};
$self->render(
format => 'png',
data => $post_model->PreviewOg($post)
);
}
1;

View File

@ -0,0 +1,14 @@
package BurguillosInfo::Controller::Robots;
use Mojo::Base 'Mojolicious::Controller', '-signatures';
sub robots($self) {
my $robots_txt = <<"EOF";
Sitemap: @{[$self->config('base_url')]}/sitemap.xml
User-Agent: *
Disallow: /stats
Disallow: /stats/*
EOF
$self->render(text => $robots_txt, format => 'txt');
}
1;

View File

@ -0,0 +1,130 @@
package BurguillosInfo::Controller::Sitemap;
use v5.34.1;
use strict;
use warnings;
use BurguillosInfo::Categories;
use BurguillosInfo::Posts;
use DateTime::Format::ISO8601;
use XML::Twig;
use Mojo::Base 'Mojolicious::Controller', '-signatures';
sub sitemap ($self) {
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $dom = Mojo::DOM->new_tag(
'urlset',
xmlns => 'http://www.sitemaps.org/schemas/sitemap/0.9',
undef
);
$dom->xml(1);
for my $category_key ( keys %$categories ) {
$self->_append_category_dom( $dom, $category_key, $categories );
}
my $xml_string = "$dom";
my $document = XML::Twig->new(pretty_print=> 'indented');
$xml_string = $document->parse($xml_string)->sprint;
$self->render(text => $xml_string, format => 'xml');
}
sub _append_category_dom ( $self, $dom, $category_key, $categories ) {
my $category = $categories->{$category_key};
my $slug = $category->{'slug'};
my $date_publish_category;
my $date_last_modification_category;
my ( $posts_categories, $posts_slug ) =
BurguillosInfo::Posts->new->Retrieve;
for my $post ( $posts_categories->{$category_key}->@* ) {
( $date_publish_category, $date_last_modification_category ) =
_get_dates_for_category( $date_publish_category,
$date_last_modification_category, $post );
my $url_post = $self->_generate_url_for_post($post);
$dom->child_nodes->first->append_content($url_post);
}
my $url = Mojo::DOM->new_tag('url');
my $base_url = $self->config('base_url');
my $location_tag = Mojo::DOM->new_tag( loc => "$base_url/$slug" );
my $final_date_last_modification_category =
_compare_dates_return_most_recent( $date_publish_category,
$date_last_modification_category );
if (defined $final_date_last_modification_category) {
my $last_modification_tag =
Mojo::DOM->new_tag( lastmod => $final_date_last_modification_category );
$url->child_nodes->first->append_content($last_modification_tag);
}
$self->_append_attributes_category_sitemap($dom, $category_key, $categories);
my $priority_tag = Mojo::DOM->new_tag( priority => 0.6 );
$url->child_nodes->first->append_content($location_tag);
$url->child_nodes->first->append_content($priority_tag);
$dom->child_nodes->first->append_content($url);
}
sub _append_attributes_category_sitemap($self, $dom, $category_key, $categories) {
my $base_url = $self->config('base_url');
my $category = $categories->{$category_key};
for my $attribute (keys $category->{attributes}->%*) {
my $url = Mojo::DOM->new_tag('url');
my $location_tag = Mojo::DOM->new_tag( loc => "$base_url/$category_key/atributo/$attribute" );
$url->child_nodes->first->append_content($location_tag);
$dom->child_nodes->first->append_content($url);
}
}
sub _generate_url_for_post ( $self, $post ) {
my $url_tag = Mojo::DOM->new_tag('url');
my $date = $post->{date};
my $date_last_modification_post = $post->{last_modification_date};
my $final_date_last_modification_post =
_compare_dates_return_most_recent( $date, $date_last_modification_post );
my $base_url = $self->config('base_url');
my $url_resource = "$base_url/posts/@{[$post->{slug}]}";
my $last_modification_tag =
Mojo::DOM->new_tag( lastmod => $final_date_last_modification_post );
my $location_tag = Mojo::DOM->new_tag( loc => $url_resource );
$url_tag->child_nodes->first->append_content($location_tag);
$url_tag->child_nodes->first->append_content($last_modification_tag);
return $url_tag;
}
my $error_no_dates = "Undefined dates";
sub _get_dates_for_category ( $current_date_publish,
$current_date_modification, $post )
{
my @return_list;
@return_list = (
_compare_dates_return_most_recent(
$current_date_publish, $post->{date}
),
_compare_dates_return_most_recent(
$current_date_publish, $post->{last_modification_date}
),
);
return @return_list;
}
sub _compare_dates_return_most_recent ( $date_a, $date_b ) {
if ( !defined $date_a && !defined $date_b ) {
return undef;
}
if ( !defined $date_a ) {
return $date_b;
}
if ( !defined $date_b ) {
return $date_a;
}
my $date_a_dt = DateTime::Format::ISO8601->parse_datetime($date_a);
my $date_b_dt = DateTime::Format::ISO8601->parse_datetime($date_b);
if ( $date_a_dt >= $date_b_dt ) {
return $date_a;
}
return $date_b;
}
1;

View File

@ -6,25 +6,31 @@ use strict;
use warnings;
sub MIGRATIONS {
return (
'CREATE TABLE options (
name TEXT PRIMARY KEY,
value TEXT
)',
'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"',
'CREATE TABLE paths (
path TEXT PRIMARY KEY,
first_seen timestamp DEFAULT NOW()
)',
'CREATE TABLE requests (
uuid UUID DEFAULT uuid_generate_v4(),
remote_address TEXT NOT NULL,
user_agent TEXT NOT NULL,
params JSON NOT NULL,
date timestamp DEFAULT NOW(),
path TEXT,
FOREIGN KEY (path) REFERENCES paths(path)
)',
);
return (
'CREATE TABLE options (
name TEXT PRIMARY KEY,
value TEXT
)',
'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"',
'CREATE TABLE paths (
path TEXT PRIMARY KEY,
first_seen timestamp DEFAULT NOW()
)',
'CREATE TABLE requests (
uuid UUID DEFAULT uuid_generate_v4(),
remote_address TEXT NOT NULL,
user_agent TEXT NOT NULL,
params JSON NOT NULL,
date timestamp DEFAULT NOW(),
path TEXT,
FOREIGN KEY (path) REFERENCES paths(path)
)',
'ALTER TABLE paths ADD column last_seen TIMESTAMP;',
'ALTER TABLE paths ALTER COLUMN last_seen SET DEFAULT NOW();',
'ALTER TABLE requests ADD PRIMARY KEY (uuid)',
'CREATE INDEX request_extra_index on requests (date, path);',
'ALTER TABLE requests ADD column referer text;',
'CREATE INDEX request_referer_index on requests (referer);',
);
}
1;

View File

@ -5,26 +5,25 @@ use v5.34.1;
use strict;
use warnings;
use feature 'signatures';
use Data::Dumper;
use MIME::Base64;
use BurguillosInfo::Categories;
use Const::Fast;
use Mojo::DOM;
use Path::Tiny;
use DateTime::Format::ISO8601;
use DateTime;
use SVG;
use Capture::Tiny qw/capture/;
use BurguillosInfo::Preview;
const my $CURRENT_FILE => __FILE__;
const my $ROOT_PROJECT => path($CURRENT_FILE)->parent->parent->parent;
const my $PUBLIC_DIR => $ROOT_PROJECT->child('public');
const my $POSTS_DIR => $ROOT_PROJECT->child('content/posts');
const my $BURGUILLOS_LOGO => $PUBLIC_DIR->child('img/burguillos.png');
const my $SVG_WIDTH => 1200;
const my $SVG_HEIGHT => 627;
const my $SVG_EMBEDDED_IMAGE_MAX_WIDTH => 1000;
const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200;
my $cached_posts_by_category;
my $cached_posts_by_slug;
@ -41,7 +40,13 @@ sub _ReturnCacheFilter {
my $current_date = DateTime->now;
for my $category ( keys %$cached_posts_by_category ) {
for my $post ( @{ $cached_posts_by_category->{$category} } ) {
my $date_post = $iso8601->parse_datetime( $post->{date} );
my $date_post;
eval {
$date_post = $iso8601->parse_datetime( $post->{date} );
};
if ($@) {
print Data::Dumper::Dumper $post;
}
if ( $date_post > $current_date ) {
next;
}
@ -53,204 +58,139 @@ sub _ReturnCacheFilter {
return ( \%posts_by_category_filtered, \%posts_by_slug_filtered );
}
sub _GeneratePostFromFile ( $self, $post_file ) {
warn "Bad file $post_file, omiting...", return
if !-f $post_file || $post_file !~ /\.xml$/;
my $dom = Mojo::DOM->new( $post_file->slurp_utf8 );
my $title = $dom->at(':root > title')->text
or die "Missing title at $post_file.";
my $author = $dom->at(':root > author')->text
or die "Missing author at $post_file.";
my $date = $dom->at(':root > date')->text
or die "Missing date at $post_file.";
my $ogdesc = $dom->at(':root > ogdesc')->text
or die "Missing ogdesc at $post_file";
my $category = $dom->at(':root > category')->text
or die "Missing category at $post_file.";
my $slug = $dom->at(':root > slug')->text
or die "Missing slug at $post_file.";
my $content = $dom->at(':root > content')->content
or die "Missing content at $post_file.";
my $image_element = $dom->at(':root > img');
my $image;
my $attributes = $self->_GetAttributes($post_file, $dom);
if ( defined $image_element ) {
$image = $image_element->attr->{src};
}
my $last_modification_date_element =
$dom->at(':root > last_modification_date');
my $last_modification_date;
if ( defined $last_modification_date_element ) {
$last_modification_date = $last_modification_date_element->content;
}
return {
title => $title,
author => $author,
date => $date,
ogdesc => $ogdesc,
category => $category,
slug => $slug,
content => $content,
(
( defined $last_modification_date )
? ( last_modification_date => $last_modification_date )
: ()
),
( ( defined $image ) ? ( image => $image ) : () ),
attributes => $attributes,
};
}
sub _GetAttributes($self, $post_file, $dom) {
my $attributes_tag = $dom->at(':root > attributes');
my %attributes;
if (defined $attributes_tag) {
my @attribute_list = $attributes_tag->find('attributes > attribute')->map('text')->each;
%attributes = map {
my $identifier = $_;
($identifier => 1);
} @attribute_list;
}
return \%attributes;
}
sub _GeneratePostCache ($self) {
$cached_posts_by_category = {};
$cached_posts_by_slug = {};
for my $post_file ( sort { $b cmp $a } $POSTS_DIR->children ) {
my $post = $self->_GeneratePostFromFile($post_file);
if (!defined $post) {
next;
}
my $category = $post->{category};
$cached_posts_by_category->{$category} //= [];
my $slug = $post->{slug};
my $category_posts = $cached_posts_by_category->{$category};
$cached_posts_by_slug->{$slug} = $post;
push @$category_posts, $post;
}
}
sub Retrieve {
my $self = shift;
if ( defined $cached_posts_by_category && defined $cached_posts_by_slug ) {
return $self->_ReturnCacheFilter;
}
$cached_posts_by_category = {};
$cached_posts_by_slug = {};
for my $post_file ( sort { $b cmp $a } $POSTS_DIR->children ) {
warn "Bad file $post_file, omiting...", next
if !-f $post_file || $post_file !~ /\.xml$/;
my $dom = Mojo::DOM->new( $post_file->slurp_utf8 );
my $title = $dom->at(':root > title')->text
or die "Missing title at $post_file.";
my $author = $dom->at(':root > author')->text
or die "Missing author at $post_file.";
my $date = $dom->at(':root > date')->text
or die "Missing date at $post_file.";
my $ogdesc = $dom->at(':root > ogdesc')->text
or die "Missing ogdesc at $post_file";
my $category = $dom->at(':root > category')->text
or die "Missing category at $post_file.";
my $slug = $dom->at(':root > slug')->text
or die "Missing slug at $post_file.";
my $content = $dom->at(':root > content')->content
or die "Missing content at $post_file.";
my $image_element = $dom->at(':root > img');
my $image;
if ( defined $image_element ) {
$image = $image_element->attr->{src};
}
my $post = {
title => $title,
author => $author,
date => $date,
ogdesc => $ogdesc,
category => $category,
slug => $slug,
content => $content,
( ( defined $image ) ? ( image => $image ) : () ),
};
$cached_posts_by_category->{$category} //= [];
my $category_posts = $cached_posts_by_category->{$category};
$cached_posts_by_slug->{$slug} = $post;
push @$category_posts, $post;
}
$self->_GeneratePostCache();
return $self->_ReturnCacheFilter;
}
sub PostPreviewOg {
my $cache_all_post_categories = {};
sub RetrieveAllPostsForCategory ( $self, $category_name ) {
if (defined $cache_all_post_categories->{$category_name}) {
return $cache_all_post_categories->{$category_name};
}
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $category = $categories->{$category_name};
my $posts = $self->RetrieveDirectPostsForCategory($category_name);
for my $child_category ( $category->{children}->@* ) {
my $child_category_name = $child_category->{slug};
push @$posts,
@{$self->RetrieveDirectPostsForCategory($child_category_name)};
}
@$posts = sort {
DateTime::Format::ISO8601->parse_datetime($b->{date}) <=>
DateTime::Format::ISO8601->parse_datetime($a->{date})
} @$posts;
$cache_all_post_categories->{$category_name} = $posts;
return $posts;
}
sub RetrieveDirectPostsForCategory ( $self, $category_name ) {
my ($post_by_category) = $self->Retrieve;
my $categories = BurguillosInfo::Categories->new->Retrieve;
my $category = $categories->{$category_name};
if ( !defined $category ) {
die "$category_name category does not exists";
}
my $posts = $post_by_category->{$category_name};
$posts //= [];
return [@$posts];
}
sub PreviewOg {
my $self = shift;
my $post = shift;
my $title = $post->{title};
my $content = $post->{content};
my $dom = Mojo::DOM->new($content);
$content = $dom->all_text;
my @content_divided_in_lines = split /\n/, $content;
my @new_content;
my $n_chars_per_line = 70;
for my $line (@content_divided_in_lines) {
if ( length($line) <= $n_chars_per_line ) {
push @new_content, $line;
next;
}
my $last_word = '';
while ( $line =~ /(.{1,${n_chars_per_line}})/g ) {
my $new_line = $last_word . $1;
$new_line =~ s/(\S*)$//;
$last_word = $1;
push @new_content, $new_line;
}
if ($last_word) {
$new_content[$#new_content] .= $last_word;
}
}
my $svg =
$self->_GenerateSVGPostPreview( $title, \@new_content, $post->{image} );
my ( $stdout, $stderr ) = capture {
open my $fh, '|-', qw{convert /dev/stdin png:fd:1};
binmode $fh, 'utf8';
print $fh $svg;
close $fh;
};
say STDERR $stderr;
return $stdout;
my $image_file = $post->{image};
return BurguillosInfo::Preview->Generate($title, $content, $image_file);
}
sub _AttachImageSVG {
my $self = shift;
my $svg = shift;
my $image = shift;
$image = $PUBLIC_DIR->child( './' . $image );
my ( $stdout, $stderr, $error ) = capture {
system qw/identify -format "%wx%h"/, $image;
};
if ($error) {
warn "$image not recognized by identify.";
return;
}
my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/;
if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) {
$width /= $height / $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
$width = int($width);
$height = $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
}
if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) {
$height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
$height = int($height);
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
}
my $x = int( ( $SVG_WIDTH / 2 ) - ( $width / 2 ) );
my $y = 90;
my ($output) = capture {
system qw/file --mime-type/, $image;
};
my ($format) = $output =~ /(\S+)$/;
$svg->image(
x => $x,
y => $y,
width => $width,
height => $height,
-href => "data:$format;base64," . encode_base64( $image->slurp )
);
return $y + $height + 50;
}
sub _GenerateSVGPostPreview {
my $self = shift;
my $title = shift;
my $content = shift;
my $image = shift;
my @content = @$content;
my $svg = SVG->new( width => $SVG_WIDTH, height => $SVG_HEIGHT );
$svg->rect(
x => 0,
y => 0,
width => 1200,
height => 50,
style => { fill => 'blueviolet' }
);
$svg->rect(
x => 0,
y => 50,
width => 1200,
height => 627,
style => { fill => '#F8F8FF' }
);
my $group = $svg->group(
id => 'group',
style => {
font => 'Arial',
'font-size' => 30,
}
);
$group->image(
x => 10,
y => 5,
width => 40,
height => 40,
-href => 'data:image/png;base64,'
. encode_base64( $BURGUILLOS_LOGO->slurp )
);
$group->text(
x => 60,
y => 40,
style => { 'font-size' => 50, fill => '#f2eb8c' }
)->cdata('Burguillos.info');
my $new_y;
if ( defined $image ) {
$new_y = $self->_AttachImageSVG( $group, $image );
}
$new_y //= 100;
$group->text(
x => 10,
y => $new_y,
style => { 'font-size' => 50 }
)->cdata($title);
my $n = 0;
for my $line (@content) {
$group->text(
x => 10,
y => $new_y + 40 + ( 30 * $n ),
style => { 'font-size' => 38 }
)->cdata($line);
$n++;
}
path($ROOT_PROJECT)->child('a.svg')->spew_utf8( $svg->xmlify );
return $svg->xmlify;
}
1;

View File

@ -0,0 +1,195 @@
package BurguillosInfo::Preview;
use v5.36.0;
use strict;
use warnings;
use feature 'signatures';
use SVG;
use Path::Tiny;
use Const::Fast;
use Capture::Tiny qw/capture/;
use MIME::Base64;
const my $CURRENT_FILE => __FILE__;
const my $ROOT_PROJECT => path($CURRENT_FILE)->parent->parent->parent;
const my $PUBLIC_DIR => $ROOT_PROJECT->child('public');
const my $BURGUILLOS_LOGO => $PUBLIC_DIR->child('img/burguillos.webp');
const my $SVG_WIDTH => 1200;
const my $SVG_HEIGHT => 627;
const my $SVG_EMBEDDED_IMAGE_MAX_WIDTH => 1000;
const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200;
sub Generate($self, $title, $content, $image_file) {
my $dom = Mojo::DOM->new($content);
$content = $dom->all_text;
my $svg =
$self->_GenerateSVGPreview( $title, $self->_DivideTextContentInLines($content), $image_file );
return $self->_SVGToPNG($svg);
}
sub _ToPng($self, $image) {
if ($image =~ /\.\w+$/) {
my $new_image = $image =~ s/\.\w+$/.generated.png/r;
say $new_image;
if (!-e $new_image) {
system 'convert', "$image", "$new_image";
}
$image = $new_image;
}
return path($image);
}
sub _GenerateSVGPreviewHeaderBar($self, $svg, $group) {
$group->rect(
x => 0,
y => 0,
width => 1200,
height => 50,
style => { fill => 'blueviolet' }
);
$group->rect(
x => 0,
y => 50,
width => 1200,
height => 627,
style => { fill => '#F8F8FF' }
);
my $burguillos_logo_png = path($self->_ToPng($BURGUILLOS_LOGO));
say $burguillos_logo_png;
say ''.$burguillos_logo_png;
$group->image(
x => 10,
y => 5,
width => 40,
height => 40,
-href => 'data:image/png;base64,'
. encode_base64( $burguillos_logo_png->slurp )
);
$group->text(
x => 60,
y => 40,
style => { 'font-size' => 50, fill => '#f2eb8c' }
)->cdata('Burguillos.info');
}
sub _GenerateSVGPreview($self, $title, $content, $image_file) {
my @content = @$content;
my $svg = SVG->new( width => $SVG_WIDTH, height => $SVG_HEIGHT );
my $group = $svg->group(
id => 'group',
style => {
font => 'Arial',
'font-size' => 30,
}
);
$self->_GenerateSVGPreviewHeaderBar($svg, $group);
my $new_y;
if ( defined $image_file ) {
$new_y = $self->_AttachImageSVG( $group, $image_file );
}
$new_y //= 100;
$group->text(
x => 10,
y => $new_y,
style => { 'font-size' => 50 }
)->cdata($title);
my $n = 0;
for my $line (@content) {
$group->text(
x => 10,
y => $new_y + 40 + ( 30 * $n ),
style => { 'font-size' => 38 }
)->cdata($line);
$n++;
}
return $svg->xmlify;
}
sub _SVGToPNG($self, $svg) {
my ( $stdout, $stderr ) = capture {
open my $fh, '|-', qw{convert /dev/stdin png:fd:1};
binmode $fh, 'utf8';
print $fh $svg;
close $fh;
};
say STDERR $stderr;
return $stdout;
}
sub _DivideTextContentInLines($self, $content) {
my @content_divided_in_lines = split /\n/, $content;
my @new_content;
my $n_chars_per_line = 70;
for my $line (@content_divided_in_lines) {
if ( length($line) <= $n_chars_per_line ) {
push @new_content, $line;
next;
}
my $last_word = '';
while ( $line =~ /(.{1,${n_chars_per_line}})/g ) {
my $new_line = $last_word . $1;
$new_line =~ s/(\S*)$//;
$last_word = $1;
push @new_content, $new_line;
}
if ($last_word) {
$new_content[$#new_content] .= $last_word;
}
}
return \@new_content;
}
sub _AttachImageSVG($self, $svg, $image_file) {
$image_file = $PUBLIC_DIR->child( './' . $image_file );
$image_file = path($self->_ToPng($image_file));
my ( $stdout, $stderr, $error ) = capture {
system qw/identify -format "%wx%h"/, $image_file;
};
if ($error) {
warn "$image_file not recognized by identify.";
return;
}
my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/;
if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) {
$width /= $height / $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
$width = int($width);
$height = $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
}
if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) {
$height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
$height = int($height);
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
}
my $x = int( ( $SVG_WIDTH / 2 ) - ( $width / 2 ) );
my $y = 90;
my ($output) = capture {
system qw/file --mime-type/, $image_file;
};
my ($format) = $output =~ /(\S+)$/;
$svg->image(
x => $x,
y => $y,
width => $width,
height => $height,
-href => "data:$format;base64," . encode_base64( $image_file->slurp )
);
return $y + $height + 50;
}
1;

View File

@ -5,6 +5,8 @@ use v5.34.1;
use strict;
use warnings;
use feature 'signatures';
use JSON;
use Const::Fast;
@ -17,7 +19,6 @@ SELECT COUNT(DISTINCT (remote_address, user_agent))
FROM requests
EOF
sub new {
my $class = shift;
$app = shift;
@ -25,81 +26,165 @@ sub new {
return bless {}, $class;
}
sub _add_path ( $self, $url ) {
my $dbh = BurguillosInfo::DB->connect($app);
$dbh->do( <<'EOF', undef, $url );
INSERT INTO paths (path) VALUES($1)
ON CONFLICT (path) DO
UPDATE SET last_seen = NOW() where paths.path = $1;
EOF
}
sub _update_null_last_seen_paths_if_any ($self) {
my $dbh = BurguillosInfo::DB->connect($app);
$dbh->do( <<'EOF', undef );
UPDATE paths
SET last_seen = requests_for_path.last_date
FROM (
SELECT requests.path, max(requests.date) as last_date
FROM requests
GROUP BY requests.path
) requests_for_path
WHERE paths.last_seen IS NULL AND requests_for_path.path = paths.path;
EOF
}
sub _register_request_query ( $self, $remote_address, $user_agent,
$params_json, $path, $referer )
{
my $dbh = BurguillosInfo::DB->connect($app);
$dbh->do(
<<'EOF', undef, $remote_address, $user_agent, $params_json, $path, $referer );
INSERT INTO requests(remote_address, user_agent, params, path, referer)
VALUES (?, ?, ?, ?, ?);
EOF
}
sub register_request {
my $self = shift;
my $c = shift;
my $path = $c->req->url->path;
my $dbh = BurguillosInfo::DB->connect($app);
$dbh->do( <<'EOF', undef, $c->req->url->path );
INSERT INTO paths (path) VALUES (?) ON CONFLICT DO NOTHING;
EOF
my $dbh = BurguillosInfo::DB->connect($app);
$self->_add_path($path);
$self->_update_null_last_seen_paths_if_any();
my $remote_address = $c->tx->remote_address;
my $user_agent = $c->req->headers->user_agent;
my $referer = $c->req->headers->referer // '';
my $params_json = encode_json( $c->req->params->to_hash );
$dbh->do(
<<'EOF', undef, $remote_address, $user_agent, $params_json, $path );
INSERT INTO requests(remote_address, user_agent, params, path)
VALUES (?, ?, ?, ?);
EOF
say "Registered $remote_address with user agent $user_agent visited $path with $params_json";
$self->_register_request_query( $remote_address, $user_agent, $params_json,
$path, $referer );
say
"Registered $remote_address with user agent $user_agent visited $path with $params_json";
}
sub get_global_data {
my $self = shift;
my $c = shift;
my $app = $c->app;
my $dbh = BurguillosInfo::DB->connect($app);
my $data = $dbh->selectrow_hashref(<<"EOF", undef);
sub get_global_data {
my $self = shift;
my $c = shift;
my $app = $c->app;
my $dbh = BurguillosInfo::DB->connect($app);
my $data = $dbh->selectrow_hashref( <<"EOF", undef );
SELECT
(
$SELECT_GLOBAL
) as unique_ips,
(
$SELECT_GLOBAL
where date > NOW() - interval '1 day'
) as unique_ips_last_24_hours,
(
$SELECT_GLOBAL
where date > NOW() - interval '1 week'
) as unique_ips_last_week,
(
$SELECT_GLOBAL
where date > NOW() - interval '1 month'
) as unique_ips_last_month;
(
$SELECT_GLOBAL
where date > NOW() - interval '1 day'
) as unique_ips_last_24_hours,
(
$SELECT_GLOBAL
where date > NOW() - interval '1 week'
) as unique_ips_last_week,
(
$SELECT_GLOBAL
where date > NOW() - interval '1 month'
) as unique_ips_last_month;
EOF
return $data;
}
return $data;
}
sub get_data_for_urls {
my $self = shift;
my $c = shift;
my $app = $c->app;
my $dbh = BurguillosInfo::DB->connect($app);
my $data = $dbh->selectall_arrayref(<<"EOF", {Slice => {}});
my $GOOGLE_REFERER_REGEX = "'^https?://(?:www\\.)?google\\.\\w'";
my $GOOGLE_SELECT = "$SELECT_GLOBAL
where requests.path = paths.path
and requests.referer IS NOT NULL
and requests.referer ~* $GOOGLE_REFERER_REGEX
and date > NOW()";
sub get_google_data {
my $self = shift;
my $c = shift;
my $app = $c->app;
my $dbh = BurguillosInfo::DB->connect($app);
my $data = $dbh->selectall_arrayref(<<"EOF", { Slice => {} } );
SELECT paths.path,
(
$GOOGLE_SELECT - interval '1 hour'
) as unique_ips_last_1_hour,
(
$GOOGLE_SELECT - interval '3 hour'
) as unique_ips_last_3_hours,
(
$GOOGLE_SELECT - interval '6 hour'
) as unique_ips_last_6_hours,
(
$GOOGLE_SELECT - interval '12 hour'
) as unique_ips_last_12_hours,
(
$GOOGLE_SELECT - interval '1 day'
) as unique_ips_last_24_hours,
(
$GOOGLE_SELECT - interval '1 week'
) as unique_ips_last_week,
(
$GOOGLE_SELECT - interval '1 month'
) as unique_ips_last_month
FROM paths right join requests on paths.path = requests.path
WHERE paths.last_seen > NOW() - INTERVAL '1 month'
and requests.referer ~* $GOOGLE_REFERER_REGEX
and requests.date > NOW() - INTERVAL '1 month'
GROUP BY
paths.path;
EOF
return $data;
}
sub get_data_for_urls {
my $self = shift;
my $c = shift;
my $app = $c->app;
my $dbh = BurguillosInfo::DB->connect($app);
my $data = $dbh->selectall_arrayref( <<"EOF", { Slice => {} } );
SELECT paths.path,
(
$SELECT_GLOBAL
where requests.path = paths.path
) as unique_ips,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 day'
) as unique_ips_last_24_hours,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 week'
) as unique_ips_last_week,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 month'
) as unique_ips_last_month
FROM paths;
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 hour'
) as unique_ips_last_1_hour,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '3 hour'
) as unique_ips_last_3_hours,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '6 hour'
) as unique_ips_last_6_hours,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '12 hour'
) as unique_ips_last_12_hours,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 day'
) as unique_ips_last_24_hours,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 week'
) as unique_ips_last_week,
(
$SELECT_GLOBAL
where requests.path = paths.path and date > NOW() - interval '1 month'
) as unique_ips_last_month
FROM paths
WHERE paths.last_seen > NOW() - INTERVAL '1 month';
EOF
return $data;
return $data;
}
1;

23
package.json Normal file
View File

@ -0,0 +1,23 @@
{
"name": "BurguillosInfo",
"version": "0.1.1",
"description": "",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "AGPL-v3",
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"eslint": "^8.40.0",
"eslint-plugin-no-relative-import-paths": "^1.5.2",
"typescript": "^5.0.4",
"webpack-cli": "^5.0.2"
},
"dependencies": {
"tablesort": "^5.3.0"
}
}

242
public/css/styles.css Normal file
View File

@ -0,0 +1,242 @@
html {
height: 100%; }
body {
margin: 0;
padding: 0;
overflow: hidden;
min-height: 100%;
width: 100%;
height: 100%; }
body p, body h1, body h2, body h3, body h4, body a {
font-family: 'arial'; }
body div.site-wrapper {
display: table;
width: 100%;
height: 100%;
/* For at least Firefox */
min-height: 100%;
color: #2f4f4f;
background: url(../img/parque_patos.webp);
filter: blur(10px);
background-size: cover;
overflow: hidden; }
body div.page-contents {
position: absolute;
position: fixed;
overflow-y: scroll;
z-index: 2;
background: #FEFEFA;
color: #666362;
top: 0%;
left: 0%;
height: 100%;
width: 100%; }
body div.page-contents div.child-categories-mobile a {
padding-left: 2.5rem; }
body div.page-contents img {
max-width: 100%;
margin-left: auto;
margin-right: auto;
display: block; }
body div.page-contents table {
color: blueviolet;
background: #f2eb8c;
border: 3px solid blueviolet;
border-collapse: collapse;
width: 100%;
table-layout: fixed; }
body div.page-contents table td, body div.page-contents table th {
font-size: 12px; }
body div.page-contents th, body div.page-contents td {
border: 3px solid blueviolet;
border-collapse: collapse;
padding-right: 10px;
margin: 0; }
body div.page-contents div.description {
margin-top: 60px;
word-wrap: break-word;
padding: 1%;
margin-left: 3%;
margin-right: 3%;
margin-bottom: 1%; }
body div.page-contents div.description input {
display: block; }
body div.page-contents div.description div.suscribirse-rss img {
max-height: 300px; }
body div.page-contents div.description div.articles {
display: flex;
flex-direction: row;
flex-wrap: wrap; }
body div.page-contents div.description div.articles div.image-container {
margin-left: 2.5%;
margin-top: 10px;
height: 95%;
width: 95%;
display: flex;
min-height: 130px;
justify-content: center;
align-items: center; }
body div.page-contents div.description div.articles div.image-container img {
max-height: 100%;
max-width: 100%;
min-width: 277px;
border: solid 1px black; }
body div.page-contents div.description div.articles a {
min-height: 90%;
width: 100%;
display: block;
text-decoration: none;
text-overflow: ellipsis;
margin-bottom: 30px; }
body div.page-contents div.description div.articles a article {
word-wrap: break-word;
width: 90%;
height: 90%;
padding: 5%;
padding-top: 1%;
background: #f2eb8c;
color: blueviolet;
box-shadow: 8px 8px 1px 0px #8ddfd6;
border: 3px solid black; }
body div.page-contents div.description div.articles a article p, body div.page-contents div.description div.articles a article h4, body div.page-contents div.description div.articles a article h3, body div.page-contents div.description div.articles a article h2 {
margin: 0px; }
body div.page-contents div.description div.articles a article p {
font-size: 0.9rem; }
body div.page-contents div.description div.articles a article div.article-up-part {
height: 12em; }
body div.page-contents div.description div.articles a article div.article-down-part {
margin-top: 2em;
height: 9em;
display: flex;
align-items: end;
padding-bottom: 2em; }
body div.page-contents div.description div.articles a article:hover {
background: blueviolet;
color: #f2eb8c; }
body div.page-contents div.description div.articles a article p.date {
text-align: right; }
body div.page-contents div.description div.articles a article p.author {
text-align: right; }
body div.page-contents div.description a.suscribe-category-rss {
background: blueviolet;
width: 40px;
height: 40px;
padding: 10px;
border-radius: 5px;
display: inline-block; }
body div.page-contents div.description a.suscribe-category-rss img {
width: 40px;
height: 40px; }
body div.page-contents nav > a.menu-expand > img {
width: 30px;
height: 30px;
padding-top: 15px; }
body div.page-contents nav > a > img.index-image-menu {
vertical-align: middle;
width: 50px;
height: 50px;
padding-bottom: 10px; }
body div.page-contents nav.desktop {
display: none; }
body div.page-contents nav.desktop a {
vertical-align: middle;
background: blueviolet; }
body div.page-contents nav {
overflow: auto;
display: block;
font-size: 25px;
margin: 0px; }
body div.page-contents nav a.go-to-index img {
margin-top: 5%; }
body div.page-contents nav a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: #f2eb8c;
margin: 0; }
body div.page-contents nav a:hover {
background: #f2eb8c;
color: blueviolet; }
body div.page-contents nav a.selected {
background: #f2eb8c;
color: blueviolet; }
body div.page-contents nav a.menu-expand {
padding-bottom: 9px; }
body div.page-contents nav a.menu-expand .open-menu-icon-hover {
display: none; }
body div.page-contents nav a.menu-expand:hover .open-menu-icon-hover {
display: block; }
body div.page-contents nav a.menu-expand:hover .open-menu-icon {
display: none; }
body div.page-contents nav.mobile-shortcuts {
position: fixed;
display: flex;
width: 100%;
background: blueviolet;
height: 60px; }
body div.page-contents nav.mobile-shortcuts a {
height: 100%;
width: 16.66667%; }
body div.page-contents nav.mobile-shortcuts div {
width: 66.66667%; }
body div.page-contents nav.mobile-foldable {
display: none;
background: blueviolet;
color: #f2eb8c; }
body div.page-contents nav.mobile-foldable a {
display: block; }
body div.page-contents nav.mobile-foldable.show {
display: block; }
body div.page-contents h1 {
text-align: center; }
body div.page-contents div.footer p, body div.page-contents div.footer h1, body div.page-contents div.footer h2, body div.page-contents div.footer h3, body div.page-contents div.footer h4, body div.page-contents div.footer a {
font-size: initial; }
body div.page-contents div.footer a.suscribe-category-rss {
padding: 7px; }
body div.page-contents div.footer a.suscribe-category-rss, body div.page-contents div.footer a.suscribe-category-rss > img {
width: 20px;
height: 20px; }
@media (min-width: 450px) {
body div.page-contents table th, body div.page-contents table td {
font-size: 20px; } }
@media (min-width: 694px) {
body div.page-contents div.description div.articles a {
width: 45%;
margin-left: 5%; }
body div.page-contents div.description div.articles a:nth-child(2n+1) {
margin-left: 0%; } }
@media (min-width: 1100px) {
body div.page-contents {
top: 0%;
left: 5%;
height: 100%;
width: 90%; }
body div.page-contents nav.mobile-foldable, body div.page-contents nav.mobile-foldable.show {
display: none; }
body div.page-contents div.description {
margin-left: 10%;
margin-right: 10%; }
body div.page-contents nav.desktop {
display: block;
height: auto; }
body div.page-contents nav.desktop a {
display: table-cell; }
body div.page-contents nav.desktop a img.index-image-menu {
padding-top: 15px; }
body div.page-contents nav.mobile-shortcuts {
display: none; } }
@media (min-width: 1333px) {
body div.page-contents div.description div.articles a {
width: 30%;
margin-left: 3%; }
body div.page-contents div.description div.articles a:nth-child(2n+1) {
margin-left: 3%; }
body div.page-contents div.description div.articles a:nth-child(3n+1) {
margin-left: 0%; } }

View File

@ -1,4 +1,4 @@
$background: url(../img/parque_patos.jpg);
$background: url(../img/parque_patos.webp);
$background-page: #FEFEFA;
$color: #2f4f4f;
$color-page: #666362;
@ -10,297 +10,400 @@ $accent-secondary: #fde68f;
$primary-secondary: #590e11;
html {
height: 100%;
height: 100%;
}
body {
p,h1,h2,h3,h4,a {
font-family: 'arial';
}
margin: 0;
padding: 0;
overflow: hidden;
min-height: 100%;
width: 100%;
height: 100%;
div.site-wrapper {
display: table;
width: 100%;
height: 100%; /* For at least Firefox */
min-height: 100%;
color: $color;
background: $background;
filter: blur(10px);
background-size: cover;
overflow: hidden;
}
div.page-contents {
position: absolute;
position: fixed;
overflow-y: scroll;
z-index: 2;
background: $background-page;
color: $color-page;
top: 0%;
left: 0%;
height: 100%;
width: 100%;
img {
max-width: 100%;
margin-left: auto;
margin-right: auto;
display: block;
}
table {
color: $background_div;
background: $color_div;
border: 3px solid $background_div;
border-collapse: collapse;
}
th,td {
border: 3px solid $background_div;
border-collapse: collapse;
padding-right: 10px;
margin: 0;
}
th,td {
font-size: 15px;
}
b,p,li {
font-size: 40px;
}
h3 {
font-size: 47px;
}
h2 {
font-size: 53px;
}
h1 {
font-size: 60px;
}
div.description {
input {
display: block;
}
word-wrap: break-word;
div.suscribirse-rss {
img {
max-height: 300px;
}
}
padding: 1%;
margin-left: 3%;
margin-right: 3%;
margin-bottom: 1%;
margin-top: 10%;
div.articles {
display: flex;
flex-direction: row;
flex-wrap: wrap;
a {
width: 100%;
display:block;
text-decoration: none;
text-overflow: ellipsis;
margin-bottom: 10px;
article {
word-wrap: break-word;
width: 90%;
p,h4,h3,h2 {
margin: 0px;
}
b,p {
font-size: 38px;
}
h4 {
font-size: 44px;
}
h3 {
font-size: 47px;
}
h2 {
font-size: 53px;
}
h1 {
font-size: 60px;
}
padding: 5%;;
padding-top: 1%;
background: $color_div;
color: $background_div;
box-shadow: 8px 8px 1px 0px #8ddfd6;
border: 3px solid black;
&:hover {
background: $background_div;
color: $color_div;
}
p.date {
font-size: 20px;
text-align: right;
}
p.author {
font-size: 30px;
text-align: right;
}
}
}
}
a.suscribe-category-rss {
background: $background_div;
width: 40px;
height: 40px;
padding: 10px;
border-radius: 5px;
display: inline-block;
img {
width: 40px;
height: 40px;
}
}
}
nav > a > img.open-menu-icon {
width: 30px;
height: 30px;
padding-top: 15px;
}
nav > a > img.index-image-menu {
vertical-align: middle;
width: 50px;
height: 50px;
padding-bottom: 10px;
}
nav.desktop {
display: none;
a {
vertical-align: middle;
background: $background_div;
}
}
nav {
overflow: auto;
display: block;
font-size: 35px;
margin: 0px;
a.go-to-index img {
margin-top: 5%;
}
a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: $color_div;
margin: 0;
&:hover {
background: $color_div;
color: $background_div;
}
&.selected {
background: $color_div;
color: $background_div;
}
}
a.menu-expand {
padding-bottom: 9px;
}
}
p, h1, h2, h3, h4, a {
font-family: 'arial';
}
nav.mobile-shortcuts {
position: fixed;
display: flex;
width: 100%;
background: $background_div;
height: 60px;
a {
height: 100%;
width: (100% / 6);
}
div {
width: (100% * 4 / 6);
}
}
nav.mobile-foldable {
display: none;
background: $background_div;
color: $color_div;
a {
//background: $color_div;
//color: $background_div;
display: block;
}
}
nav.mobile-foldable.show {
display: block;
}
margin: 0;
padding: 0;
overflow: hidden;
min-height: 100%;
width: 100%;
height: 100%;
h1 {
text-align: center;
font-size: 50px;
}
div.footer {
p,h1,h2,h3,h4,a {
font-size: initial;
}
a.suscribe-category-rss {
padding: 7px;
}
a.suscribe-category-rss,a.suscribe-category-rss > img {
width: 20px;
height: 20px;
}
}
}
div.site-wrapper {
display: table;
width: 100%;
height: 100%;
/* For at least Firefox */
min-height: 100%;
color: $color;
background: $background;
filter: blur(10px);
background-size: cover;
overflow: hidden;
}
div.page-contents {
position: absolute;
position: fixed;
overflow-y: scroll;
z-index: 2;
background: $background-page;
color: $color-page;
top: 0%;
left: 0%;
height: 100%;
div.child-categories-mobile a {
padding-left: 2.5rem;
}
width: 100%;
img {
max-width: 100%;
margin-left: auto;
margin-right: auto;
display: block;
}
table {
color: $background_div;
background: $color_div;
border: 3px solid $background_div;
border-collapse: collapse;
width: 100%;
td, th {
font-size: 12px;
}
table-layout: fixed;
}
th, td {
border: 3px solid $background_div;
border-collapse: collapse;
padding-right: 10px;
margin: 0;
}
div.description {
margin-top: 60px;
input {
display: block;
}
word-wrap: break-word;
div.suscribirse-rss {
img {
max-height: 300px;
}
}
padding: 1%;
margin-left: 3%;
margin-right: 3%;
margin-bottom: 1%;
div.articles {
display: flex;
flex-direction: row;
flex-wrap: wrap;
div.image-container {
margin-left: 2.5%;
margin-top: 10px;
height: 95%;
width: 95%;
display: flex;
min-height: 130px;
justify-content: center;
align-items: center;
img {
max-height: 100%;
max-width: 100%;
min-width: 277px;
border: solid 1px black;
}
}
a {
min-height: 90%;
width: 100%;
display: block;
text-decoration: none;
text-overflow: ellipsis;
margin-bottom: 30px;
article {
word-wrap: break-word;
width: 90%;
height: 90%;
p, h4, h3, h2 {
margin: 0px;
}
p {
font-size: 0.9rem;
}
div.article-up-part {
height: 12em;
}
div.article-down-part {
margin-top: 2em;
height: 9em;
display: flex;
align-items: end;
padding-bottom: 2em;
}
padding: 5%;
padding-top: 1%;
background: $color_div;
color: $background_div;
box-shadow: 8px 8px 1px 0px #8ddfd6;
border: 3px solid black;
&:hover {
background: $background_div;
color: $color_div;
}
p.date {
text-align: right;
}
p.author {
text-align: right;
}
}
}
}
a.suscribe-category-rss {
background: $background_div;
width: 40px;
height: 40px;
padding: 10px;
border-radius: 5px;
display: inline-block;
img {
width: 40px;
height: 40px;
}
}
}
nav > a.menu-expand > img {
width: 30px;
height: 30px;
padding-top: 15px;
}
nav > a > img.index-image-menu {
vertical-align: middle;
width: 50px;
height: 50px;
padding-bottom: 10px;
}
nav.desktop {
display: none;
a {
vertical-align: middle;
background: $background_div;
}
}
nav {
overflow: auto;
display: block;
font-size: 25px;
margin: 0px;
a.go-to-index img {
margin-top: 5%;
}
a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: $color_div;
margin: 0;
&:hover {
background: $color_div;
color: $background_div;
}
&.selected {
background: $color_div;
color: $background_div;
}
}
a.menu-expand {
padding-bottom: 9px;
.open-menu-icon-hover {
display: none;
}
&:hover {
.open-menu-icon-hover {
display: block;
}
.open-menu-icon {
display: none;
}
}
}
}
nav.mobile-shortcuts {
position: fixed;
display: flex;
width: 100%;
background: $background_div;
height: 60px;
a {
height: 100%;
width: (100% / 6);
}
div {
width: 100% * 4 / 6;
}
}
nav.mobile-foldable {
display: none;
background: $background_div;
color: $color_div;
a {
//background: $color_div;
//color: $background_div;
display: block;
}
}
nav.mobile-foldable.show {
display: block;
}
h1 {
text-align: center;
}
div.footer {
p, h1, h2, h3, h4, a {
font-size: initial;
}
a.suscribe-category-rss {
padding: 7px;
}
a.suscribe-category-rss, a.suscribe-category-rss > img {
width: 20px;
height: 20px;
}
}
}
}
@media (min-width: 450px) {
body {
div.page-contents {
table {
th, td {
font-size: 20px;
}
}
}
}
}
@media (min-width: 694px) {
body {
div.page-contents {
div.description {
div.articles {
a {
&:nth-child(2n+1) {
margin-left: 0%;
}
width: 45%;
margin-left: 5%;
}
}
}
}
}
}
@media (min-width: 1100px) {
body {
div.page-contents {
th,td {
font-size: 40px;
}
nav.mobile-foldable,nav.mobile-foldable.show {
display: none;
}
div.description {
margin-left: 10%;
margin-right: 10%;
margin-top: auto;
}
nav.desktop {
display: block;
height: auto;
a {
display: table-cell;
img.index-image-menu {
padding-top: 15px;
}
}
}
nav.mobile-shortcuts {
display: none;
}
top: 2%;
left: 5%;
height: 96%;
width: 90%;
}
}
body {
div.page-contents {
nav.mobile-foldable, nav.mobile-foldable.show {
display: none;
}
div.description {
margin-left: 10%;
margin-right: 10%;
}
nav.desktop {
display: block;
height: auto;
a {
display: table-cell;
img.index-image-menu {
padding-top: 15px;
}
}
}
nav.mobile-shortcuts {
display: none;
}
top: 0%;
left: 5%;
height: 100%;
width: 90%;
}
}
}
@media (min-width: 1222px) {
body {
div.page-contents {
div.description {
margin-top: auto;
div.articles {
a {
width: 45%;
margin-left: 5%;
}
}
}
}
}
@media (min-width: 1333px) {
body {
div.page-contents {
div.description {
div.articles {
a {
&:nth-child(2n+1) {
margin-left: 3%;
}
&:nth-child(3n+1) {
margin-left: 0%;
}
width: 30%;
margin-left: 3%;
}
}
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

BIN
public/img/autobus.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
public/img/beluche.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
public/img/bocaton-1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
public/img/bocaton-2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
public/img/bocaton-3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
public/img/bocaton-4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/burguillos.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

BIN
public/img/cristobal.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
public/img/diaspora.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
public/img/duran.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

BIN
public/img/feminismo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
public/img/genuino.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
public/img/mairami-1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
public/img/mairami-2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Some files were not shown because too many files have changed in this diff Show More