热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Bash脚本将Medium文章迁移到个人博客[教程]

尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。

虽然Medium是一个非常出色的发布平台,但拥有自己的博客依然很有必要。这不仅可以增加与读者互动的渠道,还可以确保您的内容不会因平台变化而丢失。

为什么需要自己的博客?

Medium提供了高曝光率、高质量的内容和简洁易用的界面,对于刚开始写作的新手来说非常友好。然而,没有任何公司能够永久存在,如果Medium被其他公司收购或发生其他不利情况,您的文章可能会受到影响。拥有自己的博客可以确保您的内容安全,让您更加安心。

我使用基于Python的静态网站生成器Pelican构建了自己的网站,并写了一篇文章详细介绍了整个过程。每次发布新的Medium文章时,我需要手动复制URL,运行一些命令将其转换为Markdown文件,然后使用Pelican生成博客站点。虽然这个过程相对简单,但我希望能更进一步简化。因此,编写一个Bash脚本来自动化这一过程是非常合适的。

脚本结构

在编写脚本之前,明确我们要完成的任务可以帮助我们编写更高质量的代码。具体步骤如下:

  • 将所有文章的URL手动保存到一个文本文件中(未来可以使用爬虫自动化这一过程)。
  • 读取文件中的每一行,提取文章的标题和副标题。
  • 使用提取的信息创建Pelican所需的元数据。
  • 将Markdown文件转换为博客文章。
  • 运行Pelican命令生成静态网站。
  • 将网站推送到GitHub并触发Netlify的自动构建。

编写脚本

首先,定义脚本中需要的变量:

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

接下来,使用循环结构读取文本文件的每一行:

# Read in file and process each line
while read line; do
  n=$((n+1))
  slug=$(echo $line | sed 's/https://towardsdatascience.com///')  # Extract slug from URL
  FILE="$HOME/wayofnumbers.github.io/content/$slug.md"  # Generate Markdown file name
  mediumexporter $line > $FILE  # Convert Medium article to Markdown file
  # Additional processing...
done <$filename

我们使用sed命令从URL中提取文章的slug部分。例如,URL https://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。然后,我们使用mediumexporter工具将文章转换为Markdown文件。

接下来,我们需要对生成的Markdown文件进行一些处理:

# Process the Markdown file
tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"  # Remove the first line
fl=$(head -n 1 $FILE)  # Extract title
firstline=$(echo $fl | sed 's/# //')  # Remove '#' from title
tail -n +3 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"  # Remove the first line
subtitle=$(head -n 1 $FILE)  # Extract subtitle
tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"  # Remove the first two lines

这些操作包括移除不必要的行,并提取文章的标题和副标题。接下来,我们为Pelican生成元数据:

# 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]"
{echo -n "$meta" ; cat $FILE ; } > $FILE.new  # Combine metadata and article content
mv $FILE{.new,}
head -n -8 $FILE > $FILE.new  # Remove Medium's recommended articles
mv $FILE{.new,}

最后,生成静态网站并将其推送到服务器:

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

结论

通过上述步骤,您可以使用Bash脚本将Medium文章自动迁移到个人博客。虽然这个脚本是专门为Pelican静态站点生成器编写的,但其核心思路可以应用于其他博客平台。希望这篇文章对您有所帮助,祝您博客愉快!

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

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


推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 本文详细介绍了JSP(Java Server Pages)的九大内置对象及其功能,探讨了JSP与Servlet之间的关系及差异,并提供了实际编码示例。此外,还讨论了网页开发中常见的编码转换问题以及JSP的两种页面跳转方式。 ... [详细]
  • 本文详细介绍了Linux系统中的进程管理函数,涵盖了获取进程ID、用户ID、创建子进程、信号处理等关键操作。通过这些函数,开发者可以更好地控制和管理进程行为。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 探讨在使用 Fast-Android-Networking 库时遇到的 addStringBody 方法无法正常工作的问题及其解决方案。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 本文详细介绍了Linux内核中misc设备驱动框架的实现原理及应用方法,包括misc设备的基本概念、驱动框架的初始化过程、数据结构分析以及设备的注册与注销流程。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 本文提供了在 Kali Linux 2020.01 x64 版本上安装 Docker 的详细步骤,包括环境准备、使用清华大学镜像源、配置 APT 仓库以及安装过程中的常见问题处理。 ... [详细]
  • 本文详细介绍了如何正确安装Java EE SDK,并解决在安装过程中可能遇到的问题,特别是关于servlet代码在Apache Tomcat 10中无法运行的情况。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
author-avatar
袁冠和堂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有