将文件夹的 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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 2 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 3 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 734 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    299 引用 • 764 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • OneNote
    1 引用 • 3 回帖
  • AWS
    11 引用 • 28 回帖 • 9 关注
  • ActiveMQ

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

    19 引用 • 13 回帖 • 676 关注
  • 叶归
    12 引用 • 56 回帖 • 20 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 2 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1443 引用 • 10082 回帖 • 496 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖 • 2 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 341 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 30 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 5 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 519 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2040 回帖
  • 996
    13 引用 • 200 回帖 • 4 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 118 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1432 回帖