This commit is contained in:
root 2021-11-22 15:57:20 +08:00
parent af748247c5
commit 078307787e
4 changed files with 33 additions and 26 deletions

View File

View File

@ -69,7 +69,6 @@ async def root(request: Request):
return {"message": "kajsk"} return {"message": "kajsk"}
# @app.post("/send-notification/{email}") # @app.post("/send-notification/{email}")
# async def send_notification(request: Request, email: str, background_tasks: BackgroundTasks, q: str = Depends(get_query)): # async def send_notification(request: Request, email: str, background_tasks: BackgroundTasks, q: str = Depends(get_query)):
# redis_client = request.app.state.redis # redis_client = request.app.state.redis
@ -82,5 +81,5 @@ async def root(request: Request):
if __name__ == '__main__': if __name__ == '__main__':
import uvicorn import uvicorn
uvicorn.run(app='main:app', host="127.0.0.1", uvicorn.run(app='main:app', host="0.0.0.0",
port=8010, reload=True, debug=True) port=8020, reload=True, debug=True)

View File

@ -9,12 +9,15 @@ router = APIRouter()
@router.get("/img") @router.get("/img")
async def get_img(request: Request, url: str) -> JSONResponse: async def get_imgs(request: Request, keys: str) -> JSONResponse:
key = url[24:]
redis_client = request.app.state.redis redis_client = request.app.state.redis
values = await redis_client.get(key) values = await redis_client.get(keys)
print(keys, values)
if values: if values:
print(f"get {keys}")
return {"url": values} return {"url": values}
else: else:
vv = await get_img(key) print(f"new down {keys}")
vv = await get_img(keys)
await redis_client.set(keys, vv)
return {"url": vv} return {"url": vv}

View File

@ -1,40 +1,45 @@
import shutil import shutil
from pydantic.types import NoneBytes
import requests import requests
from starlette.requests import Request from starlette.requests import Request
import datetime import datetime
import oss2 import oss2
import os import os
async def get_img(request:Request,key:str)->bool:
url = f'http://imgsmall.dmzj.com/{key}' async def get_img(keys: str) -> bool:
print(f"get {keys}")
url = keys
headers = {'Referer': 'https://www.dmzj.com/'} headers = {'Referer': 'https://www.dmzj.com/'}
response = requests.get(url=url, headers=headers, stream=True) response = requests.get(url=url, headers=headers, stream=True)
name=key.split('/')[-1] key = keys[24:]
paths='/'.join(key.split('/')[:-1]) if not key:
project='imgsmall' return None
now=datetime.datetime.strftime(datetime.datetime.now(),"%Y%m%d%H%M%S") name = key.split('/')[-1]
local_filename=f"/tmp/{now}_{name}" 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: with open(local_filename, 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file) shutil.copyfileobj(response.raw, out_file)
del response del response
remote_filename=f"{[project]}/{paths}/{name}" remote_filename = f"{project}{paths}/{name}"
await simple_upload(local_filename,remote_filename) await simple_upload(local_filename, remote_filename)
remote_url=f"https://h5games-al.kingsome.cn/{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): return remote_url
async def simple_upload(local_filename, remote_filename):
AccessKeyId = os.environ.get('ALI_ACCESS_KEY_ID') AccessKeyId = os.environ.get('ALI_ACCESS_KEY_ID')
AccessKeySecret = os.environ.get('ALI_ACCESS_KEY_SECRET') AccessKeySecret = os.environ.get('ALI_ACCESS_KEY_SECRET')
Endpoint = 'oss-cn-shanghai.aliyuncs.com' Endpoint = 'oss-cn-shanghai.aliyuncs.com'
BucketName = 'h5games-kingsome' BucketName = 'h5games-kingsome'
auth = oss2.Auth(AccessKeyId, AccessKeySecret) auth = oss2.Auth(AccessKeyId, AccessKeySecret)
bucket = oss2.Bucket(auth, Endpoint, BucketName) bucket = oss2.Bucket(auth, Endpoint, BucketName)
bucket.put_object_from_file(remote_filename, local_filename) bucket.put_object_from_file(remote_filename, local_filename)
async def write_redis(request:Request,key,values):
async def write_redis(request: Request, key, values):
redis_client = request.app.state.redis redis_client = request.app.state.redis
await redis_client.set(key,values) await redis_client.set(key, values)