新浪图床链接->阿里云oss 一键替换程序

“五一假期都要闲死了,大家节日快乐 ”

前言

源码在github上 github 项目地址:https://github.com/jackyanghc/picture_sina_to_oss

最近刷新自己的博客,发现好多图片竟然不见了

我还以为是自己网不好,或是博客搭的有问题,排除好久好久,真的都快疯了

才发现是sina关闭了外链图床服务

哎,真是让人痛心啊,去知乎上看了看,免费图床时代已经结束啦!

可是那以前发布的博客,要怎么办呢,重新一个一个上传,复制粘贴???

别吧,这么搬砖的活,程序员怎么能干?为此,我写了这个程序来自动上传以及替换对应的图片到阿里云oss

正文

程序主要分为4部分

环境如下:

python 3

oss2

re

1. markdown文件查找

def findmd(level, path):global allFileNum''''' 打印一个目录下的所有文件夹和文件 '''# 所有文件夹,第一个字段是次目录的级别dirList = []# 所有文件# 返回一个列表,其中包含在目录条目的名称(google翻译)files = os.listdir(path)# 先添加目录级别dirList.append(str(level))for f in files:if (os.path.isdir(path + '/' + f)):# 排除隐藏文件夹。因为隐藏文件夹过多if (f[0] == '.'):passelse:# 添加非隐藏文件夹dirList.append(f)if (os.path.isfile(path + '/' + f)):# 添加文件if(f.split('.')[-1] == 'md' or f.split('.')[-1] == 'markdown'):fileList.append(path+'/'+f)# 当一个标志使用,文件夹列表第一个级别不打印i_dl = 0for dl in dirList:if (i_dl == 0):i_dl = i_dl + 1else:# 打印至控制台,不是第一个的目录print( '-' * (int(dirList[0])), dl)# 打印目录下的所有文件夹和文件,目录级别+1findmd((int(dirList[0]) + 1), path + '/' + dl)for fl in fileList:# 打印文件print('-' * (int(dirList[0])), fl)# 随便计算一下有多少个文件allFileNum = allFileNum + 1

2. 正则匹配

def search_of_src_of_sina(f):pic_name = []sina_url = []try:f_obj = open(f,'r+',encoding="utf-8")contents = f_obj.read()# 正则匹配寻找 以前sina图床上面的图片reg = re.compile('\(https://.*sinaimg.*\)')url_s = reg.findall(contents)for i in url_s:sina_url.append(i[1:-1])pic_name.append(i.split('/')[-1])pic = get_pic(sina_url)oss_url = post_jpg(pic,pic_name)for i in range(len(sina_url)):contents=contents.replace(sina_url[i],oss_url[i])f_obj.seek(0)f_obj.write(contents)f_obj.close()except FileNotFoundError:msg = "Sorry, the file " + f + " does not exist."print(msg)

3. src爬取图片

def get_pic(src):pic=[]for pic_url in src:r = requests.get(pic_url)pic.append(r.content)return pic

4. post 文件到阿里云oss

def post_jpg(pic,jpg_name):url = []for i in range(len(pic)):with open('picture.jpg', 'wb') as file:file.write(pic[i])file.close()result = bucket.put_object_from_file(jpg_name[i], 'picture.jpg')  # 括号内 左边是上传后的文件名,右边是当前系统的文件地址print('http status: {0}'.format(result.status))  # 打印上传的返回值 200成功jpg_url = bucket.sign_url('GET', jpg_name[i], 60)  # 阿里返回一个关于jpg的url地址 url.append(jpg_url.split('?')[0])return url

实验结果

完美实现了我们的要求 源码下github上

github 项目地址:https://github.com/jackyanghc/picture_sina_to_oss

新浪图床链接-阿里云oss 一键替换程序相关推荐

  1. 最详细PicGo(图床)加阿里云OSS实现图片自动上传

    最详细PicGo加阿里云OSS实现图片自动上传 前言 使用Typora这款markdown编辑器时,导入的图片是本地链接,在进行资源共享时,就会出现图片无法显示问题,为了将相对路径转为绝对路径,就必须 ...

  2. 搭建个人图床【阿里云OSS+PicGo】

    简介 图床:存储图片的服务器. 应用场景:存储博客图片.markdown笔记中上传图片等. OSS:对象存储,可以理解为个网盘. Why 阿里云 OSS:省事儿,有保障.注意: 阿里云OSS需要一点开 ...

  3. typora图床教程-阿里云版

    史上最稳定的图床工具 - 阿里云 之 typora图床教程最终篇 之前陆续更新了typora图床教程的smms版和七牛云版,本着做事做全套的精神,我又来更新了. 这次更新的是用阿里云作为图床. 保证是 ...

  4. 随机二次元新浪图床api源码

    介绍: 随机二次元新浪图床api源码,图片默认均为http,采用新浪图片,高速访问. 有兴趣的小伙伴可以自己替换为更好的图片链接地址. 网盘下载地址: http://kekewangLuo.net/t ...

  5. 自建图床之一:使用幻想领域搭建免费新浪图床网站

    其实VPS小学生一开始并不明白为什么要自建图床,因为最早接触网站的时候学了一点SEO的皮毛,知道如果图片引用外部链接会降低权重,而且对于图片关键词优化,百度搜索结果调用图片都非常不利,到现在也不是很明 ...

  6. delphi 调用php接口_新浪图床 API 接口调用与请求方法详细教程

    新浪微博图床API在网上已经很多且大都封装成了API供别人调用,这里分享其核心代码.支持前台跨域请求,以POST方式提交图片即可.新浪图床可以将你的图片远程上传到新浪服务器,你可以选择调用本站的接口, ...

  7. php微博图床,php上传图片到新浪图床 | 小灰灰博客

    /** * Created by PhpStorm. * User: 小灰灰 * Date: 2018/12/23 9:02 * Other: 需登录授权api */ class Test { pub ...

  8. Gitee图床迁移阿里云

    图片下载 把gitee上所有图片的安装包下载下来 阿里云配置 https://zhuanlan.zhihu.com/p/138878534 picgo配置 picgo桌面版安装包:https://ww ...

  9. 这是一篇测试博客,主要测试新浪图床是否可用

    甩棍经验技巧超深度解析 本文内容总结来自于个人经历,可能有一些偏执的地方,欢迎各位朋友们拍砖探讨: 标题 1,棍对刀:不管是遇到短刀(匕首类,以捅刺为主要杀伤手段)还是长刀(砍刀类,以劈砍为主要杀伤手 ...

最新文章

  1. 逻辑回归之案例:癌症分类预测-良/恶性乳腺癌肿瘤预测
  2. Git命令配置学习笔记
  3. 魔改CNN揭秘宇宙大爆炸:物理学的核心是对称性
  4. Mono源码学习笔记:Console类(四)
  5. 【题解】p1064 金明的预算方案
  6. android 渠道号_亲测:安卓打渠道包神器,1分钟出自动出100个渠道包
  7. 工业交换机单纤或双纤都只是占用一个端口吗?
  8. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
  9. java反码_Java:二进制(原码、反码、补码)与位运算
  10. json介绍及简单示例
  11. php程序yii是什么意思,yii是啥意思?
  12. 16. Django实战:云笔记项目
  13. php路径跳转include,PHP中include路径的解决方法汇总
  14. 【一文讲通】BLDC的六步法PMSM的FOC法综合
  15. 计算机文化基础感想,提高《计算机文化基础》教学效果地几点心得.doc
  16. Java项目:房产中介管理系统(java+SSM+HTML+bootstrap+layui+Mysql)
  17. Ubuntu20.04 虚拟机 联网
  18. STM32 芯片锁死无法烧录问题解决
  19. java方面图形/图像处理
  20. oracle数据库exec用法,Sql中exec的用法

热门文章

  1. 留不住的北上广深,春暖花开在光谷!
  2. 公开招聘网上报名系统-报名考务轻松管理-代码开发定制
  3. HBuilder 连接 Nox 夜神模拟器 adb命令不是内部或外部命令 解决方案
  4. CVPR2022 oral | MetaFormer才是探索Transformer的源泉,衍生PoolFormer速度喜人
  5. python 数据录入窗口_干货!用Tkinter实现简单的信息录入和查询界面!
  6. 微信公众号开发时返回中文数据为问号解决方法
  7. STM32 F1普中开发板 TFT彩屏指针时间显示及闹钟。
  8. ifix如何设画面大小_iFIX 画面设计 1.
  9. 初学c语言的方法和操作
  10. cobol- STRING语句