使用简单的Bash脚本将中型文章移植到个人博客中[指南]

尽管效果不错,但在Medium之外拥有自己的博客仍然不是一个坏主意。 它使您可以拥有另一个完全可以与读者交流的渠道。 谁知道,没有哪个公司可以永远持续下去,如果Medium被其他公司收购或者发生更糟的事情该怎么办。 知道您不会丢失所有文章,您仍然可以在晚上睡个好觉。

媒体是一个很好的发布平台。 它具有良好的曝光率,高质量的内容,对真正喜欢优质文章的读者以及简洁易用的用户界面。 对于刚刚开始他们的旅程的作家来说,这尤其棒。

我使用基于Python的静态网站生成器 Pelican构建了自己的 网站 。 我写了一篇文章解释整个过程。 对于每篇中型文章,我需要复制URL,运行一些命令以将其传输到Markdown文件中,然后使用Pelican生成博客站点。 它很简单,但不像我喜欢的那么简单。 因此,这是一些快速而肮脏的Bash脚本进行救援的绝佳机会。 让我们看看我们能做什么。

结构化脚本

在开始编写脚本之前,它有助于结构化我们想要完成的工作,使编写高质量代码变得更加容易。 基本上,我们需要:

手动将所有文章URL放入一个文本文件中(计划将来也可以使用某些抓取框架来自动化此部分)读取文件的每一行以及每一行提取标题和副标题使用标题和副标题创建元-Pelican将Markdown文件转换为post所需的数据。运行Pelican命令以生成静态网站。将该网站推送到GitHub并触发Netlify的auto-buildProfit。

让我们写代码

首先,定义我们的变量

#!/bin/bash 
# Define variables
filename= 'articles.txt'
n=1

循环结构读取文本文件的每一行:

# Read in file and do processing on each one
while read line; do 
    # reading each line
    n=$((n+1)) 
    slug=$( echo $line | sed 's/https:\/\/towardsdatascience.com\///' )  # get slug from URL 
    FILE= " $HOME /wayofnumbers.github.io/content/ $slug .md"   # generate Markdown file name from slug 
    mediumexporter $line > $FILE   # convert medium article to markdown file    
    # some processing ...
done < $filename

我们使用sed命令删除了URL的第一部分: https://towardsdatascience.com/ : https://towardsdatascience.com/因此其余部分可以用作我们的插件。 例如, https://towardsdatascience.com/9-things-i-learned-from-blogging-on-medium-for-the-first-month-2bace214b814 //towardsdatascience.com/9-things-i-learned-from-blogging-on-medium-for-the-first-month-2bace214b814变成9-things-i-learned-from-blogging-on-medium-for-the-first-month-2bace214b814 ,非常适合a。 在这里,我们还使用slug为MarkDown文件创建文件名。 然后,我们使用mediumexporter将URL传输到Markdown文件中。 您可以在此处找到有关mediumexporter更多信息。

现在我们有了Markdown文件,让我们填写所需的处理代码:

# Processing the markdown file 
    tail -n +2 " $FILE " > " $FILE .tmp" && mv " $FILE .tmp" " $FILE "  # remove the first line 
    fl=$(head -n 1 $FILE ) # put first line (title) into fl 
    firstline=$( echo $fl | sed 's/# //' ) # Remove '# ' 
    tail -n +3 " $FILE " > " $FILE .tmp" && mv " $FILE .tmp" " $FILE "  # remove the first line 
    subtitle=$(head -n 1 $FILE ) # put first line (subtitle) into subtitle 
    tail -n +2 " $FILE " > " $FILE .tmp" && mv " $FILE .tmp" " $FILE "  # remove the first two line

这些行是不言自明的。 现在我们将firstline变量作为标题,将subtitle变量作为字幕,我们现在可以为Pelican构建Markdown文件元数据了:

# handle metadata for Pelican  
meta= "
Title: $firstline
Slug: $slug
Subtitle: $subtitle
Date: $(date)
Category: Machine Learning
Tags: Machine Learning, Artificial Intelligence
author: Michael Li
Summary: $firstline
[TOC]
"

您可以在此处参考Pelican的文档以获取有关元数据格式的更多信息。 简而言之,只要我们在元数据中指定title和subtitle字段,Markdown文件就不需要专门编写标题和副标题,Pelican会在帖子中自动为您生成它们,并按照特定样式您选择的主题。

有了正确的元数据,现在我们终于可以更新Markdown并将其准备好用于网站生成:

{ echo -n " $meta " ; cat $FILE ; } > $FILE .new # sticth meta-data and article content together 
mv $FILE {.new,} 
head -n -8 $FILE > $FILE .new # Remove medium's recommended articles
mv $FILE {.new,}
done < $filename  # don't forget to enclose the loop.

我所有的中型文章都有一些建议供进一步阅读。 我删除了自己博客的内容(上面的最后一行代码)。 现在,Markdown文件已准备就绪,是时候生成站点并将其推送到服务器了:

# push to server
cd $HOME /wayofnumbers.github.io
pelican content -s publishconf.py 
git add .
git commit -m "fix"
git push origin dev

结论

所以你去了。 该脚本仅适用于Pelican静态站点生成器,但其要旨可应用于您的任何博客平台。 我希望你学到了一两件事。 和快乐的博客/编码!

觉得这篇文章有用吗? 在Medium上关注我( Michael Li ),或者在Twitter @lymenlee或我的博客网站wayofnumbers.com上找到我。

From: https://hackernoon.com/port-your-medium-articles-to-your-personal-blog-with-a-simple-bash-script-a-how-to-guide-e488366o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值