교수님 앞에서 발표할 자료를 랜덤으로 선정하고, 발표 시간을 재며, 시간이 끝나면 자동으로 파일을 닫아 주는 데스크톱 도구입니다. ZIP으로 묶인 발표 자료를 업로드하면 파일을 정리하고 순서 없이 뽑아 보여 줍니다.
- ZIP 압축을 안전하게 해제 후 임시 폴더에서 작업합니다.
- 한글(CP949) 파일명을 포함한 윈도우 ZIP도 정상적으로 디코딩합니다.
- 이름 끝의
-0,_1등 숫자만 다른 파일은 중복으로 간주하고 우선순위( PDF > PPTX > PPT > KEY > DOCX > DOC )에 따라 하나만 남깁니다. - "Select Next File" 버튼을 누를 때마다 비복원 추출로 무작위 파일을 선택하고 시스템 기본 앱으로 엽니다.
- 선택된 파일 수를
Selected X / Y형태로 보여 줍니다. - 타이머(기본 3분)를 시작하면 버튼을 잠시 비활성화하고, 시간이 끝나면 알림음을 재생한 뒤 열어 둔 파일을 닫습니다.
- macOS는 Quick Look/
open, Windows는 PowerShellStart-Process, Linux는xdg-open으로 파일을 여는 기본 동작을 사용합니다.
- Python 3.9 이상이 설치되어 있는지 확인합니다.
- 필요하다면 가상환경을 만들고 활성화합니다.
- 의존 패키지가 없다면 바로 실행할 수 있습니다.
python app.py
- 앱 실행 후
- Upload ZIP 버튼으로 자료 ZIP을 선택합니다.
- Select Next File 버튼으로 무작위 자료를 엽니다.
- 타이머 길이를 분 단위로 조정하고 Start Timer를 누릅니다.
- 타이머 종료 시 알림음과 함께 파일이 닫힙니다.
Standalone 실행 파일을 만들 때는 PyInstaller를 사용합니다.
python -m pip install pyinstaller
pyinstaller --onefile --windowed app.pymacOS에서는 dist/app, Windows에서는 dist/app.exe가 생성됩니다.
.github/workflows/build.yml 워크플로는 push/PR 시에 macOS, Windows 환경에서 PyInstaller로 실행 파일을 빌드하고, 결과물을 아티팩트로 업로드합니다. 저장소의 Actions 탭에서 각 플랫폼의 빌드 산출물을 받을 수 있습니다.
Windows에서 한글(HWP) 뷰어나 오피스가 설치되어 있다면 자동으로 연동되어 열립니다. macOS에는 기본 HWP 뷰어가 없으므로 별도 프로그램이 설치되어 있지 않다면 열리지 않습니다.
- 애플 기본 알림음(
Glass.aiff), WindowsMessageBeep, Linux의 freedesktop/ALSA 기본 사운드를 순차적으로 시도합니다. - 실행 중 생성된 임시 폴더는 앱 종료 시 정리됩니다.
- 다른 OS나 추가 확장자를 지원하려면
EXTENSION_PRIORITY나_open_on_*함수를 수정하면 됩니다.