diff --git a/config/config.py b/config/config.py index 75dce58..d751bd8 100644 --- a/config/config.py +++ b/config/config.py @@ -11,13 +11,10 @@ class Settings(BaseSettings): items_per_user: int = 50 is_debug: bool = True - redis_host: str = "192.168.100.30" # reids 服务器IP + redis_host: str = "10.10.3.10" # reids 服务器IP redis_port: int = 6379 # redis 端口 - redis_db: int = 2 # redis db + redis_db: int = 4 # redis db - mail_server: str = "smtp.exmail.qq.com" # 邮箱server - mail_user: str = "ops@kingsome.cn" # 邮箱用户名 - mail_pswd: Optional[str] = os.getenv('mail_pswd') # 邮箱密码 x_token: str = "abc" diff --git a/ops/imgsmall/route.py b/ops/imgsmall/route.py index 34a9727..83af897 100644 --- a/ops/imgsmall/route.py +++ b/ops/imgsmall/route.py @@ -4,39 +4,19 @@ from pydantic import BaseModel from starlette.requests import Request from starlette.responses import JSONResponse from config.config import settings +from scritps.common.get_img import get_img router = APIRouter() + + @router.get("/img") -async def get_img(url:string)-> JSONResponse: - - -# class EmailSchema(BaseModel): -# email: List[EmailStr] -# body: str -# subject: str - - -# MAIL_CONF = ConnectionConfig( -# MAIL_USERNAME=settings.mail_user, -# MAIL_PASSWORD=settings.mail_pswd, -# MAIL_FROM=settings.mail_user, -# MAIL_PORT='465', -# MAIL_SERVER=settings.mail_server, -# MAIL_TLS=False, -# MAIL_SSL=True, -# # USE_CREDENTIALS=True -# ) - - -@router.post("/email") -async def simple_send(email: EmailSchema) -> JSONResponse: - message = MessageSchema( - subject=email.dict().get("subject"), - # List of recipients, as many as you can pass - recipients=email.dict().get("email"), - body="{}".format(email.dict().get("body")), - subtype="html" - ) - fm = FastMail(MAIL_CONF) - await fm.send_message(message) - return JSONResponse(status_code=200, content={"message": "email has been sent"}) +async def get_img(request: Request,url:str)-> JSONResponse: + key=url[24:] + redis_client = request.app.state.redis + values=await redis_client.get(key) + if values: + return {"url": values} + else: + vv=await get_img(key) + return {"url": vv} + \ No newline at end of file diff --git a/scripts/common/get_img.py b/scripts/common/get_img.py index 0b59dd2..682bd3e 100644 --- a/scripts/common/get_img.py +++ b/scripts/common/get_img.py @@ -1,9 +1,40 @@ import shutil import requests -def get_img(url): - url = 'http://imgsmall.dmzj.com/h/59665/121592/0.jpg' +from starlette.requests import Request +import datetime +import oss2 +import os + +async def get_img(request:Request,key:str)->bool: + url = f'http://imgsmall.dmzj.com/{key}' headers = {'Referer': 'https://www.dmzj.com/'} response = requests.get(url=url, headers=headers, stream=True) - with open('0.jpg', 'wb') as out_file: + name=key.split('/')[-1] + paths='/'.join(key.split('/')[:-1]) + project='imgsmall' + now=datetime.datetime.strftime(datetime.datetime.now(),"%Y%m%d%H%M%S") + local_filename=f"/tmp/{now}_{name}" + with open(local_filename, 'wb') as out_file: shutil.copyfileobj(response.raw, out_file) del response + remote_filename=f"{[project]}/{paths}/{name}" + await simple_upload(local_filename,remote_filename) + remote_url=f"https://h5games-al.kingsome.cn/{remote_filename}" + redis_client = request.app.state.redis + await redis_client.set(url,remote_url) + return remote_url + + +async def simple_upload(local_filename,remote_filename): + AccessKeyId = os.environ.get('ALI_ACCESS_KEY_ID') + AccessKeySecret = os.environ.get('ALI_ACCESS_KEY_SECRET') + Endpoint = 'oss-cn-shanghai.aliyuncs.com' + BucketName = 'h5games-kingsome' + auth = oss2.Auth(AccessKeyId, AccessKeySecret) + bucket = oss2.Bucket(auth, Endpoint, BucketName) + bucket.put_object_from_file(remote_filename, local_filename) + + +async def write_redis(request:Request,key,values): + redis_client = request.app.state.redis + await redis_client.set(key,values)