Python玩转阿里云OSS对象存储,批量转存markdown和html图片

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: Python玩转阿里云OSS对象存储,批量转存markdown和html图片

但是找了半天都找不到现成的工具和代码,无奈只能自己写一个了,感兴趣请看我的 github https://github.com/pzqu/pictureurlsto_oss


涉及Python知识点:


文件的写入写出

正则替换和查找

随机生成不重复的uuid

阿里云oss包

下载Url资源

简单知识点:


循环


对象存储?


想要建站最好把图片存储在对象存储里,然后开cdn加速,这样不仅可以减轻自己服务器的存储压力,同时阿里/腾讯会用他们的服务器和技术让你的图片加载的速度飞快,轻易不会产生数据丢失。


阿里云: https://www.aliyun.com/腾讯云:https://cloud.tencent.com/


找到对象存储,申请即可,拿到访问密码信息。


核心代码讲解


因为wordpress的博客文章是存储的mysql数据库里的


  1. 只要导出sql脚本
  2. 找到文件里的所有匹配的url,把图片下载下来
  3. 再上传到oss
  4. 最后替换sql文件,再导入回去就行了


获取匹配的url


读取文件,把匹配的url拿到


f_obj = open(file_name, 'r+', encoding="utf-8")
contents = f_obj.read()
reg = re.compile('\(https://cdn\.nlark\.com/yuque.*?\)')
url_markdown = reg.findall(contents)


用字典存起来


把拿到的url当作key存到dict


    for i in url_markdown:
        img_dic[i[1:-1]] = {
            "img": "",
            "oss": ""
        }

下载图片

def download_img(pic_url):
    name = get_random_pic_name(pic_url)
    r = requests.get(pic_url, stream=True)
    f = open(img_dic_path + "/" + name, "wb")
    for chunk in r.iter_content(chunk_size=512):
        if chunk:
            f.write(chunk)
    return img_dic_path + "/" + name

上传图片到对象存储

def oss_upload(upload_path, src_path):
    auth = oss2.Auth(AccessKeyID, AccessKeySecret)
    bucket = oss2.Bucket(auth, EndPoint, BucketName)
    bucket.put_object_from_file(upload_path, src_path)

替换文件中的老url

def alter(file, old_str, new_str):
    with open(file, "r", encoding="utf-8") as f1, open("%s.bak" % file, "w", encoding="utf-8") as f2:
        for line in f1:
            f2.write(re.sub(old_str, new_str, line))
    os.remove(file)
    os.rename("%s.bak" % file, file)


比较蛋疼的是写完才发现,是手机端不支持webp格式的图片,明天再看吧。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1466 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
29天前
|
安全 对象存储
OSS对象存储JavaV4签名
本文介绍了如何使用阿里云OSS-SDK生成V4版本的签名URL和Header签名。通过设置时间、访问密钥等参数,代码示例展示了如何创建带有V4签名的请求,适用于安全访问对象存储服务。相关文档链接提供了更多详细信息。
175 7
|
3月前
|
存储 前端开发 JavaScript
🚀前端轻松实现网页内容转换:一键复制、保存图片及生成 Markdown
在现代前端开发中,提升用户的交互体验至关重要。本文将详细介绍如何使用 HTML2Canvas 和 Turndown 两个强大的 JavaScript 库,实现将网页选中文本转化为图片并保存或复制到剪贴板,或将内容转换为 Markdown 格式。文章包含核心代码实现、技术细节和功能拓展方向,为开发者提供了一个轻量级的解决方案,提升用户体验。
260 68
|
2月前
利用html2canvas插件自定义生成名片信息并保存图片
这是一个利用html2canvas插件自定义生成名片信息并保存图片,自定义上传头像,自定义输入个人信息内容,自定义图片名称,并将生成的图片保存到本地
53 1
利用html2canvas插件自定义生成名片信息并保存图片
|
3月前
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
3月前
|
开发工具
用 Vim 编辑 Markdown 时直接粘贴图片
介绍一款 Vim 插件,可以帮助提升编辑 Markdown 时的从剪贴板粘贴图片的效率和体验。
37 2
|
3月前
|
存储 人工智能 安全
OSS 深度解析:Data + AI 时代的对象存储
在 Data + AI 时代,随着大数据分析和 AI/ML 工作负载的进一步融合,对象存储 OSS 作为面向 AI 时代的数据基础设施,迎来了新的挑战与创新机遇。本话题我们将会介绍对象存储的能力创新,深度解读对象存储在实现稳定、安全、高性能和低成本背后的技术进展,并展望未来 AI 驱动趋势下的技术发展方向。
593 1
|
3月前
HTML图片
【10月更文挑战第4天】HTML图片。
42 2
|
4月前
|
前端开发
Twaver-HTML5基础学习(37)network导出图片并下载
本文介绍了如何在Twaver-HTML5中将network导出为图片并提供下载,主要通过将network转换为canvas对象,然后转换为base64编码的图片进行展示和下载。
50 5
|
4月前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`<img>`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`<a>`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
72 13