type
status
date
slug
summary
tags
category
icon
password
Property
Jun 12, 2024 03:07 AM
🎯需求:数据迁移
将七牛云的对象存储里的图片(我自认为我的图片不多,需求不高,免费额度足够够用,但是仍然被七牛云计费0.03元😡)全部迁移到Cloudflare R2中去。
🚧难点:R2迁移规则受限
R2只支持从 Amazon S3 或 Google Cloud Storage 存储桶迁移到此存储桶
🧠思路:编程替换
- 将vuepress文件夹下所有的markdown(.md)文件中的图片都下载到本地
- 然后上传到R2中得到新的图片地址
- 将新的图片地址写入原来的.md文件中替换掉旧的地址
🔨测试:通义灵码VS腾讯云AI代码助手
我在VSCODE中对两个AI同时提了相同的问题:
我要写个程序下载文件夹包括子文件夹内所有的.md文件中的图片,并将它们上传到cloudflare R2存储中去,然后将新的图片地址写到.md中替换掉旧地址。
- 腾讯云AI代码助手
请注意,您需要将
your_api_key
和your_email
替换为您的Cloudflare R2 API密钥和邮箱。此外,您还需要知道您的Cloudflare R2存储区域的ID(zone_id
),可以在Cloudflare控制面板中找到。- 通义灵码
要实现这个需求,你可以按照以下步骤编写程序。这里我以Python为例,因为Python有丰富的库支持文件操作、网络请求以及正则表达式处理文本,非常适合完成这类任务。
步骤1: 安装必要的库
首先,确保安装了必要的Python库。你需要
requests
来处理HTTP请求,regex
或内置的re
模块来处理正则表达式,以及tqdm
来显示下载进度(可选)。步骤2: 递归遍历文件夹并识别.md文件
使用
os.walk()
遍历文件夹及子文件夹,筛选出所有.md
文件。步骤3: 下载并上传图片至Cloudflare R2
你需要使用Cloudflare R2的API来上传文件。首先,确保你有正确的认证信息和桶信息。下面的示例代码展示了一个简化的上传过程,实际应用中需根据R2的官方文档进行调整。
步骤4: 替换.md文件中的图片链接
使用正则表达式匹配并替换.md文件中的图片链接。
步骤5: 主函数整合
整合上述步骤,遍历所有.md文件,下载图片,上传至R2,然后替换.md文件中的图片链接。
注意:以上代码仅为逻辑框架示例,具体实现如图片下载、解析.md文件中的图片URL、以及与Cloudflare R2的API交互等细节需要根据实际情况进一步开发。特别是上传到R2的部分,需要根据Cloudflare提供的官方SDK或API文档来实现。
腾讯代码助手:
- 简单、粗暴、流式很快
- 遍历路径没有遍历到子文件夹
- 给出请求R2的是常规请求,没有使用第三方库,基本上也不能使用
- 替换markdown文件内容时用的BeautifulSoup,我没有找到BeautifulSoup在markdown中间的用法
- 总结思路有,但程序不可用,需要修改多
通义灵码:
- 给出使用python的理由,分步骤说明实现的逻辑,流式速度适中
- 遍历文件夹与子文件夹的md文件代码直接可用
- 各出请求R2同腾讯不可用,也没有使用第三方库
- 替换MD文件中的图片旧URL代码直接可用
- 提示需要自行实现提取旧图片URL并下载
- 总结提示安装对应库(虽然这个请求库对于R2没有用,但是好评),思路清晰,分步说明并提供各对应函数,总体可以实现即使使用
实施:用通义灵码给的代码改造
- 安装R2客户端库
- 改造代码
- 作者:集家嘴的壳玛🐸
- 链接:https://blog.kyeo.top/article/qiniu2cloudflare
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。