랜덤채팅 채널

# 랜덤부분 귀찮아서 대충만들었다
# imports
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
import time
import random
# define bcolor for usgae
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKCYAN = '\033[96m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'


opts = FirefoxOptions()
opts.add_argument("--headless") # headless mode for displayless ubuntu servers.

# options to look like human
opts.add_argument("disable-gpu")
opts.add_argument("lang=ko_KR")
opts.add_argument('Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36')


# generates browser
browser = webdriver.Firefox(options=opts)


while 1==1: # infinite loop
    browser.get("https://arca.live/b/random") # get random chatting page
    print(f"{bcolors.OKGREEN}{bcolors.BOLD}[Selenium]{bcolors.ENDC}{bcolors.OKBLUE} Connection with page successful. Waiting for load..\n{bcolors.ENDC}") # log
    time.sleep(3) # wait for load
    # print(browser.page_source) # debug code
    print(f"{bcolors.OKGREEN}{bcolors.BOLD}[Selenium]{bcolors.ENDC}{bcolors.WARNING} Finding Connect Button Element..\n{bcolors.ENDC}") # log
    button = browser.find_element_by_xpath("/html/body/div[2]/div[3]/article/div[1]/div/div[4]/button") # get button element
    button.click() # click to connect
    time.sleep(3) # wait for load
    # print(browser.page_source) # debug code
    check = browser.find_element_by_xpath("/html/body/div[2]/div[3]/article/div[1]/div/div[3]") # get div
    while check.get_attribute("style")=="display: none;":
        time.sleep(0.25)
    # print(browser.page_source)
    print(f"{bcolors.OKGREEN}{bcolors.BOLD}[Selenium]{bcolors.ENDC}{bcolors.OKBLUE} Connection Successful!\n{bcolors.ENDC}")
    inputbox = browser.find_element_by_xpath("/html/body/div[2]/div[3]/article/div[1]/div/div[3]/div/input") # get input element
    sendbtn = browser.find_element_by_xpath("/html/body/div[2]/div[3]/article/div[1]/div/div[3]/button")
    inputbox.send_keys("아카라이브 도우미봇 (유저가 만듬) 시험 가동 중입니다.")
    sendbtn.click()
    time.sleep(0.5)
    inputbox.send_keys("온도계 추천은 1, 나무게임 추천은 2,  채팅 종료는 3 또는 exit을 입력해 주세요.")
    sendbtn.click()
    chatdiv = browser.find_element_by_xpath("/html/body/div[2]/div[3]/article/div[1]/div/div[2]")
    child = chatdiv.find_elements_by_tag_name("div")
    cnt = len(child)
    while check.get_attribute("style")=="display: block;":
        child = chatdiv.find_elements_by_tag_name("div")
        if len(child) > cnt:
            gotstr=child[cnt].get_attribute('innerHTML')[45:]
            print("got> "+gotstr)
            if gotstr == "1":
                inputbox.send_keys("예상 온도는 "+str(random.randrange(1,100))+"°C 입니다. 다만 너무 맹신하지 마세요.")
                sendbtn.click()
            elif gotstr == "2":
                inputbox.send_keys("예상 번호는 "+str(random.randrange(1,6))+"번 입니다. 다만 너무 맹신하지 마세요.")
                sendbtn.click()
            elif gotstr == "exit" or gotstr == "3":
                exitbtn = browser.find_element_by_xpath("/html/body/div[2]/div[3]/article/div[1]/div/div[1]/button")
                exitbtn.click()
                time.sleep(0.25)
                break
            else:
                inputbox.send_keys("잘못된 번호 입니다.")
                sendbtn.click()
            time.sleep(0.5)
            inputbox.send_keys("온도계 추천은 1, 나무게임 추천은 2, 채팅 종료는 exit을 입력해 주세요.")
            sendbtn.click()
            child = chatdiv.find_elements_by_tag_name("div")
            cnt = len(child)
        else:
            time.sleep(0.25)

    # print(browser.page_source)
    print("Connection Ended")

browser.quit()