유튜브 플레이리스트를 MP3로 바꿔 저장하는 작은 데스크톱 앱을 혼자 만들었습니다. 기능 자체는 단순하지만, 웹만 만들던 사람이 파이썬 GUI 앱을 세 OS(macOS·Windows·Linux)에서 돌아가게 하고, 남이 명령어 한 줄로 설치할 수 있게 만드는 과정에서 배운 게 더 많았습니다. 이 글은 그 기록입니다.
1. 왜 데스크톱 앱으로 만들었나
평소 만들던 건 대부분 웹입니다. 이번엔 브라우저가 아니라 내 컴퓨터에서 파일을 직접 다루는 도구가 필요했고, 그래서 파이썬 데스크톱 앱으로 방향을 잡았습니다.
결과물은 가수 - 제목.mp3 형태로 저장되고, 저장 폴더에 받은 기록을 남겨 같은 목록을 다시 돌려도 새 곡만 받습니다.
2. 문제 1: 배포가 제일 어렵다
앱을 만드는 것보다 남이 설치하게 만드는 게 더 어려웠습니다. 파이썬 앱은 보통 이렇게 안내합니다: 파이썬을 설치하고, 가상환경을 만들고, 의존성을 깔고, 스크립트를 실행하세요. 개발자가 아니면 여기서 대부분 포기합니다.
install.sh / install.ps1) 한 줄을 터미널에 붙여넣으면 uv 설치부터 앱 설치까지 끝나도록 만들었습니다. 이후 실행은 playlist-to-mp3 한 단어, 업데이트는 uv tool upgrade 한 줄입니다..app 번들(PyInstaller)만 생각했는데, 미서명 앱이라 첫 실행에 "확인되지 않은 개발자" 경고가 뜨고 Windows·Linux는 따로 챙겨야 했습니다. OS별로 각각 패키징하는 대신 uv tool install 하나로 세 OS를 같은 방식으로 설치하도록 재정비했습니다. .app 번들은 더블클릭 아이콘이 필요한 사람을 위한 선택지로만 남겼습니다.만드는 것까지가 아니라 설치까지가 제품이라는 걸 이 단계에서 체감했습니다.
3. 문제 2: ffmpeg를 어떻게 딸려 보내나
오디오 변환에는 ffmpeg가 필요한데, 이걸 사용자가 직접 깔게 하면 또 하나의 진입장벽이 됩니다. 그렇다고 무겁게 앱에 통째로 넣기도 부담스럽습니다.
brew install ffmpeg를 시도합니다.4. 문제 3: 받는 동안 창이 멈추면 안 된다
다운로드는 시간이 걸리는 작업입니다. 이걸 화면을 그리는 메인 스레드에서 그냥 실행하면 창이 멈춘 것처럼 보이고, 진행 상황도 보이지 않습니다.
5. UI: 이왕이면 보기 좋게
혼자 쓸 도구라도 창은 매일 보게 됩니다. 그래서 UI에도 시간을 들였습니다.
디자인을 해봤던 경험 덕분에 이 과정이 부담이 아니라 오히려 재미있는 마무리였습니다.
6. 정리
코드는 GitHub에 공개해 두었습니다.