Leaving programmed a post for today just to test programmed posts.

This commit is contained in:
sergiotarxz 2022-11-14 02:07:13 +01:00
parent 5a1fb097c5
commit 49cedaa5fc
7 changed files with 73 additions and 17 deletions

View File

@ -2,6 +2,7 @@
<title>Comercios de Burguillos.</title> <title>Comercios de Burguillos.</title>
<description> <description>
<p>Aquí puedes encontrar información acerca de los comercios de Burguillos.</p> <p>Aquí puedes encontrar información acerca de los comercios de Burguillos.</p>
<p>¿Quieres que tu comercio aparezca aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a></p>
</description> </description>
<priority>2</priority> <priority>2</priority>
<menu_text>Comercios</menu_text> <menu_text>Comercios</menu_text>

View File

@ -6,7 +6,7 @@
<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 aquí.</p>
</description> </description>
<priority>3</priority> <priority>999</priority>
<menu_text>Esta página</menu_text> <menu_text>Esta página</menu_text>
<slug>esta-pagina</slug> <slug>esta-pagina</slug>
</category> </category>

View File

@ -0,0 +1,10 @@
<category>
<title>Talleres en Burguillos.</title>
<description>
<p>Aquí puedes encontrar información acerca de los talleres y actividades disponibles en Burguillos.</p>
<p>¿Quieres que tu taller o actividad aparezca aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a></p>
</description>
<priority>3</priority>
<menu_text>Talleres</menu_text>
<slug>talleres</slug>
</category>

View File

@ -0,0 +1,25 @@
<post>
<author>Burguillos.info</author>
<date>2022-11-14T12:00+00:00</date>
<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"/>
<slug>ultimas-plazas-taller-de-macrame</slug>
<content>
<img alt="Poster del taller" src="/img/poster-macrame.png"/>
<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>
<p>Los materiales vienen incluidos con el precio de la plaza.</p>
<p>Si os preguntáis.-¿Qué es el Macramé?.- No os angustieis que yo os lo cuento.</p>
<p>Según Wikipedia, el Macramé es la técnica de crear tejidos mediante el uso de nudos decorativos.</p>
<p>Usando Macramé puedes crear regalos preciosos para tus familiares o amigos; o incluso quedarte tú con tu obra para exponerla, en el cartel se puede apreciar algunas de las cosas que se pueden realizar mediante el uso de Macramé.</p>
<p>Si quieres pasar un buen rato y divertirte con este peculiar estilo de artesanía no dudes en contactar con <a href="tel:+34611489981">611 489 981</a>, no esperes hasta el último momento ya que las plazas son limitadas.</p>
</content>
</post>

View File

@ -12,6 +12,7 @@ use Const::Fast;
use Mojo::DOM; use Mojo::DOM;
use Path::Tiny; use Path::Tiny;
use DateTime::Format::ISO8601; use DateTime::Format::ISO8601;
use DateTime;
use SVG; use SVG;
use Capture::Tiny qw/capture/; use Capture::Tiny qw/capture/;
@ -25,8 +26,6 @@ const my $SVG_HEIGHT => 627;
const my $SVG_EMBEDDED_IMAGE_MAX_WIDTH => 1000; const my $SVG_EMBEDDED_IMAGE_MAX_WIDTH => 1000;
const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200; const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200;
my $iso8601 = DateTime::Format::ISO8601->new;
my $cached_posts_by_category; my $cached_posts_by_category;
my $cached_posts_by_slug; my $cached_posts_by_slug;
@ -34,9 +33,30 @@ sub new {
return bless {}, shift; return bless {}, shift;
} }
sub _ReturnCacheFilter {
my $self = shift;
my %posts_by_category_filtered;
my %posts_by_slug_filtered;
my $iso8601 = DateTime::Format::ISO8601->new;
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} );
if ( $date_post > $current_date ) {
next;
}
$posts_by_slug_filtered{ $post->{slug} } = $post;
$posts_by_category_filtered{ $post->{category} } //= [];
push @{ $posts_by_category_filtered{ $post->{category} } }, $post;
}
}
return (\%posts_by_category_filtered, \%posts_by_slug_filtered);
}
sub Retrieve { sub Retrieve {
my $self = shift;
if ( defined $cached_posts_by_category && defined $cached_posts_by_slug ) { if ( defined $cached_posts_by_category && defined $cached_posts_by_slug ) {
return ( $cached_posts_by_category, $cached_posts_by_slug ); return $self->_ReturnCacheFilter;
} }
$cached_posts_by_category = {}; $cached_posts_by_category = {};
$cached_posts_by_slug = {}; $cached_posts_by_slug = {};
@ -59,10 +79,11 @@ sub Retrieve {
my $content = $dom->at(':root > content')->content my $content = $dom->at(':root > content')->content
or die "Missing content at $post_file."; or die "Missing content at $post_file.";
my $image_element = $dom->at(':root > img'); my $image_element = $dom->at(':root > img');
my $image; my $image;
if (defined $image_element) {
$image = $image_element->attr->{src}; if ( defined $image_element ) {
} $image = $image_element->attr->{src};
}
my $post = { my $post = {
title => $title, title => $title,
@ -79,7 +100,7 @@ sub Retrieve {
$cached_posts_by_slug->{$slug} = $post; $cached_posts_by_slug->{$slug} = $post;
push @$category_posts, $post; push @$category_posts, $post;
} }
return ( $cached_posts_by_category, $cached_posts_by_slug ); return $self->_ReturnCacheFilter;
} }
sub PostPreviewOg { sub PostPreviewOg {
@ -137,20 +158,20 @@ sub _AttachImageSVG {
my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/; my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/;
if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) { if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) {
$width /= $height / $SVG_EMBEDDED_IMAGE_MAX_HEIGHT; $width /= $height / $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
$width = int($width); $width = int($width);
$height = $SVG_EMBEDDED_IMAGE_MAX_HEIGHT; $height = $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
} }
if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) { if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) {
$height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH; $height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
$height = int($height); $height = int($height);
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH; $width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
} }
my $x = int(($SVG_WIDTH/2) - ($width / 2)); my $x = int( ( $SVG_WIDTH / 2 ) - ( $width / 2 ) );
my $y = 90; my $y = 90;
my ($output) = capture { my ($output) = capture {
system qw/file --mime-type/, $image; system qw/file --mime-type/, $image;
}; };
my ($format) = $output =~ /(\S+)$/; my ($format) = $output =~ /(\S+)$/;
$svg->image( $svg->image(
@ -158,8 +179,7 @@ sub _AttachImageSVG {
y => $y, y => $y,
width => $width, width => $width,
height => $height, height => $height,
-href => "data:$format;base64," -href => "data:$format;base64," . encode_base64( $image->slurp )
. encode_base64( $image->slurp )
); );
return $y + $height + 50; return $y + $height + 50;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB