跳至主要內容

增加一个MarkDown文件下载功能

MonoLogueChi建站笔记大约 2 分钟

昨天给博客加了一个下载 MarkDown 文件的功能,原本是很简单的一件事,但是中间涉及到了很多麻烦东西,所以就决定简单记录以下。

起因

这件事的起因是前两天我写的一篇文章意外火了一遍,引来了一大波 PV,又有很多人转了这篇文章,还有人问我要 MarkDown 源文件。受到Jerry Qu 的小站open in new window的启发,决定做一个 MarkDown 文件下载的功能。

捋一下过程

Hexo 修改部分

本文介绍修改方法仅使用于 Yilia 主题,其他主题请参考原理,自行寻找食用方法

修改\layout_partial\post\nav.ejs,我找了好久才发现加在这里最合适,由于技术比较渣,暂时只能做到这样了,以后会继续进步的。

<% if (post.next){ %> … <% } %></nav>之间添加

<% if (theme.mdhost){ %>
    <br>
    <a href="<%- url_for(theme.mdhost) %><%- url_for(post.path) %>.txt" target="_blank">获取文章MarkDown文件</a>
  <% } %>

在 Yilia 主题的_config.yml中添加

mdhost: #MarkDown文件下载地址,如:http://md.xxwhite.com/

这样点击下面的按钮的时候,就会调到同名的 txt 文件了。

比如这篇文章,点击获取 MarkDown 文件,就会跳转到页面http://md.xxwhite.xom/2018/add-download-markdown.txt

MarkDown 文件

MarkDown 文件我是传到了网易云的对象存储服务中,如果要是把文件传到相同位置,那就更简单了(我接下来就是打算要这么做的,不闲着蛋疼去薅羊毛了)

首先是要把 MarKDown 文件转码为 ANSI,UTF-8 会乱码,不是自己搭的服务,请求头没办法改,接下来要改后缀为.txt,.md 默认 Content-Type 为 application/octet-stream,会自动变成下载。

我使用一个批处理自动化完成这个东西

cd D:\MonoLogueChi\Documents\Hexo\blog-md\
del /S /Q .\*

Xcopy /Y /S D:\MonoLogueChi\Documents\Hexo\blog\source\_posts\* D:\MonoLogueChi\Documents\Hexo\blog-md

for %%i in (*.md) do (
  iconv -f UTF-8 -t GBK %%i > %%i.b
  if exist %%i.b (
    del %%i
    ren %%i.b %%~nxi
  )
)
ren *.md *.txt

cd .\2017\
for %%i in (*.md) do (
  iconv -f UTF-8 -t GBK %%i > %%i.b
  if exist %%i.b (
    del %%i
    ren %%i.b %%~nxi
  )
)
ren *.md *.txt

cd ..\2018\
for %%i in (*.md) do (
  iconv -f UTF-8 -t GBK %%i > %%i.b
  if exist %%i.b (
    del %%i
    ren %%i.b %%~nxi
  )
)
ren *.md *.txt

cd /d %~dp0
pause

这个用到了 iconv.exe 这个东西,可以在这里下载 iconv.7zopen in new window

后面再加上自动上传就可以啦,很简单的一步式操作。

tool.bat -putfile D:\MonoLogueChi\Documents\Hexo\blog-md <你的桶名称> -replace true

写在后面的

目前技术比较渣,暂时只能写到这样了,如果有什么更好的想法发话,欢迎在下面的评论区一起讨论。