POSITION_KOREAN_NAME_ENGLISH_NAME_MAPPING = {
    '탑': 'top',
    'ㅌ': 'top',
    '정글': 'jungle',
    'ㅈㄱ': 'jungle',
    '미드': 'mid',
    'ㅁㄷ': 'mid',
    '원딜': 'adc',
    'ㅇㄷ': 'adc',
    '서폿': 'support',
    'ㅅㅍ': 'support',
    '서포터': 'support',
    '.': '.'  # wildcard
}

VALID_POSITION_NAMES = set(
    list(POSITION_KOREAN_NAME_ENGLISH_NAME_MAPPING.keys()) +
    list(POSITION_KOREAN_NAME_ENGLISH_NAME_MAPPING.values())
)

CHAMPION_KOREAN_NAME_ENGLISH_NAME_MAPPING = {
    "가렌": "garen",
    "갈리오": "galio",
    "갱플랭크": "gangplank",
    "갱플": "gangplank",
    "그라가스": "gragas",
    "그레이브즈": "graves",
    "그브": "graves",
    "나르": "gnar",
    "나미": "nami",
    "나서스": "nasus",
    "노틸러스": "nautilus",
    "노틸": "nautilus",
    "녹턴": "nocturne",
    "누누와윌럼프": "nunu",
    "누누": "nunu",
    "니달리": "nidalee",
    "다리우스": "darius",
    "다리": "darius",
    "다이애나": "diana",
    "드레이븐": "draven",
    "라이즈": "ryze",
    "라칸": "rakan",
    "람머스": "rammus",
    "럭스": "lux",
    "럼블": "rumble",
    "레넥톤": "renekton",
    "레오나": "leona",
    "렉사이": "reksai",
    "렝가": "rengar",
    "루시안": "lucian",
    "룰루": "lulu",
    "르블랑": "leblanc",
    "리신": "leesin",
    "리븐": "riven",
    "리산드라": "lissandra",
    "리산": "lissandra",
    "마스터이": "masteryi",
    "마이": "masteryi",
    "마오카이": "maokai",
    "말자하": "malzahar",
    "말파이트": "malphite",
    "말파": "malphite",
    "모데카이저": "mordekaiser",
    "모데": "mordekaiser",
    "모르가나": "morgana",
    "몰가": "morgana",
    "문도박사": "drmundo",
    "문도": "drmundo",
    "미스포츈": "missfortune",
    "미포": "missfortune",
    "바드": "bard",
    "바루스": "varus",
    "바이": "vi",
    "베이가": "veigar",
    "베인": "vayne",
    "벨코즈": "velkoz",
    "볼리베어": "volibear",
    "볼베": "volibear",
    "브라움": "braum",
    "브랜드": "brand",
    "블라디미르": "vladimir",
    "블라디": "vladimir",
    "블리츠크랭크": "blitzcrank",
    "블츠": "blitzcrank",
    "빅토르": "viktor",
    "뽀삐": "poppy",
    "사이온": "sion",
    "샤코": "shaco",
    "세주아니": "sejuani",
    "세주": "sejuani",
    "소나": "sona",
    "소라카": "soraka",
    "쉔": "shen",
    "쉬바나": "shyvana",
    "스웨인": "swain",
    "스카너": "skarner",
    "시비르": "sivir",
    "신짜오": "xinzhao",
    "짜오": "xinzhao",
    "신드라": "syndra",
    "신지드": "singed",
    "쓰레쉬": "thresh",
    "아리": "ahri",
    "아무무": "amumu",
    "무무": "amumu",
    "아우렐리온솔": "aurelionsol",
    "아우솔": "aurelionsol",
    "아이번": "ivern",
    "아지르": "azir",
    "아칼리": "akali",
    "아트록스": "aatrox",
    "알리스타": "alistar",
    "알리": "alistar",
    "애니": "annie",
    "애니비아": "anivia",
    "애쉬": "ashe",
    "야스오": "yasuo",
    "에코": "ekko",
    "엘리스": "elise",
    "오공": "monkeyking",
    "오른": "ornn",
    "오리아나": "orianna",
    "오리": "orianna",
    "올라프": "olaf",
    "요릭": "yorick",
    "우디르": "udyr",
    "우르곳": "urgot",
    "워윅": "warwick",
    "이렐리아": "irelia",
    "이렐": "irelia",
    "이블린": "evelynn",
    "이즈리얼": "ezreal",
    "이즈": "ezreal",
    "일라오이": "illaoi",
    "자르반4세": "jarvaniv",
    "자르반": "jarvaniv",
    "자야": "xayah",
    "자이라": "zyra",
    "자크": "zac",
    "잔나": "janna",
    "잭스": "jax",
    "제드": "zed",
    "제라스": "xerath",
    "제이스": "jayce",
    "조이": "zoe",
    "직스": "ziggs",
    "진": "jhin",
    "질리언": "zilean",
    "징크스": "jinx",
    "초가스": "chogath",
    "카르마": "karma",
    "카밀": "camille",
    "카사딘": "kassadin",
    "카서스": "karthus",
    "카시오페아": "cassiopeia",
    "카시": "cassiopeia",
    "카이사": "kaisa",
    "카직스": "khazix",
    "카타리나": "katarina",
    "카타": "katarina",
    "칼리스타": "kalista",
    "칼리": "kalista",
    "케넨": "kennen",
    "케이틀린": "caitlyn",
    "케틀": "caitlyn",
    "케인": "kayn",
    "케일": "kayle",
    "코그모": "kogmaw",
    "코르키": "corki",
    "퀸": "quinn",
    "클레드": "kled",
    "킨드레드": "kindred",
    "타릭": "taric",
    "탈론": "talon",
    "탈리야": "taliyah",
    "탐켄치": "tahmkench",
    "트런들": "trundle",
    "트리스타나": "tristana",
    "트타": "tristana",
    "트린다미어": "tryndamere",
    "트린": "tryndamere",
    "트위스티드페이트": "twistedfate",
    "트페": "twistedfate",
    "트위치": "twitch",
    "티모": "teemo",
    "파이크": "pyke",
    "판테온": "pantheon",
    "판테": "pantheon",
    "빵테": "pantheon",
    "피들스틱": "fiddlesticks",
    "피들": "fiddlesticks",
    "피오라": "fiora",
    "피즈": "fizz",
    "하이머딩거": "heimerdinger",
    "딩거": "heimerdinger",
    "헤카림": "hecarim"
}

VALID_CHAMPION_NAMES = set(
    list(CHAMPION_KOREAN_NAME_ENGLISH_NAME_MAPPING.keys()) +
    list(CHAMPION_KOREAN_NAME_ENGLISH_NAME_MAPPING.values())
)

TERM_COLOR = {
    '정밀': '\033[33m',
    '지배': '\033[31m',
    '마법': '\033[35m',
    '결의': '\033[32m',
    '영감': '\033[36m',
    'fragment': '\033[37m'
}


if __name__ == '__main__':
    import json

    from requests import get
    from bs4 import BeautifulSoup

    host = 'http://www.op.gg/champion/statistics'
    data = get(host, headers={'Accept-Language': 'ko'}).text
    soup = BeautifulSoup(data, 'html.parser')

    mapping = {
        div.attrs['data-champion-name']: div.attrs['data-champion-key']
        for div in soup.select('div.champion-index__champion-list > div')
    }

    print(json.dumps(mapping, indent=4, ensure_ascii=False))
