热门标签 | 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


推荐阅读
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
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社区 版权所有