import os


class BaseConfig(object):
    """基础配置"""
    # 飞书应用凭证
    FEISHU_TOKEN = {
        'app_id': 'cli_a3667697a57b500e',
        'app_secret': '5eMszgeNt21U56XnPjCykgmTfZUEEMnp'
    }
    # 电子表格信息
    SHEET_INFO = {
        '汉语常用词汇表': {
            'spreadsheet_token': 'shtcnU8JgPeMq5wAuKejptwtLof',
            'sheet_id': 'wnB24K'
        },
        '微信指数自动化搜索-站内标题分词结果': {
            'spreadsheet_token': 'shtcnHxCj6dZBYMuK1Q3tIJVlqg',
            'sheet_id': 'nCudsM'
        },
        '微信指数自动化搜索-人工标注站内高频关键词': {
            'spreadsheet_token': 'shtcnHxCj6dZBYMuK1Q3tIJVlqg',
            'sheet_id': 'n9Jo4j'
        },
        '微信指数自动化搜索-每日关键词': {
            'spreadsheet_token': 'shtcnHxCj6dZBYMuK1Q3tIJVlqg',
            'sheet_id': 'b74YMQ'
        },
    }

    # mysql数据表
    MYSQL_TABLES = {
        '热点词库': 'hot_word',
        '热词指数': 'word_wechat_score',
        '分词结果': 'cut_words_result'
    }

    # ODPS服务配置
    ODPS_CONFIG = {
        'ENDPOINT': 'http://service.cn.maxcompute.aliyun.com/api',
        'ACCESSID': 'LTAIWYUujJAm7CbH',
        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
    }

    # 站内外标题数据表
    TITLE_DATA = {
        'project': 'loghubods',
        'table': 'crawler_hot_title_1'
    }


class DevelopmentConfig(BaseConfig):
    """开发环境配置"""
    # 报警内容 环境区分
    ENV_TEXT = "开发环境"
    # 项目存放目录
    PROJECT_PATH = '/data2/hot-words'

    # 测试环境mysql地址
    MYSQL_INFO = {
        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'wx2016_longvideo',
        'password': 'wx2016_longvideoP@assword1234',
        'db': 'word',
        'charset': 'utf8mb4'
    }

    # 日志服务配置
    ALIYUN_LOG = {
        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
        'ACCESSID': 'LTAIWYUujJAm7CbH',
        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
        'PROJECT': 'hot-words-test',
    }


class TestConfig(BaseConfig):
    """测试环境配置"""
    # 报警内容 环境区分
    ENV_TEXT = "测试环境"
    # 项目存放目录
    PROJECT_PATH = '/data2/hot-words'

    # 测试环境mysql地址
    MYSQL_INFO = {
        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'wx2016_longvideo',
        'password': 'wx2016_longvideoP@assword1234',
        'db': 'word',
        'charset': 'utf8mb4'
    }

    # 日志服务配置
    ALIYUN_LOG = {
        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
        'ACCESSID': 'LTAIWYUujJAm7CbH',
        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
        'PROJECT': 'hot-words-test',
    }


class PreProductionConfig(BaseConfig):
    """预发布环境配置"""
    # 报警内容 环境区分
    ENV_TEXT = "预发布环境"
    # 项目存放目录
    PROJECT_PATH = '/data/hot-words'

    # 生产环境mysql地址
    MYSQL_INFO = {
        'host': 'rm-bp1661607875x9596.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'word',
        'password': 'Piaoquan123@',
        'db': 'word',
        'charset': 'utf8mb4'
    }

    # 日志服务配置
    ALIYUN_LOG = {
        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
        'ACCESSID': 'LTAIWYUujJAm7CbH',
        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
        'PROJECT': 'hot-words',
    }


class ProductionConfig(BaseConfig):
    """生产环境配置"""
    # 报警内容 环境区分
    ENV_TEXT = "生产环境"
    # 项目存放目录
    PROJECT_PATH = '/data/hot-words'

    # 生产环境mysql地址
    MYSQL_INFO = {
        'host': 'rm-bp1661607875x9596.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'word',
        'password': 'Piaoquan123@',
        'db': 'word',
        'charset': 'utf8mb4'
    }

    # 日志服务配置
    ALIYUN_LOG = {
        'ENDPOINT': 'cn-hangzhou.log.aliyuncs.com',
        'ACCESSID': 'LTAIWYUujJAm7CbH',
        'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
        'PROJECT': 'hot-words',
    }


def set_config():
    # 获取环境变量 HOT_WORDS_ENV
    env = os.environ.get('HOT_WORDS_ENV')
    # env = 'dev'
    if env is None:
        # log_.error('ENV ERROR: is None!')
        return
    if env == 'dev':
        return DevelopmentConfig(), env
    elif env == 'test':
        return TestConfig(), env
    elif env == 'pre':
        return PreProductionConfig(), env
    elif env == 'pro':
        return ProductionConfig(), env
    else:
        # log_.error('ENV ERROR: is {}'.format(env))
        return