Pythonプログラムからyoutube-dlを使用する方法は?


81

次のシェルコマンドの結果にアクセスしたいのですが、

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

direct urlPythonプログラム内から、出力をファイルに出力します。これは私が試したことです:

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

それは可能ですか?私はソースのメカニズムを理解しようとしたが、迷子になりました:youtube_dl/__init__.pyyoutube_dl/youtube_DL.pyinfo_extractors...



1
まともな書き込みここまで:willdrevo.com/...
lollercoaster

2
@lollercoaster、そのURLは死んでいます...ここにリンクを修正しました
s3cur3

回答:


140

それは難しくなく、実際に文書化されています

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 2014

gentooに「youtube_dlという名前のモジュールがありません」がある場合は、Pythonファイルの先頭に「#!/ usr / bin /envpython2.7」を追加してみてください。
puchu 2014年

9
私はこれが古いことを知っています、そして他の答えがありますが、明確にするためだけです。youtube_dlの新しいバージョンでは、いくつかの変更があり、代わりvideo['url']video['webpage_url']
DarkXDroid 2015

4
目的はwith ydl:何ですか?
ハローグッバイ

5

単純なコードの場合、私は思うかもしれません

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

上記は、Python内でコマンドラインを実行しているだけです。

その他はドキュメントに記載されていますPythonyoutube-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_dlmain()関数を呼び出します。


この種の動作では、main関数から何も返されないため、まだ実際の値を取得することはできません。
アンソニー・チョン

-3

場合 youtube-dl、端末のプログラムでは、使用することができますsubprocessあなたが望むデータにアクセスするためのモジュールを。

詳細については、このリンクを確認してください:Pythonで外部コマンドを呼び出す


50
PythonプログラムからPythonプログラムを呼び出すのは少し悲しいですね。
JulienFr 2013

11
youtube-dlはPythonで書かれたコマンドラインプログラムであると考えており、コマンドラインから呼び出すことに何の問題もありません。ソースコードをいじくり回したい場合は、遠慮なくそうしてください。

10
@Xaranke youtube-dlをモジュールとしてpythonからインポートすると、より多くの制御が可能になります。コマンドラインからの印刷データの解析は、それほど信頼できるものではありません。
ウォーリー

また、このyoutube-dlコマンドでsubprocess /os.systemを実際に使用してみてください。引数を渡そうとすると、実際にはうまく機能せず、意図したとおりにも機能しません。
Izaac Corbett 2017

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.