toggle_stats 수정 중
This commit is contained in:
parent
93c9609d40
commit
2f94b6e02b
|
|
@ -1053,13 +1053,14 @@ class BrowserController(QThread):
|
||||||
await self.scroll_page_to_top()
|
await self.scroll_page_to_top()
|
||||||
self.logger.debug(f'1페이지가 아니므로 상품의 동적로딩을 위해 휠 스크롤 업')
|
self.logger.debug(f'1페이지가 아니므로 상품의 동적로딩을 위해 휠 스크롤 업')
|
||||||
|
|
||||||
if not self.toggle_states['ed_mode']:
|
is_ed_mode = self.toggle_states.get['ed_mode']
|
||||||
|
if not is_ed_mode:
|
||||||
# 4. 현재 페이지의 모든 "세부사항 수정 및 업로드" 버튼 찾기
|
# 4. 현재 페이지의 모든 "세부사항 수정 및 업로드" 버튼 찾기
|
||||||
self.logger.debug('수정모드가 아니므로 상품수정 버튼 elements를 수집합니다.')
|
self.logger.debug('수정모드가 아니므로 상품수정 버튼 elements를 수집합니다.')
|
||||||
product_buttons = await self.get_product_edit_buttons_by_templete()
|
product_buttons = await self.get_product_edit_buttons_by_templete()
|
||||||
else:
|
else:
|
||||||
self.logger.debug('상품정보 수집')
|
self.logger.debug('상품정보 수집')
|
||||||
product_infos, product_name_elements = await self.collect_product_info(items_per_page, ed_mode=self.toggle_states['ed_mode'])
|
product_infos, product_name_elements = await self.collect_product_info(items_per_page, ed_mode=is_ed_mode)
|
||||||
self.logger.debug(f"product_infos : {product_infos}")
|
self.logger.debug(f"product_infos : {product_infos}")
|
||||||
self.logger.debug('수정모드이므로 상품명 elements를 수정버튼으로 활용합니다.')
|
self.logger.debug('수정모드이므로 상품명 elements를 수정버튼으로 활용합니다.')
|
||||||
product_buttons = product_name_elements
|
product_buttons = product_name_elements
|
||||||
|
|
@ -1070,7 +1071,8 @@ class BrowserController(QThread):
|
||||||
self.logger.debug('수정할 상품이 없습니다. 작업을 종료합니다.')
|
self.logger.debug('수정할 상품이 없습니다. 작업을 종료합니다.')
|
||||||
break
|
break
|
||||||
|
|
||||||
if self.toggle_states['recovery_mode']:
|
is_recovery_mode = self.toggle_states.get['recovery_mode']
|
||||||
|
if is_recovery_mode:
|
||||||
deleted_imgs = self.deleted_img_urls_from_logs()
|
deleted_imgs = self.deleted_img_urls_from_logs()
|
||||||
|
|
||||||
# 5. 각 상품에 대해 상품수정작업 수행
|
# 5. 각 상품에 대해 상품수정작업 수행
|
||||||
|
|
@ -1094,6 +1096,8 @@ class BrowserController(QThread):
|
||||||
product_category = await self.titleHandler.get_category(market='ss') # 카테고리 가져오기
|
product_category = await self.titleHandler.get_category(market='ss') # 카테고리 가져오기
|
||||||
|
|
||||||
# 옵션 수정
|
# 옵션 수정
|
||||||
|
is_optionTrnas = self.toggle_states.get['optionTrnas']
|
||||||
|
|
||||||
if self.toggle_states['optionTrnas'] or self.toggle_states['optionIMGTrans'] or self.toggle_states['optionAutoSelect']:
|
if self.toggle_states['optionTrnas'] or self.toggle_states['optionIMGTrans'] or self.toggle_states['optionAutoSelect']:
|
||||||
self.logger.debug(f"옵션수정 : optionTrnas={self.toggle_states['optionTrnas']} + optionIMGTrans={self.toggle_states['optionIMGTrans']} + optionAutoSelect{self.toggle_states['optionAutoSelect']}")
|
self.logger.debug(f"옵션수정 : optionTrnas={self.toggle_states['optionTrnas']} + optionIMGTrans={self.toggle_states['optionIMGTrans']} + optionAutoSelect{self.toggle_states['optionAutoSelect']}")
|
||||||
await self.edit_option(product_name)
|
await self.edit_option(product_name)
|
||||||
|
|
@ -1244,30 +1248,22 @@ class BrowserController(QThread):
|
||||||
# 이벤트 루프를 유지하여 외부에서 작업 추가 가능
|
# 이벤트 루프를 유지하여 외부에서 작업 추가 가능
|
||||||
self.loop.run_forever()
|
self.loop.run_forever()
|
||||||
|
|
||||||
|
|
||||||
def start_browser_task(self):
|
def start_browser_task(self):
|
||||||
"""이벤트 루프에서 브라우저 초기화 작업 추가"""
|
"""이벤트 루프에서 브라우저 초기화 작업 추가"""
|
||||||
self.logger.debug("start_browser_task - 브라우저 초기화 작업 시작")
|
self.logger.debug("start_browser_task - 브라우저 초기화 작업 시작")
|
||||||
|
|
||||||
# 비동기 작업을 이벤트 루프에 안전하게 추가
|
# 실행 중인 이벤트 루프에 비동기 작업 추가
|
||||||
if self.loop and not self.loop.is_closed():
|
if self.loop and not self.loop.is_closed():
|
||||||
future = asyncio.run_coroutine_threadsafe(self.start_browser_async(), self.loop)
|
asyncio.run_coroutine_threadsafe(self.start_browser_async(), self.loop)
|
||||||
|
self.browser_task_started = True # 작업 실행 플래그 설정
|
||||||
self.logger.debug("start_browser_task - 비동기 작업이 추가되었습니다.")
|
self.logger.debug("start_browser_task - 비동기 작업이 추가되었습니다.")
|
||||||
|
|
||||||
# 작업 성공 여부 확인
|
|
||||||
try:
|
|
||||||
result = future.result(timeout=10) # 10초 내에 완료되지 않으면 타임아웃
|
|
||||||
self.logger.debug(f"start_browser_task - 작업이 성공적으로 완료되었습니다: {result}")
|
|
||||||
except Exception as e:
|
|
||||||
self.logger.error(f"start_browser_task - 비동기 작업 실패: {str(e)}")
|
|
||||||
else:
|
else:
|
||||||
self.logger.error("start_browser_task - 이벤트 루프를 생성할 수 없습니다.")
|
self.logger.error("start_browser_task - 실행 중인 이벤트 루프가 없습니다.")
|
||||||
|
|
||||||
|
|
||||||
def start_PercentyJob_task(self):
|
def start_PercentyJob_task(self):
|
||||||
"""번역 작업을 이벤트 루프에서 실행"""
|
"""번역 작업을 이벤트 루프에서 실행"""
|
||||||
# 이벤트 루프가 없거나 닫혀 있으면 새로 생성
|
# 이벤트 루프가 없거나 닫혀 있으면 새로 생성
|
||||||
self.initialize_event_loop()
|
# self.initialize_event_loop()
|
||||||
|
|
||||||
if self.loop and not self.loop.is_closed():
|
if self.loop and not self.loop.is_closed():
|
||||||
# 이미 실행 중인 이벤트 루프에 번역 작업 추가
|
# 이미 실행 중인 이벤트 루프에 번역 작업 추가
|
||||||
|
|
@ -1275,6 +1271,16 @@ class BrowserController(QThread):
|
||||||
else:
|
else:
|
||||||
self.logger.error("이벤트 루프가 초기화되지 않았거나 이미 종료되었습니다.")
|
self.logger.error("이벤트 루프가 초기화되지 않았거나 이미 종료되었습니다.")
|
||||||
|
|
||||||
|
def initialize_event_loop(self):
|
||||||
|
"""이벤트 루프가 없거나 닫힌 경우 새로 생성"""
|
||||||
|
if not self.loop or self.loop.is_closed():
|
||||||
|
self.logger.debug("initialize_event_loop - 새로운 이벤트 루프 생성 중")
|
||||||
|
self.loop = asyncio.new_event_loop()
|
||||||
|
asyncio.set_event_loop(self.loop)
|
||||||
|
self.logger.debug("initialize_event_loop - 이벤트 루프가 생성되었습니다.")
|
||||||
|
else:
|
||||||
|
self.logger.debug("initialize_event_loop - 기존 이벤트 루프 사용 중")
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
"""스레드 종료 시 Playwright 리소스 정리 및 이벤트 루프 종료"""
|
"""스레드 종료 시 Playwright 리소스 정리 및 이벤트 루프 종료"""
|
||||||
if self.browser:
|
if self.browser:
|
||||||
|
|
|
||||||
8
gui.py
8
gui.py
|
|
@ -744,7 +744,7 @@ class AutoPercentyGUI(QWidget):
|
||||||
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
if not self.browser_controller.isRunning():
|
if self.browser_controller.isRunning():
|
||||||
# 스레드를 처음 시작하여 이벤트 루프를 실행
|
# 스레드를 처음 시작하여 이벤트 루프를 실행
|
||||||
# self.browser_controller.start() # QThread의 start() 호출로 run() 실행
|
# self.browser_controller.start() # QThread의 start() 호출로 run() 실행
|
||||||
self.logger.debug("브라우저 스레드가 시작되었습니다.")
|
self.logger.debug("브라우저 스레드가 시작되었습니다.")
|
||||||
|
|
@ -766,7 +766,7 @@ class AutoPercentyGUI(QWidget):
|
||||||
# 스레드 시작
|
# 스레드 시작
|
||||||
self.browser_controller.start_browser_task()
|
self.browser_controller.start_browser_task()
|
||||||
else:
|
else:
|
||||||
self.logger.warning("브라우저 스레드는 이미 실행 중입니다.")
|
self.logger.warning("브라우저 스레드가 실행중이지 않습니다.")
|
||||||
|
|
||||||
@Slot()
|
@Slot()
|
||||||
def on_browser_started(self):
|
def on_browser_started(self):
|
||||||
|
|
@ -792,12 +792,12 @@ class AutoPercentyGUI(QWidget):
|
||||||
@Slot()
|
@Slot()
|
||||||
def on_start_PercentyJob_clicked(self):
|
def on_start_PercentyJob_clicked(self):
|
||||||
"""상품수정 스레드 시작 및 상태 전달"""
|
"""상품수정 스레드 시작 및 상태 전달"""
|
||||||
if not self.browser_controller.isRunning():
|
if self.browser_controller.isRunning():
|
||||||
# 스레드 시작
|
# 스레드 시작
|
||||||
self.browser_controller.start_PercentyJob_task()
|
self.browser_controller.start_PercentyJob_task()
|
||||||
self.logger.info("상품수정 작업 스레드가 시작되었습니다.")
|
self.logger.info("상품수정 작업 스레드가 시작되었습니다.")
|
||||||
else:
|
else:
|
||||||
self.logger.info("상품수정 작업 스레드는 이미 실행 중입니다.")
|
self.logger.info("브라우저 스레드가 없습니다.")
|
||||||
|
|
||||||
|
|
||||||
@Slot()
|
@Slot()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue