youtube-dl 웹서버에 해상도 선택 기능 추가했습니다.
해상도는 유툽에 있는 해상도 기반으로 selectbox 추가했고, 서브프로세스 완료되면 아래 그리드에 서버에서 정보 푸시합니다.
실행방법 이전글 참조 : https://www.clien.net/service/board/cm_nas/12621646?po=0&od=T31&sk=&sv=&category=&groupCd=&articlePeriod=default&pt=0CLIEN
DOCKER HUB : https://hub.docker.com/r/modenaf360/youtube-dl-nas/
GIT HUB : https://github.com/hyeonsangjeon/youtube-dl-nas
해상도는 1080p라고 무조건 1080p를 다운 받는건 아니고, 최소한 1080p 이하 중 가장 큰 해상도로 받게 되어있습니다.
예를들어, "720p가 가장 크다"면 1080p선택해도 720p가 받아집니다.
다운로드 확장자는 기본 mp4로 받아지나 유툽확장자가 webm만 있는경우 다운로드 확장자는 mkv로 merging 받아집니다.
음성만 다운받는건 mp3로 받아지는데.... 음 이건 안될거같아요.ㅎㅎㅎ 너무 강력하네요. 저작권 보호 사랑합니다.
로그인은 아래와 같이 환경변수 들어가면 됩니다. _언더바 확인해주세요.
혹시 암호가 리눅스 bash에 적용안되는 특수문자인 경우 안될수도 있을거같습니다.
예를들어, 암호 시작이 ! (느낌표) 인것, $ (달러), &은 안됩니다.
bash에 환경변수로 적용되지 않는 첫문자는 정상적으로 적용되지 않습니다.
[안됨]
-e MY_PW=!abcd
-e MY_PW=$abcd
-e MY_PW=&abcd
[됨]
-e MY_PW=abcd!
-e MY_PW=abcd$
-e MY_PW=abcd!&
적절히 사용하시길.
PS.
1. 로그인은 계정은 도커 환경변수명 정확히 입력해주세요. (시작문자 ! $ & 안되효) -e MY_ID=아이디 -e MY_PW=암호
2. 기존 이미지 받으셨던 분들께서는 이미지 지우고 다시 받으시면 됩니다. tag latest
3. 이전 버전은 docker tag명 v0_1로 올려놨습니다.
4. 디자인은 공대 감성입니다. 저건 어떻게 안되는것 같습니다.
불금 되시길...
자바라면 DefaultExecutor executor = new DefaultExecutor(); executor.execute(cmdLine); 와 같습니다.
실제로 manbearwiz 코드를 보면
/youtube-dl/q [GET]도 현재 큐에 요청접수된 String일 뿐이더라구요.
@app.route('/youtube-dl/q', method='POST')에 response가 queue accept에요.
REST로 보면 202코드(작업을 접수받았습니다.)입니다.
순서대로 queue에 담기면 dl_worker라는 함수는 대기하다 큐를 빼고, worker는 다운로드 작업 한뒤 다했다고 task_done 주고 join하는 Producer /Consumer Async 스레드 패턴 구조라....
만들면서 분석한 이해하기 쉽게 정리한 큐파이프라인 정리한 링크입니다. https://github.com/hyeonsangjeon/python-threads-queue
유효하지 않은 입력은 정규식으로 프론트단에서 될수 있는대로 막아주시고, 파일 다운로드하다가 나는 에러는 작업 중간 디렉토리를 모니터하는 상태 체크를 써야지 않나 싶네요. 프론트에서 그걸 확인하는건 다운로드 요청하고 바로 디렉토리 상태체크를 async polling하거나(ajax같은) SSE웹소켓 밖에 없을 거같아요.
저도 다운로드 worker subprocess가 처리 한 다음 릴리즈할때 완료 푸시라 완벽하게 파일이 받아지다 90%에서 에러 이런건 못잡을 것 같습니다.
ps. AWS같은 서버 자원 할당 받는 프로비저닝 방식이라고 생각하시면 편할거같아요. 요청한다--> 접수 응답 받는다 --> 기다린다--> 상태체크용 REST를 찔러본다. -> ui에서 상태값 응답을 보여준다.
mp3추출이 상당히 아쉽군요 ㅋㅋ 궁극의 기능이었는데 ㅠ
반영해 주셔서 감사합니다. ^^
한가지 질문좀요..
다운받는곳을 다른곳으로 지정이 가능할까요?
따라한다고 했는데 downfolder 폴더로 가는건가요?
전 그냥 youtubeDl 폴더에 다운받아지는데 그게 정상일까요?
-v 나스경로:도커경로
도커경로는 root에 링크 /downfolder로 fix된거고 왼쪽을 바꾸시면 되어요.
-v 원하시는나스경로:/downfolder