youtube-dl을 파이썬으로 실행하는 방법
오랜만에 실행했더니 오류가 발생하는군요. ^^
c:\temp\youtube-dl> youtube-dl.exe -F ...[생략]...
[youtube] ...: Downloading webpage
[youtube] ...: Downloading player 6f20102c
ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
재미있는 건, youtube-dl.exe가 있는 c:\temp 디렉터리가 아닌, 다른 곳에서 PATH를 연결해 실행하면 아예 Windows Defender에 의해 오류가 발생한다는 점입니다.
C:\temp2> youtube-dl
Access is denied.
This app can't run on your PC
To find a version for your PC, check with the software publisher.
지난번에는 업데이트해서 해결(
1,
2)했는데, 이번에는 저게 최신 버전이었고 해결이 안 됩니다. ^^;
그런데, github에 가보면,
ytdl-org/youtube-dl
; https://github.com/ytdl-org/youtube-dl/issues
딱히 이에 관한 이슈가 없습니다. 음... 저만 문제 있는 걸까요? ^^ 암튼, 문제가 있으니 일단 youtube-dl.exe는 포기하고 github에 있는 소스코드를 직접 다운로드해 실행해 볼까 하는데요,
c:\temp> git clone https://github.com/ytdl-org/youtube-dl.git
일단, 파이썬으로 해보면 실행은 되는데
찝찝한 경고 하나가 남습니다.
c:\temp\youtube-dl> python -m youtube_dl -F [...영상_id...]
[youtube] ...: Downloading webpage
[youtube] ...: Downloading player 6f20102c
WARNING: [youtube] Unable to decode n-parameter: download likely to be throttled (Unhandled exception in decode; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. Traceback (most recent call last):
File "E:\git_clone\youtube-dl\youtube_dl\extractor\youtube.py", line 1672, in _n_descramble
raise ExtractorError('Unhandled exception in decode')
youtube_dl.utils.ExtractorError: Unhandled exception in decode; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
)
[info] Available formats for ...:
format code extension resolution note
249 webm audio only tiny 54k , webm_dash container, opus (48000Hz), 1.56MiB
250 webm audio only tiny 71k , webm_dash container, opus (48000Hz), 2.06MiB
140 m4a audio only tiny 129k , m4a_dash container, mp4a.40.2 (44100Hz), 3.72MiB
251 webm audio only tiny 138k , webm_dash container, opus (48000Hz), 3.97MiB
278 webm 256x144 144p 23k , webm_dash container, vp9, 30fps, video only, 704.15KiB
160 mp4 256x144 144p 27k , mp4_dash container, avc1.4d400c, 30fps, video only, 803.63KiB
242 webm 426x240 240p 28k , webm_dash container, vp9, 30fps, video only, 825.20KiB
133 mp4 426x240 240p 49k , mp4_dash container, avc1.4d4015, 30fps, video only, 1.42MiB
243 webm 640x360 360p 39k , webm_dash container, vp9, 30fps, video only, 1.15MiB
134 mp4 640x360 360p 87k , mp4_dash container, avc1.4d401e, 30fps, video only, 2.51MiB
18 mp4 640x360 360p 215k , avc1.42001E, 30fps, mp4a.40.2 (44100Hz) (best)
상관없습니다. 일단, 포맷은 구했으니 어쨌든 다운로드만 된다면 ^^ 우린 모든 걸 용서할 수 있습니다. 다행히 ^^ 아래와 같이 다운로드도 잘됩니다. ^^
c:\temp\youtube-dl> python -m youtube_dl [...영상_id...] -f 140
[youtube] ...: Downloading webpage
WARNING: [youtube] Unable to decode n-parameter: download likely to be throttled (Unhandled exception in decode; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. Traceback (most recent call last):
File "E:\git_clone\youtube-dl\youtube_dl\extractor\youtube.py", line 1672, in _n_descramble
raise ExtractorError('Unhandled exception in decode')
youtube_dl.utils.ExtractorError: Unhandled exception in decode; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
)
[dashsegments] Total fragments: 1
[download] Destination: [...생략...].m4a
[download] 100% of 3.72MiB in 01:19
WARNING: ...: writing DASH m4a. Only some players support this container. Install ffmpeg or avconv to fix this automatically.
위의 경우는 오디오만 받았기 때문에 마지막에 경고가 나왔는데요, 괜찮습니다. 요즘 m4a 재생 못하는 프로그램이 없기 때문인데, 뭣하면
ffmpeg를 이용해 그냥 mp3로 바꿔도 됩니다. ^^
c:\temp> ffmpeg -i [...생략...].m4a [...생략...].mp3
// 시간 제어: 8초 전의 내용 삭제
c:\temp> ffmpeg -ss 8 -i [...생략...].m4a [...생략...].mp3
언제까지 youtube-dl이 안정적으로 실행될지는 알 수 없으나, 일단 ^^ 오늘은 여기까지만.