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.mzph.cn/news/890382.shtml

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

相关文章

Kubernates

kubernates是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes的目标是让部署容器化的应用简单并且高效&#xff08;powerful&#xff09;,Kubernetes提供了应用部署&#xff0c;规划&#xff0c;更新&#xff0c;维护的一种机制。 架构…

Pycharm 更改字体大小

更改代码字体的大小 更改软件字体的大小

Ubuntu20.04解决docker安装后is the docker daemon running? 问题

Ubuntu20.04解决docker安装后is the docker daemon running? 问题 问题描述问题分析问题解决 问题描述 docker info后报错 ERROR: Cannot connect to the Docker daemon at unix:///root/.docker/desktop/docker.sock. Is the docker daemon running? errors pretty printi…

STM32完全学习——CRC校验

一、STM32F407CRC校验的补充 由于STM32F407的CRC校验&#xff0c;并没有什么配置的选项&#xff0c;就会导致他只能进行32位&#xff0c;且初始值是0XFFFFFFFF&#xff0c;输入和输出都没有反转的CRC校验。为了弥补这些不足点&#xff0c;于是自己编写函数来增加这些功能 //输…

CSS系列(27)- 图形与滤镜详解

前端技术探索系列&#xff1a;CSS 图形与滤镜详解 &#x1f3a8; 致读者&#xff1a;探索CSS的艺术表现力 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS 图形和滤镜效果&#xff0c;学习如何创建引人注目的视觉效果。 基础图形 &#x1f680; 几何形状…

四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能

经过前面3节完成金融问答机器人基本流程&#xff0c;这章将使用Gradio构建web应用&#xff0c;同时加入memory令提示模板带有记忆的&#xff0c;使用LCEL构建问答链。 加载向量数据库 from langchain.vectorstores import Chroma from langchain_huggingface import HuggingF…

矩阵链乘法【东北大学oj数据结构10-2】C++

矩阵链乘法问题的目标是找到最有效的方法来乘以给定的 n 个矩阵 M1,M2,M3,...,Mn。 编写一个程序&#xff0c;读取 Mi 的维度&#xff0c;并找到最小标量乘法以计算最大链链乘法 M1M2...Mn。 输入 在第一行中&#xff0c;给出了一个整数 n。 在接下来的 n 行中&#xff0c;矩阵…

深度学习之超分辨率算法——SRCNN

网络为基础卷积层 tensorflow 1.14 scipy 1.2.1 numpy 1.16 大概意思就是针对数据&#xff0c;我们先把图片按缩小因子照整数倍进行缩减为小图片&#xff0c;再针对小图片进行插值算法&#xff0c;获得还原后的低分辨率的图片作为标签。 main.py 配置文件 from model im…

基于海思soc的智能产品开发(mcu读保护的设置)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于市场上的产品&#xff0c;除了电路之外&#xff0c;软件保护也是非常重要的一个环节。要是自己辛辛苦苦写的软件&#xff0c;被竞争对手轻易地…

Zabbix6.0升级为6.4

为了体验一些新的功能&#xff0c;比如 Webhook 和问题抑制等&#xff0c;升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档&#xff0c;确认组件要求的版本&#xff0c;否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

GitLab的卸载与重装

目录 一、GitLab的卸载 二、 GitLab的安装与配置 1. 创建安装目录 2. 安装 3. 使用 3.1 初始化 3.2 创建空白项目 ​编辑 3.3 配置SSH 3.3.1 配置公钥 ​编辑 3.3.2 配置私钥 3.4 配置本地git库 一、GitLab的卸载 1. 停止gitlab sudo gitlab-ctl stop 2. 卸载…

0基础学java之Day29(单例模式、死锁)

单例模式 理解&#xff1a;在整个项目中&#xff0c;该类的实例只能有一个 1.饿汉式 优点&#xff1a;线程安全 缺点&#xff1a;浪费资源 public class A { ​private static A a new A();private A(){}public static A getInstance(){return a;}public static void met…

PyCharm 中打印完整的 DataFrame

PyCharm 中打印完整的 DataFrame 方法 1&#xff1a;设置 pandas 的全局显示选项代码示例&#xff1a;解释&#xff1a; 方法 2&#xff1a;临时设置显示选项代码示例&#xff1a;解释&#xff1a; 方法 3&#xff1a;使用 to_string 方法代码示例&#xff1a;解释&#xff1a;…

Linux快速入门-Linux的常用命令

Linux的常用命令 1. Linux的终端与工作区1.1 终端概述1.2 切换终端 2. Shell语言解释器2.1 Shell概述 3. 用户登录与身份切换3.1 su 命令3.2 sudo 命令 4. 文件、目录操作命令4.1 pwd 命令4.2 cd 命令4.3 ls 命令4.3.1 ls 指令叠加使用 4.4 mkdir 命令4.5 rmdir 命令4.6 cp 命令…

内表中的 GROUP BY 详解

由于大家对语法及其含义似乎有些混淆&#xff0c;让我们用一个非常简单的例子来逐步处理内部表的分组问题&#xff0c;你会发现其实并不复杂。我还附上了一个程序的全文&#xff0c;该程序会执行以下步骤并产生一些输出结果。 是的&#xff0c;您有一个内部表 spfli_tab TYPE …

三、ubuntu18.04安装docker

1.使用默认ubuntu存储库安装docker 更新软件存储库 更新本地软件数据库确保可以访问最新版本。打开终端输入&#xff1a;sudo apt-get update 卸载旧版本的docker 建议继续之前卸载任何旧的docker软件。打开终端输入&#xff1a;sudo apt-get remove docker docker-engine …

【Linux系统编程】:信号(2)——信号的产生

1.前言 我们会讲解五种信号产生的方式: 通过终端按键产生信号&#xff0c;比如键盘上的CtrlC。kill命令。本质上是调用kill()调用函数接口产生信号硬件异常产生信号软件条件产生信号 前两种在前一篇文章中做了介绍&#xff0c;本文介绍下面三种. 2. 调用函数产生信号 2.1 k…

专业电脑数据恢复软件 iFind Data Recovery v9.2.3 绿色便携版

前言 iFinD Data Recovery一款特别实用的数据找回工具&#xff0c;它很厉害&#xff0c;能帮你在SSD硬盘和Windows10系统上找回丢失的数据。而且&#xff0c;它还能深度扫描并恢复各种主流数码相机里的RAW格式照片&#xff0c;速度超快&#xff0c;用起来也很稳定顺畅&#xf…

QT:Widgets中的数据库应用

SQL数据库驱动 pro文件中添加如下一行代码 QT sql widgetsmain.cpp #include <QApplication> #include <QSqlDatabase> #include <QStringList> int main(int argc, char *argv[]) {QApplication a(argc, argv);qDebug() << "Available driver…

AI的进阶之路:从机器学习到深度学习的演变(三)

&#xff08;承接上集&#xff1a;AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;二&#xff09;&#xff09; 四、深度学习&#xff08;DL&#xff09;&#xff1a;机器学习的革命性突破 深度学习&#xff08;DL&#xff09;作为机器学习的一个重要分支&am…