其他平台文章迁移到Typecho

magic
2012-11-05 / 1 评论 / 8,040 阅读 / 正在检测是否收录...

这些年,写了一些文字,在各大平台,这篇教程记录如何把其他平台内容搬迁到typecho

1.简书的内容导入Typecho
2.知乎的内容导入Typecho

首先是简书,本来是想直接python写个爬虫在线爬简书的内容。 然后看简书后台有个导出md格式,可以直接把所有内容导出为makedown格式。

登录简书个人中心
Xnip2024-09-11_17-00-01.jpg

目录结构如下
Xnip2024-09-11_16-53-37.jpg

打开内容如下
Xnip2024-09-11_17-01-14.jpg

大概分为下面几个步骤

  1. 导出文章:首先,你需要从简书等平台导出你的文章。简书支持导出Markdown格式的文件,这可以通过简书的导出功能来实现。
  2. 安装Python环境:确保你的计算机上安装了Python环境。你可以从Python的官方网站下载并安装。
  3. 编写Python脚本

    • 使用Python的xmlrpc.client库来与Typecho的XML-RPC接口进行通信。
    • 读取你从简书导出的Markdown文件,解析文章内容。
    • 通过XML-RPC接口调用Typecho的方法,如postNewpostEdit,将文章内容写入Typecho。
  4. 设置Typecho的XML-RPC接口:确保你的Typecho博客已经开启了XML-RPC接口,并且你有相应的API密钥。
  5. 运行Python脚本:运行你的Python脚本,它将自动将文章从Markdown文件迁移到Typecho。

由于文章太多mysql经常断开改进链接池
Xnip2024-09-13_15-16-00.jpg

使用连接池后,再批量写入则没问题了

这里使用了一个库,将本地文件夹下的markdown文件发布到typecho的站点中

https://github.com/magic007/typecho-markdown-file-publisher

因为我们要节约流量费, 这里我们把代码改进下,把上传oos逻辑,改为下载到本地。然后上传到服务器

在main文件
execute_flow_with_typecho_mysql函数改为



def execute_flow_with_typecho_mysql(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        file_base_path = os.path.dirname(file_path)
        file_base_name = os.path.splitext(os.path.basename(file_path))[0] #无后缀文件名
        print(file_base_name,"file_base_name")
        # 判断标题是否存在
        if mysql_publisher.title_exists(file_base_name) > 0:
            print('标题已存在,跳过')
            return

        category_name = os.path.basename(file_base_path)
        md_source_text = file.read()
        md_img_urls = scan_imgs(file_path)
        if len(md_img_urls) > 0:
            for md_img_url in md_img_urls:
                # img_file = os.path.join(file_base_path, md_img_url)
                # img_file_name = os.path.basename(img_file)
                print("img_file_name2",md_img_url)
                # oss_url = uploader.upload_file(key=file_base_name+'-'+img_file_name, file_path=img_file)
                oss_url = uploader.upload_file(image_url=md_img_url)
                print('oss_url',oss_url)

                md_source_text = md_source_text.replace('](' + md_img_url + ')', '](' + oss_url + ')')
        post_id = mysql_publisher.publish_post(file_base_name, md_source_text, category_name)
        print('发布成功 --> ' + file_base_name + ' - ' + str(post_id))



---------------文件保存类-----------------

# 上传文件到本地
import requests
import json
import time

class LocalPicUploader:
    def __init__(self):
        self.upload_path = "/Users/magic/Documents/bmob/python/typecho-markdown-file-publisher/files"

    # 返回URL
    def upload_file(self, image_url):
        print("upload_file",image_url)
         # 下载图片
        response = requests.get(image_url)
        image_data = response.content
        # print(image_data,"image_data")

        # 把下载的图片保存到这个目录upload_path
        file_name = str(int(round(time.time() * 1000))) + '.png' 
        file_path = self.upload_path + '/' + file_name
        with open(file_path, 'wb') as f:
            f.write(image_data)
            print(f"图片已保存到本地:{file_path}")

            # file_path 替换里面upload_path字符串为https://www.cctvcloud.cn/
            return file_path.replace(self.upload_path, "https://www.cctvcloud.cn/usr/uploads/2024/09/12")
            # return file_path
        

这样就实现了,简书文章导入到了typecho

  1. 实现知乎专栏文章导入typecho

因为前面已经导入简书,使用的makedown ,我们把知乎文章也同样导出为makedown, 然后转即可。这类源码有很多,把文章先转为makedown文件,然后通过程序写入typecho

https://github.com/magic007/typecho-markdown-file-publisher
  1. 其他51cto,csdn,sina,163,oschina,cnblogs 迁移到typecho 博客,原理一样,先下载makedown,如果没有就自己写一个,然后通过上面程序代码实现自动迁移到typecho

最终效果看本博客网址 www.cctvcloud.cn

46

评论 (1)

取消
  1. 头像
    Magic
    Linux · Google Chrome

    欢迎访问后端云技术分享大家族

    回复