파이썬 프로그램에서 youtube-dl을 사용하는 방법은 무엇입니까?


81

다음 셸 명령의 결과에 액세스하고 싶습니다.

youtube-dl -g "www.youtube.com/..."

direct url파이썬 프로그램 내에서 파일로 출력을 인쇄합니다 . 이것이 내가 시도한 것입니다.

import youtube-dl
fromurl="www.youtube.com/..."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)

가능합니까? 나는 소스의 메커니즘을 이해하는 시도했지만 잃었다 : youtube_dl/__init__.py, youtube_dl/youtube_DL.py, info_extractors...



1
점잖은 쓰기 여기까지 : willdrevo.com/...
lollercoaster

2
@lollercoaster, 그 URL은 죽었습니다 ... 여기 고정 된 링크 .
s3cur3

답변:


139

어렵지 않고 실제로 문서화되었습니다 .

import youtube_dl

ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s.%(ext)s'})

with ydl:
    result = ydl.extract_info(
        'http://www.youtube.com/watch?v=BaW_jenozKc',
        download=False # We just want to extract the info
    )

if 'entries' in result:
    # Can be a playlist or a list of videos
    video = result['entries'][0]
else:
    # Just a video
    video = result

print(video)
video_url = video['url']
print(video_url)

3
이 오류가 발생합니다. import youtube_dl ImportError : youtube_dl이라는 모듈 없음
Ufoguy

8
youtube_dl을 설치해야합니다. pip 유틸리티가있는 경우 (설치하려면 sudo apt-get install python-pip) sudo pip install youtube-dl
JulienFr

젠투에 "youtube_dl이라는 모듈이 없음"이있는 경우 파이썬 파일 시작 부분에 "#! / usr / bin / env python2.7"을 추가 할 수 있습니다.
puchu 2014-10-22

9
나는 이것이 오래되었고 다른 답변이 있다는 것을 알고 있지만 명확히하기 위해. youtube_dl의 새 버전에 약간의 변화가 있었다 대신에 video['url']그 변경video['webpage_url']
DarkXDroid

4
의 목적은 with ydl:무엇입니까?
HelloGoodbye

5

간단한 코드의 경우 생각할 수 있습니다.

import os
os.system('youtube-dl [OPTIONS] URL [URL...]')

위는 파이썬 내부에서 명령 줄을 실행하는 것입니다.

기타는 Python 에서 youtube-dl 사용 설명서에 언급되어 있습니다 . 방법은 다음과 같습니다.

from __future__ import unicode_literals
import youtube_dl

ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])

4

방법이 있습니다.

명령 줄 인수를 설정하는 것처럼 옵션의 문자열을 목록으로 설정합니다. 이 경우 opts=['-g', 'videoID']. 그런 다음 youtube_dl.main(opts). 이런 식으로 사용자 지정 .py 모듈을 작성한 import youtube_dl다음 main()함수 를 호출합니다 .


이런 종류의 작업은 주 함수에서 아무것도 반환되지 않으므로 아직 그 값을 얻을 수 없습니다.
Anthony Chung

-3

경우 youtube-dl터미널 프로그램입니다, 당신은 사용할 수 있습니다 subprocess당신이 원하는 데이터에 액세스 할 모듈을.

자세한 내용은이 링크를 확인하십시오. Python에서 외부 명령 호출


50
파이썬 프로그램에서 파이썬 프로그램을 호출하는 것은 조금 슬프지 않습니까?
JulienFr 2013 년

11
저는 youtube-dl파이썬으로 작성된 명령 줄 프로그램이라고 생각하고 명령 줄에서 호출하는 데 아무런 문제가 없다고 생각합니다. 소스 코드를 다루고 싶다면 자유롭게 그렇게하세요.

10
@Xaranke youtube-dl을 파이썬에서 모듈로 가져 오면 더 많은 제어가 가능합니다. 명령 줄에서 인쇄 된 데이터를 구문 분석하는 것은 신뢰할 수 없습니다.
Wally

또한이 youtube-dl 명령에서 실제로 subprocess / os.system을 사용해보십시오. 인수를 전달하려고 할 때 실제로 잘 작동하지 않거나 의도 한대로 작동하지 않습니다.
Izaac Corbett

-6

나는 이것을 원한다

from subprocess import call

command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c"
call(command.split(), shell=False)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.