feat: 美化文章界面 #3
|
@ -12,6 +12,8 @@ public class BlogEssay : IComparable<BlogEssay>
|
|||
|
||||
public required uint WordCount { get; init; }
|
||||
|
||||
public required string ReadTime { get; init; }
|
||||
|
||||
public List<string> Tags { get; } = [];
|
||||
|
||||
public required string HtmlContent { get; init; }
|
||||
|
@ -25,6 +27,7 @@ public class BlogEssay : IComparable<BlogEssay>
|
|||
PublishTime = PublishTime,
|
||||
Description = Description,
|
||||
WordCount = WordCount,
|
||||
ReadTime = ReadTime,
|
||||
HtmlContent = newHtmlContent
|
||||
};
|
||||
essay.Tags.AddRange(Tags);
|
||||
|
|
|
@ -12,7 +12,8 @@ using YamlDotNet.Serialization;
|
|||
|
||||
namespace YaeBlog.Core.Services;
|
||||
|
||||
public partial class RendererService(ILogger<RendererService> logger,
|
||||
public partial class RendererService(
|
||||
ILogger<RendererService> logger,
|
||||
EssayScanService essayScanService,
|
||||
MarkdownPipeline markdownPipeline,
|
||||
IDeserializer yamlDeserializer,
|
||||
|
@ -38,12 +39,14 @@ public partial class RendererService(ILogger<RendererService> logger,
|
|||
foreach (BlogContent content in preProcessedContents)
|
||||
{
|
||||
MarkdownMetadata? metadata = TryParseMetadata(content);
|
||||
uint wordCount = GetWordCount(content);
|
||||
BlogEssay essay = new()
|
||||
{
|
||||
Title = metadata?.Title ?? content.FileName,
|
||||
FileName = content.FileName,
|
||||
Description = GetDescription(content),
|
||||
WordCount = GetWordCount(content),
|
||||
WordCount = wordCount,
|
||||
ReadTime = CalculateReadTime(wordCount),
|
||||
PublishTime = metadata?.Date ?? DateTime.Now,
|
||||
HtmlContent = content.FileContent
|
||||
};
|
||||
|
@ -52,6 +55,7 @@ public partial class RendererService(ILogger<RendererService> logger,
|
|||
{
|
||||
essay.Tags.AddRange(metadata.Tags);
|
||||
}
|
||||
|
||||
essays.Add(essay);
|
||||
}
|
||||
});
|
||||
|
@ -229,4 +233,13 @@ public partial class RendererService(ILogger<RendererService> logger,
|
|||
count);
|
||||
return count;
|
||||
}
|
||||
|
||||
private static string CalculateReadTime(uint wordCount)
|
||||
{
|
||||
// 据说语文教学大纲规定,中国高中问阅读现代文的速度是600字每分钟
|
||||
int second = (int)wordCount / 10;
|
||||
TimeSpan span = new TimeSpan(0, 0, second);
|
||||
|
||||
return span.ToString("mm'分 'ss'秒'");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<div class="row px-4 py-1">
|
||||
<div class="col-auto fw-light">
|
||||
总字数:@(_essay!.WordCount)字。
|
||||
总字数:@(_essay!.WordCount)字,预计阅读时间 @(_essay!.ReadTime)。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user