42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.responses import Response
|
|
|
|
from favicon_app.routes import favicon_router
|
|
from favicon_app.utils.file_util import FileUtil
|
|
|
|
logging.basicConfig(level=logging.INFO,
|
|
format='[%(levelname)-7s] %(asctime)s -[%(filename)-10.10s:%(lineno)4d] %(message)s',
|
|
filename='favicon-app.log')
|
|
|
|
# 获取当前所在目录
|
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
sys.path.append(os.path.dirname(current_dir))
|
|
# 站点的 favicon.ico 图标
|
|
favicon_icon_file = FileUtil.read_file(os.path.join(current_dir, 'favicon.ico'), mode='rb')
|
|
# 默认的站点图标
|
|
default_icon_file = FileUtil.read_file(os.path.join(current_dir, 'favicon.png'), mode='rb')
|
|
|
|
# fastapi
|
|
app = FastAPI(title="Favicon API", description="获取网站favicon图标")
|
|
app.include_router(favicon_router)
|
|
|
|
|
|
@app.get("/")
|
|
async def root():
|
|
return {"message": "Welcome to Favicon API! Use /icon/?url=example.com to get favicon."}
|
|
|
|
|
|
@app.get("/favicon.ico")
|
|
async def favicon_ico():
|
|
return Response(content=favicon_icon_file, media_type="image/x-icon")
|
|
|
|
|
|
@app.get("/favicon.png")
|
|
async def favicon_png():
|
|
return Response(content=default_icon_file, media_type="image/png")
|