这些年,写了一些文字,在各大平台,这篇教程记录如何把其他平台内容搬迁到typecho
1.简书的内容导入Typecho
2.知乎的内容导入Typecho
首先是简书,本来是想直接python写个爬虫在线爬简书的内容。 然后看简书后台有个导出md格式,可以直接把所有内容导出为makedown格式。
登录简书个人中心
目录结构如下
打开内容如下
大概分为下面几个步骤
- 导出文章:首先,你需要从简书等平台导出你的文章。简书支持导出Markdown格式的文件,这可以通过简书的导出功能来实现。
- 安装Python环境:确保你的计算机上安装了Python环境。你可以从Python的官方网站下载并安装。
编写Python脚本:
- 使用Python的
xmlrpc.client
库来与Typecho的XML-RPC接口进行通信。 - 读取你从简书导出的Markdown文件,解析文章内容。
- 通过XML-RPC接口调用Typecho的方法,如
postNew
或postEdit
,将文章内容写入Typecho。
- 使用Python的
- 设置Typecho的XML-RPC接口:确保你的Typecho博客已经开启了XML-RPC接口,并且你有相应的API密钥。
- 运行Python脚本:运行你的Python脚本,它将自动将文章从Markdown文件迁移到Typecho。
由于文章太多mysql经常断开改进链接池
使用连接池后,再批量写入则没问题了
这里使用了一个库,将本地文件夹下的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
实现知乎专栏文章导入typecho
因为前面已经导入简书,使用的makedown ,我们把知乎文章也同样导出为makedown, 然后转即可。这类源码有很多,把文章先转为makedown文件,然后通过程序写入typecho
https://github.com/magic007/typecho-markdown-file-publisher
- 其他51cto,csdn,sina,163,oschina,cnblogs 迁移到typecho 博客,原理一样,先下载makedown,如果没有就自己写一个,然后通过上面程序代码实现自动迁移到typecho
最终效果看本博客网址 www.cctvcloud.cn
欢迎访问后端云技术分享大家族