import shutil from pydantic.types import NoneBytes import requests from starlette.requests import Request import datetime import oss2 import os async def get_img(keys: str) -> bool: print(f"get {keys}") url = keys headers = {'Referer': 'https://www.dmzj.com/'} response = requests.get(url=url, headers=headers, stream=True) key = keys[24:] if not key: return None 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}" 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)