dxsworks

Tray Quiz Solver

트레이 아이콘 클릭 → 화면 캡처 → Gemini가 정답 선지를 골라 트레이에 띄우는 Windows 상주 앱

상태
정보 없음
기간
2026-09
형태
개인
역할
기획·개발
스택
Pythonpywin32PillowGemini
링크
비공개 저장소

최근 52주 활동

활동 정보 없음

무엇을 하나요

화면에 보이는 여러 서술형 보기 가운데 옳은 것을 Gemini에게 판단받고, 그 결과를 작업 표시줄 트레이 아이콘으로 바로 보여 주는 Windows 상주 도구예요. 창을 바꾸거나 글자를 복사할 필요 없이 트레이 아이콘 클릭 한 번으로 끝나요.

트레이의 Q 아이콘을 누르면 주 모니터를 캡처해 Gemini에 보내요. 옳다고 판단한 보기의 번호(예: 1, 3, 4)가 아이콘 하나에 한 글자씩 트레이에 나란히 떠요.

무엇을 만들었나요

  • 클릭, 화면 캡처, Gemini 분석, 결과 아이콘 표시까지 이어지는 상주 앱
  • 숫자(①②③ 포함), 한글 자모, 알파벳 라벨 인식과 정규화
  • 처리 중·결과 없음·오류 상태를 메인 아이콘 글자와 툴팁으로 표시하고, 오류는 로그 파일에 기록
  • 설치용 배치 파일과 여러 해상도 아이콘이 들어간 바탕화면 바로가기 생성 스크립트

기술적으로 눈여겨볼 점

  • 흔히 쓰는 트레이 라이브러리는 아이콘 하나를 전제로 해서, pywin32로 Shell_NotifyIcon을 직접 호출했어요. 숨김 창 하나에 여러 아이콘을 ID별로 추가·수정·삭제하고, 탐색기가 재시작되면 아이콘을 다시 등록하며, 아이콘 핸들이 새지 않게 정리해요. 새 아이콘이 왼쪽에 붙는 트레이 동작에 맞춰, 번호 순서대로 보이도록 추가 순서를 뒤집었어요.
  • Gemini 응답은 JSON 형식으로 강제하고, 라벨을 정규화하고 중복을 없애고 순서를 맞추는 파서를 순수 함수로 분리해 pytest로 검증했어요.
  • 캡처와 API 호출은 워커 스레드에서 돌려요. 처리 중에 다시 클릭하면 무시하고, 도중에 '지우기'나 '종료'를 누르면 결과를 반영하지 않아요. 고해상도 화면에서 메뉴가 흐려지지 않도록 DPI 인식도 설정했어요.
  • 요청 한도 초과(429)나 서버 과부하(503) 같은 API 오류는 툴팁에 짧은 안내 문구로 바꿔 보여 줘요.