从模板创建新帖子作为脚本的一部分

时间:2019-07-09 03:16:00

标签: r blogdown

我正尝试每周以编程方式创建新帖子。我想从一个模板创建一个Rmd文件,可以将参数传递给该文件,然后让blogdown::serve_site()正确呈现它。

我已经尝试过使用rmarkdown::render,并且基本上可以通过呈现HTML文件来使其执行我想要的操作。但是我想以某种方式将此纳入我的blogdown::serve_site()过程中。

这是我可以使用rmarkdown::render()进行操作的示例。

首先,如下创建模板Rmd文件。

author: James Day
params: 
  week: 1
  year: 2019

星期是r params$week,年份是r params$year

一些使用params处理数据的代码

library(dplyr)
data <- tibble(week = 1:52, 
               year = 2019,
               num = runif(52))

data_for_report <- data %>%
  filter(week >= params$week & year == params$year)

print(data_for_report)
# some other code.....

如果我将该文件另存为test.Rmd,则以下代码将使用提供的参数将其呈现为HTML。

render_blog_post = function(fname, week, year) {
  rmarkdown::render(
    fname,  
    params = list(week = week, year = year),
    output_file = paste0(year, "-week-", week, "-report.html"),
    output_options = list(pandoc_args = c(paste0("--metadata=title:\"Week ", week, " Report\""),
                                          paste0("--metadata=slug:\"", year, "-week-", week, "-report\"")
                                          )
                          )
    )
}


render_blog_post("test.Rmd",  week = 10, year = 2019)

这个HTML文件是我想要的,但是显然我希望它成为我创建新博客文章的工作流程的一部分。

我想知道如何使用类似的工作流使用Blogdown从模板创建Rmd?

基本上,我想在每周脚本中

  1. 从模板创建新的Rmd文件
  2. 使用我提供给函数的参数调整新创建的Rmd文件的YAML
  3. 将此.Rmd保存在我的Blogdown项目的./content/posts文件夹中
  4. 使用blogdown::serve_site()渲染Rmd文件

0 个答案:

没有答案