Bili Images Uploader
1139 字
6 分钟
Bili Images Uploader
Bili Images Uploader
Bili Images Uploader - 将图片上传到B站图床并通过评论实现持久化存储
预言信

截图预览
功能特性
- 图片上传到B站图床(支持 JPEG、PNG、WebP、GIF、BMP)
- 多图分组上传(每组最多9张图片)
- 通过发送带图评论实现图片持久化
- 上传历史记录管理
- 图片URL有效性检查
- Token认证保护+不存储敏感信息密钥确保安全
- 支持Docker部署(多架构:amd64/arm64)
快速开始
Docker部署(推荐)
- run:
# 拉取镜像docker pull jacksen168/bili-images-uploader:latest
# 运行容器docker run -d -p 8000:8000 \ -v ./config:/app/config \ -v ./data:/app/data \ jacksen168/bili-images-uploader:latest- docker compose:
version: '3.8'services: bili-images-uploader: image: jacksen168/bili-images-uploader:latest container_name: bili-images-uploader ports: - "8000:8000" volumes: - ./config:/app/config - ./data:/app/data environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai network_mode: bridge restart: unless-stopped访问 http://localhost:8000 即可使用。
本地开发
# 克隆项目git clone https://github.com/jacksen168sub/bili-images-uploader.gitcd bili-images-uploader
# 安装依赖(使用uv)cd backenduv sync
# 启动服务uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000配置说明
首次启动
首次启动时,控制台会输出自动生成的32位Token,请妥善保存。如果丢失了你需要删除配置文件并重启服务重新生成。
B站账号配置
在Web界面中配置以下信息:
| 参数 | 说明 | 获取方式 |
|---|---|---|
| CSRF Token | B站CSRF凭证 | 登录B站后从Cookie中获取 bili_jct |
| SESSDATA | B站会话凭证 | 登录B站后从Cookie中获取 SESSDATA |
| OID | 评论目标ID | B站动态或文章的ID |
详细配置教程请参考 Wiki
使用方法
- 登录: 输入Token进行身份验证
- 配置: 在配置页面填写B站账号信息
- 上传: 拖拽或点击选择图片,支持批量上传
- 管理: 查看上传历史,复制图片URL
技术栈
- 后端: Python 3.10+ / FastAPI / uvicorn
- 前端: 原生 HTML/CSS/JavaScript (SPA)
- 数据库: SQLite
- 安全: SHA-256 Token哈希 + AES-CBC 敏感数据加密
API文档
启动服务后访问 http://localhost:8000/docs 查看Swagger API文档。
主要接口
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth | Token验证登录 |
| GET | /api/config | 获取B站配置 |
| PUT | /api/config | 更新B站配置 |
| POST | /api/upload | 上传图片 |
| GET | /api/history | 获取上传历史 |
常见问题
Token忘记了怎么办?
删除 config/config.ini 文件并重启服务,系统会重新生成Token。
图片上传失败?
- 检查B站配置是否正确
- 确认SESSDATA未过期
- 检查图片格式和大小(限制10MB)
参考文章:
有话说
尝试过模仿P5的美术后,再此被P5的美术折服。不愧于天下第一之名,很多设计都模仿不来也没那技术力还原,即使模仿过来要么阅读体验糟糕;要么兼容性雪崩。我只能尽力而为大概的模仿一下了[摊手]
- 对于按钮: 我分了普通的单色(灰色/白色)选中动效 和 主按钮的多色选中动效, 已经尽力还原了。在前端里按钮通常还会用来反馈状态,但在这套UI美术风格里,除了红黑白灰意外的其他任何颜色我觉得都会很不协调。因此就这样吧,如果你有更好的想法与技术力欢迎PR!
- 对于消息提示: 我原本想直接还原游戏内的角色对话框的,动脑思考了是通过CSS、SVG还是图片还原? 但最后考虑到这里是网页。需要考虑兼容性还要兼顾直观的状态反馈,于是放弃了。
- 对于这些标题: 我只还原了部分字体加个正方形背景框与不规则大小角度,需要的话其实还能更加还原的。
- 对于列表: 我一开始是想做成倾斜,包括内容。后面写demo时就发现这东西空间利用与极低,PC端还好放到移动端直接就不用看了 空间利用率极低还极难阅读。然后看了眼游戏存档页那个电影票一样的列表…这…还是留在游戏里吧,我是没能力搞这玩意的了,也觉得同样对于多尺寸屏幕不友好。
使用条款
当你使用本项目时及同意了本项目的使用条款: 使用条款
许可证
MIT License
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Bili Images Uploader
https://blog.jacksen168.top/posts/bili-images-uploader/ 相关文章 智能推荐
1
根据API更换Windows壁纸项目[python]
项目 根据API更换Windows壁纸项目[python]
2
python替换win10壁纸:对网上主流方法的补充
文档 python替换win10壁纸: 对网上主流方法的补充
3
关于VSCode Git GPG签名开机第一次提交失败的探究
文档 探究并解决VSCode中使用GPG签名提交Git时,开机后第一次提交报错,第二次才能正常弹出密码框的问题
4
记一起Github账号被suspended后成功找回
文档 记一起Github账号被suspended, 历时一个月后成功找回
5
SyncClipboard Android 安卓剪贴板同步
项目 Jeric-X/SyncClipboard 的 Android 客户端,支持使用 Xposed 在后台自动同步剪贴板 | Android client for Jeric-X/SyncClipboard, supports using Xposed to automatically sync the clipboard in the background
随机文章 随机推荐