from qiniu import Auth, put_file


class Qiniu(object):
    def __init__(self, time_out=1000, headers=None):
        """
        :param time_out: 超时时间
        :param headers: 请求头
        """
        self.q = Auth('wbHIPhUGq75tabnHbIpWCVvBC7c3Yt6pGG46eBZ2', 'VDb3Fhh-6LX9djR4UiXNZx7Xwk4S79fC87Kpwn-x')
        self.time_out = time_out
        self.headers = headers

    def up_file(self, file_path, file_name):
        """
        七牛云上传媒体文件
        :param content: 图片字节流数据
        :return:
        """
        try:
            # 上传到七牛后保存的文件名uuid4+后缀 拼接url
            # file_path = f"{uuid.uuid4()}.jpg"
            file_name = 'jianyexcx/{}'.format(file_name)
            token = self.q.upload_token('image', file_name, 3600)  # 3600指的是token的过期时间
            ret, info = put_file(token, file_name, file_path)
            if ret:
                # 上传成功返回地址
                # print('https://dm.static.elab-plus.com/{}'.format(file_name))
                return ret.get('key')
            else:
                print("上传失败")
                return None
        except Exception as e:
            # 上传失败返回None
            print("上传GG", e)
            return None

    def list_dir(self, text_list, dir_path):
        dir_files = os.listdir(dir_path)  # 得到该文件夹下所有的文件
        for file in dir_files:
            file_path = os.path.join(dir_path, file)  # 路径拼接成绝对路径
            print(file_path)
            if os.path.isfile(file_path):  # 如果是文件，就打印这个文件路径
                if file_path.endswith(".jpg"):
                    text_list.append(file_path)
            if os.path.isdir(file_path):  # 如果目录，就递归子目录
                self.list_dir(text_list, file_path)
        return text_list

    def image_house(self, file_path):
        header = {'image_name', 'image_url'}
        file_list = self.list_dir([], file_path)
        excel_data = []
        for file in file_list:
            (path, filename) = os.path.split(file)
            hosue_name = filename.split('.')[0]
            image_url = self.up_file(file, filename)
            excel_data.append([hosue_name, image_url])


if __name__ == '__main__':
    import os
    from file_util import FileUtil
    qiniu = Qiniu()
    file_path = r'E:\elab\建业小程序升级\10408'
    files_list = []
    files = FileUtil.load_file(file_path)
    # qiniu.image_house(file_path)
    sql_1 = 'insert into t_house_image (house_id, image_url, image_type, status, creator, created) values({}, "{}", "{}", 1, "binren", now());'
    sql_2 = 'update t_house_image set image_url = "{}" where house_id = {} and image_type = "{}";'
    sql_3 = 'delete from t_house_image where house_id = {} and image_type = "{}";'
    ids = []
    for file in files:
        file_name = os.path.split(file)[1].split('.')[0]
        name_info = file_name.split('_')
        house_id = int(name_info[0])
        image_type = name_info[1]
        # if house_id not in ids:
        #     ids.append(house_id)
        url = qiniu.up_file(file, file_name)
        print(sql_3.format(house_id, image_type))
        print(sql_1.format(house_id, 'https://dm.static.elab-plus.com/{}'.format(url), image_type))
