侧边栏壁纸
博主头像
YOUZI

我依旧在追寻自由的路上

  • 累计撰写 85 篇文章
  • 累计创建 10 个分类
  • 累计创建 27 个标签

目 录CONTENT

文章目录

随机图API升级版

柚子
原创 / 2024-09-04 / 0 评论 / 1 点赞 / 27 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响您的利益,请联系 站长 删除。

前言

前文:随机图API

以PC/PE拓展为例,添加网站favicon。

代码

from flask import Flask, send_file, send_from_directory, jsonify
import os
import random

app = Flask(__name__)

# 指定图片文件夹路径
pixiv_images_dir = 'images/pixiv'
pc_images_dir = 'images/pc'
pe_images_dir = 'images/pe'

# 获取随机 Pixiv 图片
@app.route('/api/images/pixiv', methods=['GET'])
def random_pixiv_image():
    return get_random_image(pixiv_images_dir)

# 获取随机 PC 图片
@app.route('/api/images/pc', methods=['GET'])
def random_pc_image():
    return get_random_image(pc_images_dir)

# 获取随机 PE 图片
@app.route('/api/images/pe', methods=['GET'])
def random_pe_image():
    return get_random_image(pe_images_dir)

def get_random_image(images_dir):
    try:
        images = [f for f in os.listdir(images_dir) if f.endswith(('.jpg', '.jpeg', '.png', '.webp'))]
        if not images:
            return jsonify({'error': '没有找到图片'}), 404

        random_image = random.choice(images)
        return send_file(os.path.join(images_dir, random_image), mimetype='image/jpeg')
    except Exception as e:
        return jsonify({'error': str(e)}), 500

# 提供 favicon.ico
@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'favicon'), 'favicon.ico', mimetype='image/vnd.microsoft.icon')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

体验

地址:

PC随机图

PE随机图

PIXIV随机图

仅用作测试,没做整理、图片不多。

拓展

制作成docker镜像

创建一个app.py 文件

from flask import Flask, send_file, send_from_directory, jsonify
import os
import random

app = Flask(__name__)

# 指定图片文件夹路径
pixiv_images_dir = 'images/pixiv'
pc_images_dir = 'images/pc'
pe_images_dir = 'images/pe'

# 获取随机 Pixiv 图片
@app.route('/api/images/pixiv', methods=['GET'])
def random_pixiv_image():
    return get_random_image(pixiv_images_dir)

# 获取随机 PC 图片
@app.route('/api/images/pc', methods=['GET'])
def random_pc_image():
    return get_random_image(pc_images_dir)

# 获取随机 PE 图片
@app.route('/api/images/pe', methods=['GET'])
def random_pe_image():
    return get_random_image(pe_images_dir)

def get_random_image(images_dir):
    try:
        images = [f for f in os.listdir(images_dir) if f.endswith(('.jpg', '.jpeg', '.png', '.webp'))]
        if not images:
            return jsonify({'error': '没有找到图片'}), 404

        random_image = random.choice(images)
        return send_file(os.path.join(images_dir, random_image), mimetype='image/jpeg')
    except Exception as e:
        return jsonify({'error': str(e)}), 500

# 提供 favicon.ico
@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'favicon'), 'favicon.ico', mimetype='image/vnd.microsoft.icon')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

创建一个rely.txt文件,添加下面内容

Flask

创建一个favicon文件夹,将favicon.ico放进去

mkdir favicon

创建dockerfile文件

# 使用官方 Python 镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /usr/src/app

# 复制项目文件
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r rely.txt

# 暴露端口
EXPOSE 5000

# 启动应用
CMD ["python", "app.py"]

构建镜像

docker build -t random-image-api .

构建容器

docker run \
  -name random-image-api \
  -p 5000:5000 \
  -v /images-path/pixiv:/usr/src/app/images/pixiv \
  -v /images-path/pc:/usr/src/app/images/pc \
  -v /images-path/pc:/usr/src/app/images/pc \
  random-image-api

1

评论区