컴퓨터/Python

python 셀레니움 headless 실행 중 다른 동영상 보여주는 코드

풍경소리^^ 2024. 12. 26. 16:51
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import win32api
import win32con
import threading

# www.hometax.go.kr 작업 함수
def hometax_task():
    options = Options()
    options.add_argument("--start-maximized")
    # options.add_argument("--headless=new")  # headless 옵션
    options.add_experimental_option("detach", True)  # selenium 사용 중 브라우저 종료 방지

    driver = webdriver.Chrome(options=options)
    # 브라우저를 화면 밖으로 이동시키기 (윈도우에서 보이지 않게 설정)
    # driver.set_window_position(-1000, 0)  # 브라우저를 화면 밖 좌표로 이동

    url = 'https://www.hometax.go.kr'
    driver.get(url)
    time.sleep(5)

    # www.hometax.go.kr에서의 작업 (예시)
    # 예: 로그인, 데이터 가져오기 등
    time.sleep(10)  # 작업 중 대기
    
    # 작업 완료 후 브라우저 종료
    driver.quit()
    
    # 작업 완료 이벤트를 전달하기 위한 메시지 박스
    win32api.MessageBox(0, "www.hometax.go.kr 작업 완료!", "작업 완료")

# 유튜브 동영상 실행 및 제어 함수
def youtube_task(stop_event):
    options = Options()
    options.add_argument("--start-maximized")
    # options.add_argument("--headless=new")  # headless 옵션
    options.add_experimental_option("detach", True)  # selenium 사용 중 브라우저 종료 방지

    driver = webdriver.Chrome(options=options)
    url = 'https://www.youtube.com/watch?v=example'  # 동영상이 있는 유튜브 URL
    driver.get(url)
    time.sleep(5)

    # 동영상 실행 (유튜브에서는 자동으로 실행되므로 별도 코드 불필요)

    # stop_event가 설정될 때까지 대기
    while not stop_event.is_set():
        time.sleep(1)

    # stop_event가 설정되면 동영상 멈춤
    video_element = driver.find_element_by_css_selector('video')
    driver.execute_script("arguments[0].pause();", video_element)
    
    # 파일 생성 완료 메시지 박스
    win32api.MessageBox(0, "통합파일 생성 완료!", "파일 생성")

    # 드라이버 종료
    driver.quit()

# 이벤트 생성
stop_event = threading.Event()

# 스레드 생성 및 실행
hometax_thread = threading.Thread(target=hometax_task)
youtube_thread = threading.Thread(target=youtube_task, args=(stop_event,))

hometax_thread.start()
youtube_thread.start()

# www.hometax.go.kr 작업이 완료되면 stop_event 설정
hometax_thread.join()
stop_event.set()

youtube_thread.join()