CSDN外链失效3:

参考我之前的博客:

外链失效博客1:随想笔记1:CSDN写博客经常崩溃,遇到外链图片转存失败怎么办_csdn外链图片转存失败-CSDN博客

外链失效博客2:网络随想2:转语雀_md格式转语雀lake格式-CSDN博客

markdown笔记:MarkDown笔记记录app——待更新_md笔记软件-CSDN博客

事情起因:

最近堆积了好多博客,但是在csdn上发现外链都失效了

正好最近github copilot免费版本已经可以在vscode上使用了,虽然免费版的额度限制很多

至于学生认证的步骤,可以参考很多网上的教程:
重点不在于什么profile实名认证、email教育邮箱、2步验证、payment信息添加,

重点在于最后一步拍照验证的时候需要上传学生认证资料,只能使用电脑本身或者是手机浏览器的摄像头,但是非常糊,简单都拍不清文字,但是实际上只要手写验证资料再拍照即可(对,就是这么草率)


可以和自己的项目联动:

主要是编写了一个程序,用于提取下载原来markdown文件中的图片链接,构建本地图床,顺便修改原本的markdown文件替换为修改后图床的图片链接

import argparse  # 用于解析命令行参数
import os  # 用于操作文件和目录
import shutil  # 用于文件复制
import re  # 用于正则表达式操作
import requests  # 用于发送HTTP请求def download_image(url, folder):response = requests.get(url, stream=True)  # 发送HTTP GET请求获取图片if response.status_code == 200:  # 如果请求成功(状态码200)filename = os.path.join(folder, url.split('/')[-1])  # 生成保存图片的文件路径with open(filename, 'wb') as out_file:  # 以二进制写模式打开文件shutil.copyfileobj(response.raw, out_file)  # 将响应内容写入文件return filename  # 返回保存的文件路径else:print(f"Failed to download {url}")  # 如果请求失败,打印错误信息return None  # 返回None# 当前文件夹内md个数计算
file_list = os.listdir()  # 列出当前文件夹中的所有文件
count_md = 0  # 初始化Markdown文件计数
md_file = ''  # 初始化Markdown文件名
for file in file_list:if file[-3:] == '.md':  # 如果文件以.md结尾count_md += 1  # 计数加1md_file = file  # 记录文件名# 添加命令行参数
parser = argparse.ArgumentParser()  # 创建ArgumentParser对象
if count_md == 1:parser.add_argument('--input', type=str, default=md_file, help='markdown file')  # 如果只有一个Markdown文件,设置为默认输入文件
else:parser.add_argument('--input', type=str, help='markdown file')  # 否则需要指定输入文件
parser.add_argument('--imgdir', type=str, default='img', help='存图片文件夹')  # 指定存放图片的文件夹,默认值为img
parser.add_argument('--output', type=str, help='输出md文件名')  # 指定输出的Markdown文件名
args = parser.parse_args()  # 解析命令行参数
imgdir = args.imgdir  # 获取图片文件夹路径
mdout = 'mdout'  # 输出内容所在文件夹
print(f"输入文件: {args.input} 图片文件夹: {args.imgdir} 输出文件: {args.output}")
if args.output == None:  # 如果没有规定输出md文件名args.output = os.path.join(mdout, os.path.basename(args.input))  # 使用输入文件名作为输出文件名print(f"输入文件: {args.input} 图片文件夹: {args.imgdir} 输出文件: {args.output}")
# 文件夹创建
if not os.path.exists(mdout):  # 如果输出文件夹不存在os.makedirs(mdout)  # 创建输出文件夹
if not os.path.exists(os.path.join(mdout, imgdir)):  # 如果图片文件夹不存在os.makedirs(os.path.join(mdout, imgdir))  # 创建图片文件夹
with open(args.input, 'r', encoding='utf-8') as f:  # 以utf-8编码读取输入的Markdown文件md = f.read()  # 读取文件内容# 正则提取
img_md = re.findall(r'!\[.*?\]\((.*?)\)', md)  # 提取Markdown格式的图片路径
img_html = re.findall(r'<img src="(.*?)" .*?/>', md)  # 提取HTML格式的图片路径
img_paths = img_md + img_html  # 合并两个列表得到所有图片路径for i in img_paths:if i.startswith('http'):  # 如果是远程图片img = download_image(i, os.path.join(mdout, imgdir))  # 下载到本地else:img = os.path.join(imgdir, os.path.basename(i))  # 获取本地图片路径shutil.copy(i, os.path.join(mdout, img))  # 复制到指定文件夹if img:md = md.replace(i, img)  # 更新Markdown文件中的图片路径with open(args.output, 'w', encoding='utf-8') as f:  # 以utf-8编码写入输出的Markdown文件f.write(md)  # 写入更新后的Markdown内容

默认当前文件夹中的md文件作为输入,默认当前文件夹中的img文件夹为图床,默认mdout中的md为替换后的md文件

下载mdout文件夹中的img图片图床+替换后的md文件

本来是打算上传md文件之后再重新另外上传图床

但是其实图床虽然能够导入,但是对应位置信息全乱了,直接图片全堆在一起,还是没有替换整理掉原来的乱序的图片。

后来发现:

干脆不要在富文本编辑器中导入md,直接在非md编辑界面上复制粘贴发布文章即可

参考:
python提取markdown图片到当前文件夹并修改图片路径_markdown图片转本地-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/494013.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《LangChain大模型应用开发》书籍分享

前言 ChatGPT和OpenAI开发的GPT模型不仅改变了我们的写作和研究方式&#xff0c;还改变了我们处理信息的方式。《LangChain大模型应用开发》讨论了聊天模式下的LLM的运作、能力和局限性&#xff0c;包括ChatGPT和Gemini。书中通过一系列实际例子演示了如何使用LangChain框架构…

Jenkins持续集成部署——jenkins安装

前言 Jenkins 是一个开源的自动化服务器&#xff0c;主要用于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;。它为软件开发团队提供了一个易于使用的平台来自动化构建、测试和部署应用程序的过程。 Jenkins 主要功能 1. 持续集成 (CI) 自动构建…

飞牛 fnos 使用docker部署 bili-sync:打造自动化 B 站资源下载器,与主流媒体服务器无缝衔接

Bili-Sync介绍及相关部署操作 一、Bili-Sync概述 Bili-Sync是哔哩哔哩内容同步助手&#xff0c;它能借助用户提供的登录信息&#xff0c;定期对用户的视频合集以及个人收藏进行遍历&#xff0c;找出还没在本地保存的新内容&#xff0c;然后自动下载到本地存储&#xff0c;以此…

Idean 处理一个项目引用另外一个项目jar 但jar版本低的问题

当在idea中一个module A引用另外一个项目B的jar&#xff0c;但是从私服仓库中拉下的jar版本比较低导致编译不通过时&#xff0c;可以把项目B拉下来&#xff0c;重新编译打包jar跟新到本地的仓库 选中右边菜单的Maven 选中对应的项目B-》Lifecycle->双击 install也可以按住c…

【day11】面向对象编程进阶(继承)

概述 本文深入探讨面向对象编程的核心概念&#xff0c;包括继承、方法重写、this和super关键字的使用&#xff0c;以及抽象类和方法的定义与实现。通过本文的学习&#xff0c;你将能够&#xff1a; 理解继承的优势。掌握继承的使用方法。了解继承后成员变量和成员方法的访问特…

高效准确的PDF解析工具,赋能企业非结构化数据治理

目录 准确性高&#xff1a;还原复杂版面元素 使用便捷&#xff1a;灵活适配场景 贴心服务&#xff1a;快速响应机制 在数据为王的时代浪潮中&#xff0c;企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速&#xff0c;企业所积累的数据量呈爆炸式增长…

Unity全局雾效

1、全局雾效是什么 全局雾效&#xff08;Global Fog&#xff09;是一种视觉效果&#xff0c;用于在3D场景中模拟大气中的雾气对远处物体的遮挡 它通过在场景中加入雾的效果&#xff0c;使得距离摄像机较远的物体看起来逐渐被雾气覆盖&#xff0c;从而创造出一种朦胧、模糊的视…

解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题

配置一下apache里面的配置文件&#xff1a;httpd.conf 和 httpd.vhosts.conf httpd.conf httpd-vhosts.conf 重启服务 展示&#xff1a; 浏览器中中文乱码问题&#xff1a;

【Spring事务】深入浅出Spring事务从原理到源码

什么是事务 保证业务操作完整性的一种数据库机制 &#xff08;driver 驱动&#xff09;事务特定 ACID A 原子性 &#xff08;多次操作 要不一起成功 要不一起失败 &#xff08;部分失败 savepoint&#xff09;&#xff09; C 一致性 &#xff08;事务开始时数据状态&#xff0c…

MFC/C++学习系列之简单记录13

MFC/C学习系列之简单记录13 前言memsetList Control代码注意 总结 前言 今天记录一下memset和List control 的使用吧&#xff01; memset memset通常在初始化变量或清空内存区域的时候使用&#xff0c;可以对变量设定特定的值。 使用&#xff1a; 头文件&#xff1a; C&#…

C# cad启动自动加载启动插件、类库编译 多个dll合并为一个

可以通过引用costura.fody的包&#xff0c;编译后直接变为一个dll 自动加载写入注册表、激活码功能: 【CAD二次开发教程-实例18-启动加载与自动运行-哔哩哔哩】 https://b23.tv/lKnki3f https://gitee.com/zhuhao1912/cad-atuo-register-and-active

Android Studio AI助手---Gemini

从金丝雀频道下载最新版 Android Studio&#xff0c;以利用所有这些新功能&#xff0c;并继续阅读以了解新增内容。 Gemini 现在可以编写、重构和记录 Android 代码 Gemini 不仅仅是提供指导。它可以编辑您的代码&#xff0c;帮助您快速从原型转向实现&#xff0c;实现常见的…

固定电话采用的是模拟信号还是数字信号?如果通话两端采用不同的信号会发生什么?

固定电话信号大揭秘&#xff1a;模拟与数字信号的纠缠 模拟信号 VS 数字信号&#xff1a;谁是电话界的“老江湖”&#xff1f; 固定电话采用的是模拟信号还是数字信号&#xff1f; 这其实取决于接入方式&#xff1a; 铜线接入&#xff1a;传统方式&#xff0c;使用模拟电信号…

<项目代码>YOLO Visdrone航拍目标识别<目标检测>

项目代码下载链接 &#xff1c;项目代码&#xff1e;YOLO Visdrone航拍目标识别&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90163918YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一…

druid与pgsql结合踩坑记

最近项目里面突然出现一个怪问题&#xff0c;数据库是pgsql&#xff0c;jdbc连接池是alibaba开源的druid&#xff0c;idea里面直接启动没问题&#xff0c;打完包放在centos上和windows上cmd窗口都能直接用java -jar命令启动&#xff0c;但是放到国产信创系统上就是报错&#xf…

LabVIEW电机控制中的主动消抖

在LabVIEW电机控制系统中&#xff0c;抖动现象&#xff08;如控制信号波动或机械振动&#xff09;会影响系统的稳定性和精度。通过使用主动消抖算法&#xff0c;可以有效降低抖动&#xff0c;提高控制性能。本文将介绍几种主流的主动消抖算法&#xff0c;并结合具体应用案例进行…

Vue CLI 脚手架创建项目流程详解 (2)

更新 CLI 脚手架 确保你安装的是最新版本的 Vue CLI&#xff0c;以支持最新的特性及改进。你可以通过以下命令全局安装或更新 Vue CLI&#xff1a; npm install -g vue/cli创建 Vue 3.x 项目 启动创建向导 使用 vue create 命令来开始创建一个新的 Vue 项目&#xff1a; vue …

macos 隐藏、加密磁盘、文件

磁盘加密 打开磁盘工具 点击添加 设置加密参数 设置密码 查看文件 不用的时候右键卸载即可使用的时候装载磁盘&#xff0c;并输入密码即可 修改密码 解密 加密&#xff0c;输入密码即可 禁止开机自动挂载此加密磁盘 如果不禁止自动挂载磁盘&#xff0c;开机后会弹出输入…

Chapter 19 Layout and Packaging

Chapter 19 Layout and Packaging 这一章我们介绍版图和封装, 关注模拟和数字电路的要求. 首先讲模拟电路中layout设计考虑, 然后解决衬底coupling问题, 最后描述封装问题, 分析IC的外部电容和电感问题. 19.1 General Layout Considerations 19.1.1 Design Rules Minimum W…

c++ ------语句

一、简单语句 简单语句是C中最基本的语句单元&#xff0c;通常以分号&#xff08;;&#xff09;结尾&#xff0c;用于执行一个单一的操作。常见的简单语句类型有&#xff1a; 表达式语句&#xff1a;由一个表达式后面加上分号构成&#xff0c;用于计算表达式的值或者执行具有…