使用 Python 脚本一键上传图片到兰空图床并自动复制链接

使用 Python 脚本一键上传图片到兰空图床并自动复制链接
个人博客:材料与逻辑

对于博客作者、开发者或任何经常需要处理图片的人来说,图床是绕不开的工具。兰空图床(Lsky Pro)凭借其强大的功能和现代化的界面,成为了许多自建图床用户的首选。

但是,传统的“打开浏览器 -> 登录 -> 拖拽上传 -> 点击复制链接”的流程在需要频繁插入图片时显得格外繁琐,严重打断写作或开发的思路。

今天,我将分享一个简单的 Python 脚本,它能彻底改变你的图片上传体验。

核心功能:快,准,狠

这个脚本旨在实现一个目标:以最快速度将本地图片转换为可用的网络链接。

它具备以下核心特性:

  1. 完全脱离浏览器:直接在终端(命令行)通过一条命令完成上传。
  2. 基于文件名传参:无需复杂的配置,只需告诉脚本你要传哪个文件。
  3. 自动复制到剪切板:这是灵魂功能!上传成功后,图片 URL 会自动进入你的系统剪切板,你只需在 Markdown 编辑器里按下 Ctrl+V (或 Cmd+V) 即可。
  4. 安全鉴权:使用 Lsky Pro V2 标准的 API Token 进行验证,无需暴露账号密码。

准备工作

在使用脚本之前,请确保你满足以下条件:

  • Python 环境:已安装 Python 3.x。
  • 兰空图床账号:你拥有一个 Lsky Pro (V2版本) 的使用权限。
  • API Token:在图床后台获取了有效的 API 令牌(通常在“个人中心” -> “令牌管理”中生成)。

第一步:安装依赖

这个脚本依赖两个强大的 Python 库:

  • requests: 用于发送 HTTP 上传请求。
  • pyperclip: 用于操作系剪切板。

打开你的终端或命令提示符,运行以下命令安装它们:

pip install requests pyperclip 

(注:Linux 用户如果发现剪切板功能失效,可能需要额外安装 xclipxsel,例如:sudo apt-get install xclip)

第二步:获取并配置脚本

新建一个文本文件,命名为 upload.py(或者你喜欢的任何名字),然后将下方的代码粘贴进去。

查看其它好用的脚本:zhyong26/Mac_shells: 个人使用脚本

⚠️ 重要配置: 在保存之前,你必须修改代码顶部的 配置区,填入你自己的图床信息。

import requests import sys import os import pyperclip # 引入剪切板库# ============================================# --- 配置区 (请在此处修改为你的信息) ---# 1. 你的图床 API 地址,必须以 /api/v1/upload 结尾 API_URL ="https://your-domain.com/api/v1/upload"# 2. 你的 API Token (在个人中心 -> 令牌管理中获取)# 或者使用curl命令获取# 注意:Token 通常是一长串字符,有时包含开头的数字和竖线,请完整复制。 TOKEN ="your_auth_token_here"# ============================================defupload_to_lsky(file_path):# 1. 检查文件是否存在ifnot os.path.isfile(file_path):print(f"❌ 错误: 找不到文件 '{file_path}'")returnprint(f"正在上传: {os.path.basename(file_path)} ...")# 2. 构造请求头 (使用 Bearer Token 鉴权) headers ={'Authorization':f'Bearer {TOKEN}','Accept':'application/json',# 伪装 User-Agent 防止部分防火墙拦截'User-Agent':'Mozilla/5.0 (Python Lsky Uploader)'}try:# 3. 读取文件并准备上传# 使用 'rb' 模式读取二进制流withopen(file_path,'rb')as f:# 构造 multipart/form-data 表单,字段名为 'file' files ={'file':(os.path.basename(file_path), f)}# 4. 发送 POST 请求# 设置 timeout 防止网络卡死 response = requests.post(API_URL, headers=headers, files=files, timeout=30)# 5. 处理响应if response.status_code ==200: res_data = response.json()# 再次确认 API 返回的状态也是 trueif res_data.get('status'):# 提取 URL img_url = res_data['data']['links']['url']# ---> 核心步骤:复制到剪切板 <--- pyperclip.copy(img_url)print(f"✅ 上传成功!")print(f"🔗 URL: {img_url}")print("📋 状态: 链接已自动复制到剪切板,直接粘贴即可!")else:print(f"❌ 上传失败 (API拒绝): {res_data.get('message')}")elif response.status_code ==401:print("❌ 认证失败:Token 无效或已过期,请检查配置。")else:print(f"❌ 网络请求失败 | HTTP 状态码: {response.status_code}")# 调试时可取消下面注释查看详细信息# print(f"响应内容: {response.text}")except Exception as e:print(f"❌ 程序运行异常: {str(e)}")# 主程序入口if __name__ =="__main__":# 检查命令行参数是否足够iflen(sys.argv)<2:print("使用方法错误。")print("正确用法: python upload.py <本地图片路径>")print("示例: python upload.py screenshot.png")else:# 获取命令行传入的第一个参数作为文件路径 target_file = sys.argv[1] upload_to_lsky(target_file)

第三步:享受极速体验

配置完成后,保存文件。现在你可以体验飞一般的上传速度了。

打开终端,进入 upload.py 所在的目录。

场景 1:上传当前目录下的图片

假设你有一个 demo.jpg 在当前目录下:

python upload.py demo.jpg 

场景 2:上传其他目录的图片

你也可以使用绝对路径或相对路径:

python upload.py /Users/username/Desktop/截图.png 

神奇时刻:

执行命令几秒后,你将看到如下输出:

正在上传: demo.jpg ... ✅ 上传成功! 🔗 URL: https://your-domain.com/i/2023/10/27/653a1b2c3d4e5.jpg 📋 状态: 链接已自动复制到剪切板,直接粘贴即可! 

此时,无需任何额外操作,直接回到你的 Markdown 编辑器中按下粘贴键,图片链接就出现在那里了。

继续优化:使用alias命令

为方便更好地复制,可以使用alias直接执行命令,任意地方即可上传图片,可参考我的配置,在.zshrc.bashrc虽添加,注意路径更改为自己实际的全路径。

alias upload_lsky="/Users/zhyong/Project/local_python_env/.venv/bin/python3 ~/Project/local_python_env/upload_lsky.py" 

如下任意位置执行upload_lsky命令,即可快捷上传图片了。

结语

通过这个不到 80 行的 Python 脚本,我们成功地将一个繁琐的图床交互过程简化为了一行命令。这不仅节省了时间,更保持了工作心流的连贯性。相比使用Molunerfinn/PicGo等本地图片上传软件,也更加方便快捷。

如果你是 Typora 用户,甚至可以将此脚本配置为 Typora 的自定义上传服务,实现真正的“复制图片 -> 粘贴到 Typora -> 自动上传”的无缝体验。

快去试试吧,让你的写作效率起飞!


AI 总结

深度总结:

该文是一篇面向开发者与内容创作者的高效工作流实践指南,核心围绕**自动化图片上传至自建图床(Lsky Pro)**这一高频痛点展开。文章不仅提供了一个轻量、健壮、开箱即用的 Python 脚本,更系统性地构建了一套「命令行驱动 + API 鉴权 + 剪切板集成」的端到端解决方案。

其深层价值体现在三个维度:
🔹 人机交互优化:彻底摒弃浏览器 GUI 依赖,将多步手动操作压缩为单条终端命令(python upload.py xxx.png),显著降低认知负荷,保障写作/开发心流;
🔹 安全与可维护性设计:采用标准 Bearer Token 鉴权(符合 Lsky Pro V2 API 规范),避免明文账号密码,配置解耦清晰(API_URL/TOKEN 独立声明),便于团队复用与环境隔离;
🔹 跨平台工程意识:兼顾 Windows/macOS/Linux 差异(如提示安装 xclip/xsel),并内建健壮错误处理(文件存在性校验、HTTP 状态码分级响应、JSON 解析容错、超时控制),体现生产级脚本思维。

此外,脚本虽仅约 80 行,却精准覆盖了现代 CLI 工具的关键能力:参数解析、HTTP 文件上传(multipart/form-data)、剪切板交互、用户反馈(emoji 可视化状态)、调试友好性(注释掉的 debug 输出)。它不仅是“工具”,更是可扩展自动化生态的原子组件——文中提及的 Typora 集成即印证其作为底层能力被上层应用调用的潜力。


核心关键词标签(3–5个):

#Python脚本 #LskyPro #图床自动化 #API上传 #剪切板集成

Read more

【Java 开发日记】为什么要有 time _wait 状态,服务端这个状态过多是什么原因?

【Java 开发日记】为什么要有 time _wait 状态,服务端这个状态过多是什么原因?

目录 为什么要有 TIME_WAIT 状态? 原因一:可靠地终止TCP连接(确保最后的ACK能到达对方) 原因二:让旧连接的重复报文段在网络中自然消失(防止影响新连接) 服务端 TIME_WAIT 状态过多是什么原因? 原因一:服务端使用了短连接,并且是它主动关闭连接 原因二:客户端的非正常行为 原因三:负载均衡器的健康检查 总结 面试回答 为什么要有 TIME_WAIT 状态? TIME_WAIT,俗称2MSL等待状态,是TCP连接主动关闭一方(通常是客户端,但也可能是服务端)在发送最后一次ACK确认报文后,会进入的一个状态。它需要等待2倍的最大报文段生存时间后,才会最终进入CLOSED状态,释放连接资源。 设计TIME_WAIT状态主要有两个核心原因,它们是确保TCP协议可靠性的基石: 原因一:可靠地终止TCP连接(确保最后的ACK能到达对方) 这是最主要的原因。让我们回顾一下TCP四次挥手的正常流程: 1. 主动关闭方(假设为A)

By Ne0inhk
史上最全的java使用cursor开发教程!--idea+cursor 实现java双端开发--接入最新claude3.7模型

史上最全的java使用cursor开发教程!--idea+cursor 实现java双端开发--接入最新claude3.7模型

目录 * 导言: * 1.cursor工具安装 * 2.idea插件安装 * 3.claude-agent模式下一些好用的提示词 * 4.cursor的一些便捷设置 * 5.目前cursor的一些不方便的地方吐槽 导言: 由于cursor基于vscode模式开发的编译器,但是一些环境适配的不是很好,还有调试的信息显示不全,所以一般我们回idea进行代码调试,以下插件就是为了解决双端开发的问题 写代码可以在cursor上借助AI进行编程,调试在idea上 如果真的适应在cursor上调试其实也能用,但是我用的特别扭,还是建议在idea上调试 cursor调试如下图: 1.cursor工具安装 (1)Swithc2IDEA 使用快捷键alt+shfit+O 可以快速跳转到idea文件,并将代码行光标同步为cursor位置 目前这个插件可能会有bug产生,无法跳转到idea中 解决方案:在插件设置里设置idea客户端的地址 (2)Extension Pack for Java 这个是必装的,里面包含了java开发所需要的很多环境,有了它就可以让我

By Ne0inhk

【2026版】macOS 使用 Homebrew 快速安装 Java 21 教程

在 macOS 上配置 Java 环境时,很多开发者会遇到 no bottle available 或环境变量配置失效的问题。本文将介绍目前最稳定、最推荐的安装方式:使用 Homebrew Cask 安装 Eclipse Temurin。 为什么选择 Temurin? * 兼容性好:前身为 AdoptOpenJDK,是目前最主流的 OpenJDK 发行版。 * 安装简单:使用 Cask 安装会自动放入系统目录,无需手动配置繁琐的 PATH。 * 识别率高:IntelliJ IDEA、Eclipse 等 IDE 可以直接识别,无需寻找隐藏路径。 🚀 安装步骤 1. 确保 Homebrew 已更新 在安装任何新软件包之前,建议先更新 Homebrew 索引: brew

By Ne0inhk
告别 IDEA,拥抱 Trae:一位 Java 后端程序员的真实迁移体验

告别 IDEA,拥抱 Trae:一位 Java 后端程序员的真实迁移体验

作为一名常年和 Spring Boot、微服务打交道的 Java 开发者,IDEA 几乎是我过去几年的 “本命 IDE”。但最近,我彻底把主力开发环境换成了Trae。这不是跟风尝鲜,而是真实体验到效率、流畅度与 AI 能力的全面升级。 这篇文章,我用最实在的体验,告诉你Java 程序员从 IDEA 迁移到 Trae 到底值不值、怎么迁、踩过哪些坑、带来哪些爽点。 一、为什么我会从 IDEA 转向 Trae? 先说说我放弃 IDEA 的核心原因: 1. 启动慢、吃内存:项目稍大就卡,开机启动要等半天 2. 插件臃肿:很多功能用不上,却占资源 3. AI 能力弱:自带补全跟不上时代,装插件又不稳定

By Ne0inhk