Files
GLASSES_AI_SERVER/rest/app/routes/services.py
2025-03-18 13:05:31 +09:00

149 lines
5.2 KiB
Python

# -*- coding: utf-8 -*-
"""
@File: services.py
@Date: 2020-09-14
@author: A2TEC
@section MODIFYINFO 수정정보
- 수정자/수정일 : 수정내역
- 2022-01-14/hsj100@a2tec.co.kr : refactoring
@brief: services api
"""
import requests, json, traceback
from fastapi import APIRouter, Depends, Body
from starlette.requests import Request
from typing import Annotated, List
from rest.app.common import consts
from rest.app import models as M
from rest.app.utils.date_utils import D
from custom_logger.custom_log import custom_logger as LOG
from custom_apps.bingimagecreator.utils import DallEArgument,dalle3_generate_image
from custom_apps.bingart.bingart import BingArtGenerator
from custom_apps.imagen.custom_imagen import imagen_generate_image
from rest.app.utils.parsing_utils import download_range
from custom_apps.utils import cookie_manager
router = APIRouter(prefix="/services")
@router.post("/bing/cookie/set", summary="bing 관련 쿠키 set", response_model=M.BingCookieSetRes)
async def bing_cookie_set(request: Request, request_body_info: M.BingCookieSetReq):
"""
## Bing cookie set
> 쿠키정보 set
## 정보
> cookie 값이 빈 값일경우 쿠키정보를 set 하지 않고 현재 쿠키값 return 함
> cookie 값이 정상 쿠키 인지는 확인안함
"""
response = M.BingCookieSetRes()
try:
if len(request_body_info.cookie) == 0:
pass
else:
cookie_manager.set_cookie(request_body_info.cookie)
return response.set_message(current_cookie=cookie_manager.get_cookie())
except Exception as e:
LOG.error(traceback.format_exc())
return response.set_error(e,current_cookie=cookie_manager.get_cookie())
@router.post("/imageGenerate/bingimg", summary="이미지 생성(AI) - bing image generator (DALL-E 3)", response_model=M.ImageGenerateRes)
async def bing_img_generate(request: Request, request_body_info: M.ImageGenerateReq):
"""
## 이미지 생성(AI) - bing image generator (DALL-E 3)
> bing image generator를 이용하여 이미지 생성
### Requriements
## 정보
> 오류 발생시 오류 발생한 파일은 에러 메세지에만 남기고 저장은 안함
> *동작 안함.
"""
response = M.ImageGenerateRes()
try:
if not download_range(request_body_info.downloadCount):
raise Exception(f"downloadCount is 1~4 (current value = {request_body_info.downloadCount})")
args = DallEArgument(
prompt=request_body_info.prompt,
download_count=request_body_info.downloadCount
)
info = dalle3_generate_image(args)
if info.get_error_messages():
error_message = f"파일생성 error: {info.get_error_messages()}"
LOG.error(error_message)
return response.set_error(error=error_message, img_len=info.get_counter())
return response.set_message(img_len=info.get_counter())
except Exception as e:
LOG.error(traceback.format_exc())
return response.set_error(e)
@router.post("/imageGenerate/bingart", summary="이미지 생성(AI) - bing art (DALL-E 3)", response_model=M.ImageGenerateRes)
async def bing_art(request: Request, request_body_info: M.ImageGenerateReq):
"""
## 이미지 생성(AI) - bing art (DALL-E 3)
> bing art를 이용하여 이미지 생성
### Requriements
## 정보
> 오류 발생시 오류 발생한 파일은 에러 메세지에만 남기고 저장은 안함
> *동작 안함.
"""
response = M.ImageGenerateRes()
try:
if not download_range(request_body_info.downloadCount):
raise Exception(f"downloadCount is 1~4 (current value = {request_body_info.downloadCount})")
bing_art = BingArtGenerator()
info = bing_art.get_images(prompt=request_body_info.prompt,image_len=request_body_info.downloadCount)
return response.set_message(img_len=info)
except Exception as e:
LOG.error(traceback.format_exc())
return response.set_error(e)
@router.post("/imageGenerate/imagen", summary="이미지 생성(AI) - imagen", response_model=M.ImageGenerateRes)
async def imagen(request: Request, request_body_info: M.ImageGenerateReq):
"""
## 이미지 생성(AI) - imagen
> imagen AI를 이용하여 이미지 생성
### Requriements
> - googlecli 설치(https://cloud.google.com/sdk/docs/install?hl=ko#linux)
> - const.py 에 지정한 OUTPUT_FOLDER 하위에 imagen 폴더가 있어야함.
"""
response = M.ImageGenerateRes()
try:
if not download_range(request_body_info.downloadCount):
raise Exception(f"downloadCount is 1~4 (current value = {request_body_info.downloadCount})")
img_length = imagen_generate_image(prompt=request_body_info.prompt,
download_count=request_body_info.downloadCount
)
return response.set_message(img_len=img_length)
except Exception as e:
LOG.error(traceback.format_exc())
return response.set_error(error=e)