나만의 무기 : HIGHLIGHTING/개발 일지

Day 24 (2) : 북마크 구간 영상분할 프로그램 생성

정글러 2022. 2. 27. 06:58

마무리 발표 전 마지막으로 구현할 목표

로컬의 원본 파일을 유저가 고른 북마크들 구간대로 잘라주는 exe 다운로드 구현

 

구상하는 비즈니스 로직은 아래와 같다

 

0. client로부터 유저가 북마크한 구간 정보를 수신

1. 북마크 구간 정보를 txt파일로 동적 생성

2. 영상분할 function을 수행하는 exe파일, ffmpeg.exe, 위의 txt파일을 모은 zip 파일 생성

3. zip 파일을 flask의 sendfile로 client에 제공

4. 동적 생성된 txt, zip 삭제

-> 다운로드받은 유저는 압축을 풀고 exe를 실행하여 원본파일 이름을 입력하면 영상이 분할됨

 

이를 위해 구현해야 할 부분은 

영상분할 function 설계

function을 수행하는 exe build

exe, txt, ffmpeg을 하나의 zip파일로 만드는 로직 구현

위 모든걸 차례대로 수행해주는 하나의 함수 구현

함수 서버에 탑재하고 api 연결

 

쯤 있을 것 같다.

 

먼저 main function 제작

client로부터 bookmark를 받아 txt파일로 만들었다는 전제 하에 잘 작동하는 것을 확인

 

다음으로 유저에게 제공할 파일들을 한데 묶어 zip파일로 만드는 setup 제작

cmd에서 "python setup.py build" 하면 C처럼 컴파일이 된다

 

신기하네...

 

마지막으로

서버가 받은 bookmarks를 txt파일로 저장하는 함수,

build된 exe와 소스파일들을 한데묶어 zip파일로 만드는 함수를 제작

 

zip화는 파이썬 내장 라이브러리가 있어서 이걸 썼다

상대경로 절대경로 생각해가며 에러안나게 만드느라 머리에 쥐나는줄...

 

마지막으로 이 셋을 조합하면 zip파일을 생성하는 하나의 함수가 완성

 

완성된걸 보니 몇줄 안되는데 하나하나 배우느라 대체 몇시간을 쓴건지...

 

위 함수를 실행하면 요런 zip파일이 생성되는데

 

압축을 풀고 실행해서 원본영상 파일이름을 복붙하면

 

와!

 

이제 이걸 서버에 갖다붙이면 진짜 다 끝이다...