# @Time : 2023/8/13 19:54 # @Author : Lan # @File : utils.py # @Software: PyCharm import datetime import hashlib import random import string import time from apps.base.depends import IPRateLimit async def get_random_num(): """ 获取随机数 :return: """ return random.randint(10000, 99999) r_s = string.ascii_uppercase + string.digits async def get_random_string(): """ 获取随机字符串 :return: """ return ''.join(random.choice(r_s) for _ in range(5)) async def get_now(): """ 获取当前时间 :return: """ return datetime.datetime.now( datetime.timezone(datetime.timedelta(hours=8)) ) async def get_select_token(code: str): """ 获取下载token :param code: :return: """ token = "123456" return hashlib.sha256(f"{code}{int(time.time() / 1000)}000{token}".encode()).hexdigest() async def get_file_url(code: str): """ 对于需要通过服务器中转下载的服务,获取文件下载地址 :param code: :return: """ return f'/share/download?key={await get_select_token(code)}&code={code}' async def max_save_times_desc(max_save_seconds: int): """ 获取最大保存时间的描述 :param max_save_seconds: :return: """ def gen_desc_zh(value: int, desc: str): if value > 0: return f'{value}{desc}' else: return '' def gen_desc_en(value: int, desc: str): if value > 0: ret = f'{value} {desc}' if value > 1: ret += 's' ret += ' ' return ret else: return '' max_timedelta = datetime.timedelta(seconds=max_save_seconds) desc_zh, desc_en = '最长保存时间:', 'Max save time: ' desc_zh += gen_desc_zh(max_timedelta.days, '天') desc_en += gen_desc_en(max_timedelta.days, 'day') desc_zh += gen_desc_zh(max_timedelta.seconds // 3600, '小时') desc_en += gen_desc_en(max_timedelta.seconds // 3600, 'hour') desc_zh += gen_desc_zh(max_timedelta.seconds % 3600 // 60, '分钟') desc_en += gen_desc_en(max_timedelta.seconds % 3600 // 60, 'minute') desc_zh += gen_desc_zh(max_timedelta.seconds % 60, '秒') desc_en += gen_desc_en(max_timedelta.seconds % 60, 'second') return desc_zh, desc_en