将文件夹的 markdown 文件中的所有图片上传到 b 站图床

优点:

自带 CDN,大厂基本不会被删(但还是建议本地保留一份),加载速度极快

缺点:

网上发布会有跨域问题

下载:https://github.com/xlzy520/typora-plugin-bilibili/releases 中的 main.exe 程序到本地

创建 python 脚本 MarkdownPicTOBilibiliPic.py

import os import re import subprocess def get_md_files(folder_path): """获取指定文件夹下所有.md文件的路径""" md_files = [] for root, _, files in os.walk(folder_path): for file in files: if file.endswith(".md"): md_files.append(os.path.join(root, file)) return md_files def extract_image_urls(md_file_path): """从.md文件中提取所有图片的相对链接""" pattern = r'!\[.*?\]\((.*?)\)' # 匹配 ![标识](url) urls = [] with open(md_file_path, 'r', encoding='utf-8') as file: content = file.read() urls = re.findall(pattern, content) return urls, content def get_absolute_path(md_file_path, relative_url): """根据.md文件路径和相对图片链接生成图片的绝对路径""" md_dir = os.path.dirname(md_file_path) absolute_path = os.path.normpath(os.path.join(md_dir, relative_url)) return absolute_path def replace_urls_in_content(content, old_new_url_map): """将文件内容中的旧URL替换为新URL""" for old_url, new_url in old_new_url_map.items(): content = content.replace(old_url, new_url) return content def process_md_files(folder_path, main_exe_path, token, csrf): """核心功能实现""" md_files = get_md_files(folder_path) print(f"找到 {len(md_files)} 个.md文件:") for md_file in md_files: print(f"- {md_file}") for md_file_path in md_files: print(f"\n处理文件: {md_file_path}") # 提取图片相对URL和文件内容 urls, content = extract_image_urls(md_file_path) print(f"找到 {len(urls)} 个图片链接。") # URL映射:{相对URL: 新URL} old_new_url_map = {} for relative_url in urls: # 获取图片的绝对路径 absolute_path = get_absolute_path(md_file_path, relative_url) print(f"相对路径: {relative_url} -> 绝对路径: {absolute_path}") # 调用main.exe,获取新的图片URL command = f'"{main_exe_path}" token={token} csrf={csrf} "{absolute_path}"' print(f"执行命令: {command}") try: result = subprocess.run(command, capture_output=True, text=True, shell=True) new_url = result.stdout.strip() # 假设返回的URL在stdout中 if new_url: old_new_url_map[relative_url] = new_url print(f"新图片URL: {new_url}") else: print(f"未能获取新URL,跳过: {relative_url}") except Exception as e: print(f"执行命令时出错: {e}") # 替换内容中的旧URL为新URL updated_content = replace_urls_in_content(content, old_new_url_map) # 将更新后的内容写回.md文件 with open(md_file_path, 'w', encoding='utf-8') as file: file.write(updated_content) print(f"文件更新完成:{md_file_path}") if __name__ == "__main__": # 文件夹路径(需要遍历.md文件的目录) folder_path = r"C:/Users/t295/Downloads/ (1)" # main.exe路径 main_exe_path = r"C:/Users/t295/Downloads/main.exe" # Token和csrf参数 token = "f45d0aad%2C175房东0f24%2A11CjD57FWOhgdLG43LXCsczMMWPfE14HdoiJ1adu47okRjUqXl-9bDZGX8nvxbml8LIgESVkxMbEJzSzE0eldYakVwaUxKeThnbll5bFBFV1JLcTF4R0RxcnBuSjVRTDNOcDB1NXVhMG0tMFpvRVJkMXdCRncxckFHMnB6ZGJYRGxnMUNBZ0ZuU0p3IIEC" csrf = "7c703b2f1f27f52反对f5c17409850f" process_md_files(folder_path, main_exe_path, token, csrf)

修改内容:

# markdown文件夹路径(需要遍历.md文件的目录) folder_path = r"C:/Users/t295/Downloads/markdown文件夹/" # main.exe路径 main_exe_path = r"C:/Users/t295/Downloads/main.exe" # Token和csrf参数 token = "f45d0aad%2C170f24%WOhgdLG43LXCsczMMWPfE14HdoiJ1adu47okRjUqXl-9bDZGX8nvxbml8LIgESVkxMbEJzSzE0eldYakVwaUxKeThnbll5bFBFV1JLcTF4R0RxcnBuSjVRTDNOcDB1NXVhMG0tMFpvRVJkMXdCRncxckFHMnB6ZGJYRGxnMUNBZ0ZuU0p3IIEC" csrf = "7c703b2f1f27ff59850f"

注意其中的 cmd 命令将路径进行替换

同时将 token 和 csrf 进行替换,具体位置在 b 站中登录后,在应用程序(F12⇒ 应用程序)中查看 cookie 了,两个值分别对应:推荐使用浏览器插件 Cookie-Editor,更加方便:

  1. SESSDATA⇒token
  2. bili_jct⇒csrf

最后运行脚本即可,最后随机打开一个查看效果:

250108_105055.png

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    171 引用 • 1533 回帖
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 80 关注
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 762 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    412 引用 • 3588 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 24 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 2 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 5 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 344 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 675 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    176 引用 • 3860 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 657 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    213 引用 • 291 回帖 • 372 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 45 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    495 引用 • 931 回帖 • 2 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    54 引用 • 44 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 749 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 3 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 792 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 229 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 636 关注