관련지식
synology, download station, youtube-dl

시놀로지 다운로드 스테이션에선 유튜브 다운로드 기능을 제공하고 있지만 다운로드가 안되는 경우가 종종 있습니다. 주로 과거 컨텐츠들이 그러한데, 이전에 다운로드 스테이션을 대체하는 유튜브 다운로드 방법으로 youtube-dl을 소개한적이 있습니다. 그리고 그것을 이용한 도커 환경을 구성한 게시글도 소개했습니다. 하지만 DownloadStation 이라는 통합환경을 사용하지 못하는 불편함이 있었죠.

이번엔 DownloadStation 본연의 기능으로 유튜브를 다운로드 받을수 있는 방법을 소개하고자 합니다. 급하신분은 맨 아래에 있는 적용방법만 보시면 됩니다.

동작 방식 비교

아래 이미지는 글씨가 잘 안보이겠지만 시놀로지에서 top으로 프로세스를 보는 화면입니다. 다운로드 스테이션에서 유튜브 링크를 다운로드 시도했을때를 캡쳐한것인데, youtube-dl 을 사용하고 있는것을 확인할수 있습니다.

프로세스에서 보였던 명령어를 똑같이 실행해보았습니다. 출력되는 내용이 아무것도 없네요. 참고로 여기서 사용된 유튜브 링크는 다운로드 스테이션에서 다운로드가 안되는 링크였습니다.

다운로드 안되는 링크 : https://www.youtube.com/watch?v=AJOoQM452lA

위의 링크를 별도로 설치한 youtube-dl에서 동일하게 실행해보았습니다. 이번엔 화면에 많은 양의 JSON 데이터가 보입니다.

youtube-dl --version 명령어로 각각의 버전을 확인해보면 ‘2019.07.30’, ‘2019.11.28’ 로 좀 차이가 있습니다. 따라서 저 버전의 차이 만큼 유튜브 다운로드를 지원한다고 생각해볼수 있을것 같습니다. 그런데 높은 버전의 youtube-dl은 그대로 사용할수가 없습니다. 왜냐하면 다운로드가 가능한 유튜브 URL로 각각 버전에서 실행해보면 아래와 같이 값이 나옵니다.

다운로드 스테이션 버전

최신버전

차이가 느껴지시나요? 똑같은 URL이면 똑같은 데이터가 나와야 하는데, 다운로드 스테이션에서 사용중인 youtube-dl은 “ 로 감싸진 JSON 데이터입니다. 서브 프로세스로 실행시킨 값을 부모 프로세스에서 읽기 위해 처리한것으로 생각되네요. 따라서 최신버전도 저렇게 처리가 되어야만 다운로드 스테이션에서 사용할수 있을것입니다. 몇가지 방법을 시도해보았지만 결국 github에서 최신 소스를 클론받고, 소스 수정후 컴파일하여 적용할수 있었습니다. 밑에 적용 방법에서는 제가 수정한 파일을 제공드릴건데, 혹시 의심스럽다고 느껴지시는 분은 https://github.com/ytdl-org/youtube-dl 에서 소스를 받아서 직접 수정하셔도 됩니다.

적용방법

youtube-dl 파일을 다운로드하여 시놀로지 나스의 적당한 위치에 업로드 합니다. 그리고 shell로 접속하여 아래 둘중에 한가지 방법을 선택해서 진행하시면 됩니다. 파일을 /volume1/tmp 디렉토리에 업로드 했다고 가정하고 만들어진 명령어 입니다.

심볼릭링크 사용

  1. #root로 사용자 변경
  2. sudo -i
  3. #원본파일 백업
  4. mv /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl_bak
  5. #원본파일 삭제
  6. rm /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl
  7. #실행권한 추가
  8. chmod +x /volume1/tmp/youtube-dl
  9. #심볼릭링크 생성
  10. ln -s /volume1/tmp/youtube-dl /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl

작업후 ‘ls -al /volume1/@appstore/DownloadStation/plugins/youtube’ 했을때 아래와 같이 보이면 정상입니다.

파일복사

  1. #root로 사용자 변경
  2. sudo -i
  3. #원본파일 백업
  4. mv /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl_bak
  5. #실행권한 추가
  6. chmod +x /volume1/tmp/youtube-dl
  7. #파일 복사
  8. cp -f /volume1/tmp/youtube-dl /volume1/@appstore/DownloadStation/plugins/youtube/youtube-dl

작업후 ‘ls -al /volume1/@appstore/DownloadStation/plugins/youtube’ 했을때 아래와 같이 보이면 정상입니다.

이제 원래 버전에서 다운로드가 안되는 유튜브가 있었다면, 위 작업후 다시 진행해보시면 됩니다.

정리

위 방법대로 적용했을때 이후 다운로드 스테이션이 업데이트에 문제가 없는지는 아직 확인되지 않았습니다. 그러나 원본 파일을 youtube-dl_bak로 백업을 했기 때문에 언제든지 원래대로 되돌리면 문제 없을것 같습니다.

심볼릭링크와 파일복사 방식으로 소개를 해드렸는데, 각각 장점이 있습니다.
심볼릭링크 방식으로 적용하면 나중에 더 높은 버전의 youtube-dl를 적용할때 업로드만 하면 됩니다. 위의 경우라면 ‘/volume1/tmp/youtube-dl’ 파일을 엎어치기만 하면 최신 버전으로 바로 적용이 되죠.
파일복사 방식의 경우 새 버전의 파일을 업로드, 복사를 해줘야 하므로 불편하지만, 나중에 다운로드 스테이션 업데이트시 가장 영향도가 적을것 같습니다. 그때 되어봐야 알겠지만요;

이상입니다.