Esempio n. 1
0
        public async Task WriteAsync(Post post, PostConfig config)
        {
            Logger.Info($"Escrevendo o post {post.Title}...");
            Sanitize(post);

            var content  = GetPostContent(post, config);
            var postName = GetPostName(post);
            var date     = config.Date ?? post.Date;

            Logger.Debug($"Criando a pasta do post...");
            var postFolder = Path.Combine(_jekyllRootFolder, "_posts", date.Year.ToString());

            _fs.CreateDirectory(postFolder);

            Logger.Debug($"Escrevendo o arquivo do post...");
            var postFileName = Path.Combine(postFolder, $"{date.Year}-{date.Month:00}-{date.Day:00}-{postName}.md");

            _fs.WriteFile(postFileName, content);

            Logger.Debug($"Criando a pasta de imagens do post....");
            var imagesFolder = Path.Combine(_jekyllRootFolder, "assets", date.Year.ToString(), date.Month.ToString("00"), date.Day.ToString("00"), postName);

            _fs.CreateDirectory(imagesFolder);

            Logger.Debug($"Realizando o download das imagens e gravando na pasta...");
            foreach (var screenshot in post.Screenshots)
            {
                Logger.Debug($"Screenshot {screenshot}");
                var image = await _web.DownloadImageAsync(screenshot);

                if (image.Data.Length >= config.IgnoreImagesLowerThanBytes)
                {
                    var fileName = Path.Combine(imagesFolder, $"{Path.GetFileNameWithoutExtension(screenshot)}{image.Extension}");

                    Logger.Debug($"Gravando screenshot {fileName}...");
                    _fs.WriteFile(fileName, image.Data);
                }
                else
                {
                    Logger.Warn("Não será gravada, pois é menor que o tamanho mínimo esperado.");
                }
            }

            // Grava o logo.
            if (!String.IsNullOrEmpty(post.Logo))
            {
                var image = await _web.DownloadImageAsync(post.Logo);

                var fileName = Path.Combine(imagesFolder, $"logo{image.Extension}");

                Logger.Debug($"Gravando logo {fileName}...");
                _fs.WriteFile(fileName, image.Data);
            }
        }
Esempio n. 2
0
        private static string GetPostContent(Post post, PostConfig config)
        {
            var content = post.Content.Replace("\n", "\n\n");

            content = AddVideos(post.Videos, content);

            return($@"---
published: true
layout: post
title: '{GetPostTitle(post.Title)}'
author: '{config.Author}'
companies: '{String.Join(" ", post.Companies)}'
categories: {post.Category}
tags: {String.Join(" ", post.Tags)}
---
{content}");
        }