Skip to content

XingWo/skyblessings-python-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

光遇祈福签 API - Python 版本

python版细节更还原,逻辑更准确,go版相应更快,延迟更小

原始项目(HTML+JQUERY版本): https://github.com/XingWo/skyblessings

光遇祈福签 API - Python 版本:https://github.com/XingWo/skyblessings-python-api

光遇祈福签 API - Go 版本:https://github.com/XingWo/skyblessings-go-api

基于 FastAPI + Pillow 实现的sky祈福签图片生成 API

如需部署和使用请标注和支持,谢谢

技术栈

  • Python: 3.12+
  • FastAPI: Web 框架
  • Pillow: 图像处理
  • Uvicorn: ASGI 服务器
  • TOML: 配置文件解析

快速开始

1. 安装依赖

# 创建虚拟环境
python -m venv venv  # Windows
python3 -m venv venv  # Linux/macOS

# 激活虚拟环境 并打印一下解释器路径 确保虚拟环境激活
.\venv\Scripts\activate  # Windows
Get-Command python # Windows PowerShell
source venv/bin/activate  # Linux/macOS
which python # Linux bash

# 安装依赖
pip install fastapi uvicorn pillow python-multipart toml
pip install -r ./requirements.txt

2. 配置文件

编辑 config.toml:

[server]
host = "0.0.0.0"
port = 51205
log_level = "debug"  # "info" 或 "debug"

[image]
width = 1240
height = 620
font_size = 40
assets_dir = "../assets"  # assets_dir可能需要替换为具体assets地址

3. 运行服务

cd src
python main.py

或使用 uvicorn 直接运行:

cd src
uvicorn main:app --host 0.0.0.0 --port 51205
# --reload可选
uvicorn main:app --host 0.0.0.0 --port 51205 --reload

4. 访问 API

项目结构

skyblessings-fastapi-pillow/
├── assets/              # 资源文件
│   ├── font/           # 字体文件
│   │   └── LXGWWenKaiMono-Medium.ttf
│   └── image/          # 图片资源
│       ├── background.png       # 遮罩图
│       ├── background0-5.png    # 装饰背景
│       └── text0-4.png          # 签文图片
├── src/                # 源代码
│   ├── main.py         # FastAPI 主应用
│   ├── render.py       # 图片渲染逻辑
│   └── draw_data.py    # 祝福数据
├── venv/               # Python 虚拟环境
├── config.toml         # 配置文件
└── README.md           # 说明文档

API 端点

GET /

返回 API 信息

响应示例:

{
  "name": "祈福签 API",
  "version": "1.0.0",
  "endpoints": {
    "/": "API 信息",
    "/blessing": "获取随机祈福签图片(PNG)"
  },"blessing_image_and_text":{
    "background_image":"background2.png",
    "text_image":"text2.png",
    "text_label":"小吉",
    "dordas":"结缘物:鱼",
    "dordas_color":"缘彩:竹月",
    "color_hex":"#7d99a9",
    "blessing":"伞一直在,记得避雨。",
    "entry":"忌:口是心非",
    "image_base64":"......"
  }
}

GET /blessing

生成并返回随机祈福签图片

响应类型: image/png

调试输出(log_level=debug 时):

--- 抽签结果 ---
抽中:  大吉;结缘物:心火;缘彩:雪青;东风满斟,万事顺遂。 宜:出游
--------------------------

配置说明

[server]

  • host: 监听地址(默认 0.0.0.0
  • port: 监听端口(默认 51205
  • log_level: 日志级别(infodebug

[image]

  • width: 图片宽度(默认 1240
  • height: 图片高度(默认 620
  • font_size: 字体大小(默认 40
  • assets_dir: 资源文件夹路径

性能

  • 响应时间: 约 50-150ms
  • 内存占用: 约 100-200MB
  • 并发支持: FastAPI 异步处理

故障排查

字体加载失败

如果提示字体加载失败,检查:

  1. assets/font/LXGWWenKaiMono-Medium.ttf 文件是否存在
  2. config.tomlassets_dir 路径是否正确

图片渲染错误

如果生成的图片颜色不对:

  1. 检查 assets/image/ 目录下所有 PNG 文件是否完整
  2. 查看日志中的错误信息

端口被占用

修改 config.toml 中的 port 值,或停止占用端口的进程:

# 查找占用端口的进程
netstat -ano | findstr :51205 # Windows PowerShell
sudo lsof -i :51205 # Linux bash

# 结束进程
taskkill /PID <进程ID> /F # Windows PowerShell
sudo kill -9 <进程ID> # Linux bash

作者:哔哩哔哩by:星沃 (UID:398932457)

协助者大佬:哔哩哔哩by:VincentZyu (UID:34318934)

About

光遇祈福签 API - Python 版本

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages