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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 541 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 3 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 736 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 3 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖
  • Visio
    1 引用 • 2 回帖 • 2 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 253 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 44 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖 • 2 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 638 关注
  • MySQL

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

    692 引用 • 535 回帖
  • Pipe

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

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

    132 引用 • 1115 回帖 • 121 关注
  • OneDrive
    2 引用 • 3 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 93 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 23 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 34 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 113 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 396 关注
  • Openfire

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

    6 引用 • 7 回帖 • 98 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 207 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    182 引用 • 1010 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖