ダウンロードこの動画またはmp 3
だから、なぜ我々は単にPythonスクリプトを実行して任意のYouTubeのビデオをダウンロードすることができます独自のボットを作成するには?すべては、それから、我々の支配においてあります、ものすごい?
この記事では、YouTubeのビデオダウンロード機能を自動化するためにPythonスクリプトをどのように作るかを見ていきます.
この記事を通過した後、あなたは言うことができます
NO
すべてのそれらの迷惑な広告には、プライバシーの問題は、別の拡張機能への承認と最終的に完全な制御を持つことができます.始めましょう!
何を使うつもりですか.
我々は、Pythonとその驚くべきサードパーティのライブラリのいずれかを使用するつもりです.pytube .
pytubeをインストールするには
$ pip install pytube
Collecting pytube
Downloading pytube-10.7.2-py3-none-any.whl (42 kB)
|████████████████████████████████| 42 kB 3.4 MB/s
Installing collected packages: pytube
Successfully installed pytube-10.7.2
$
Pytubeでより多くの:on progress
or on complete
. on_download_progress
& on_download_complete
コールバック..srt
フォーマット( subpサブタイトル).さて、この情報を使用して最初のYouTube動画ダウンローダを構築しましょう.
ストリームを取得する
まず、与えられたYouTubeのビデオURLのすべての利用可能なストリームを取得する簡単なスクリプトを作成します.何でも好きなファイル名を開きます
.py
拡張子は、私たちの場合はpytube_demo.py
, 次のコードを追加して実行します.# ./pytube_demo.py
from pytube import YouTube
video_url = input("Enter YouTube Video URL: ")
youtube_obj = YouTube(video_url)
print(youtube_obj.streams)
ランを実行した後、端末がビデオURLを入力するようプロンプトが表示されたら、これを入力してくださいhttps://www.youtube.com/watch?v=fibIyvTleqc
, それは私のお気に入りの曲の一つですDaydreamer
そばAURORA
.Note: You can enter any YouTube video URL here, what we are going to explore further doesn't depend on which URL you enter.
Enter YouTube Video URL: https://www.youtube.com/watch?v=fibIyvTleqc
[<Stream: itag="18" mime_type="video/mp4" res="360p" fps="25fps" vcodec="avc1.42001E" acodec="mp4a.40.2" progressive="True" type="video">, <Stream: itag="137" mime_type="video/mp4" res="1080p" fps="25fps" vcodec="avc1.640028" progressive="False" type="video">, <Stream: itag="248" mime_type="video/webm" res="1080p" fps="25fps" vcodec="vp9" progressive="False" type="video">, <Stream: itag="136" mime_type="video/mp4" res="720p" fps="25fps" vcodec="avc1.4d401f" progressive="False" type="video">, <Stream: itag="247" mime_type="video/webm" res="720p" fps="25fps" vcodec="vp9" progressive="False" type="video">, <Stream: itag="135" mime_type="video/mp4" res="480p" fps="25fps" vcodec="avc1.4d401e" progressive="False" type="video">, <Stream: itag="244" mime_type="video/webm" res="480p" fps="25fps" vcodec="vp9" progressive="False" type="video">, <Stream: itag="134" mime_type="video/mp4" res="360p" fps="25fps" vcodec="avc1.4d401e" progressive="False" type="video">, <Stream: itag="243" mime_type="video/webm" res="360p" fps="25fps" vcodec="vp9" progressive="False" type="video">, <Stream: itag="133" mime_type="video/mp4" res="240p" fps="25fps" vcodec="avc1.4d4015" progressive="False" type="video">, <Stream: itag="242" mime_type="video/webm" res="240p" fps="25fps" vcodec="vp9" progressive="False" type="video">, <Stream: itag="160" mime_type="video/mp4" res="144p" fps="25fps" vcodec="avc1.4d400c" progressive="False" type="video">, <Stream: itag="278" mime_type="video/webm" res="144p" fps="25fps" vcodec="vp9" progressive="False" type="video">, <Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2" progressive="False" type="audio">, <Stream: itag="249" mime_type="audio/webm" abr="50kbps" acodec="opus" progressive="False" type="audio">, <Stream: itag="250" mime_type="audio/webm" abr="70kbps" acodec="opus" progressive="False" type="audio">, <Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus" progressive="False" type="audio">]
だから、我々のリストを得たStream
オブジェクト、ビデオのさまざまな側面に関する情報を私たちに与えている各々のストリームオブジェクト.我々がわかるならば
res
ストリームオブジェクトの属性です360p
, 1080p
, 720p
, 480p
, 240p
and 144p
違うvcodec
属性.このres
ビデオの解像度を表し、ダウンロードするために希望の解像度の任意のストリームを選択することができます.また、我々だけでなく、ダウンロードするオーディオオプションのストリームを利用していることに注意してください.
次に、ビデオの解像度のフィルタを作成し、それを簡単にオーディオダウンロードストリームに飛び込むことはありません.
解像度に基づくフィルタ・ストリーム
コードを更新
pytube_demo.py
以下のコードへのファイル# ./pytube_demo.py
from pytube import YouTube
def get_stream_for_res(streams, res):
"""
Filter on the basis of a given resolution. Return a list of filtered streams.
"""
stream = list(filter(lambda x: x.resolution == res, streams))
return stream
video_url = input("Enter YouTube Video URL: ").strip()
youtube_obj = YouTube(video_url)
video_res = input(f"Enter YouTube Video Resolution for {youtube_obj.title}: ").strip()
req_stream_obj = get_stream_for_res(youtube_obj.streams, video_res)
print(req_stream_obj)
ヒットを実行し、端末で次の出力を見ることができます.Enter YouTube Video URL: https://www.youtube.com/watch?v=fibIyvTleqc
Enter YouTube Video Resolution for AURORA - Daydreamer (Audio): 720p
[<Stream: itag="136" mime_type="video/mp4" res="720p" fps="25fps" vcodec="avc1.4d401f" progressive="False" type="video">, <Stream: itag="247" mime_type="video/webm" res="720p" fps="25fps" vcodec="vp9" progressive="False" type="video">]
まず、ビデオURLを取り、YouTube
オブジェクトを使用して、ビデオのタイトルを表示しながら、ユーザーからのカスタム入力を取るyoutube_obj.title
. 解像度を受け取った後720p
, 関数を呼び出しますget_stream_for_res
指定された解像度で指定されたストリームのリストをフィルターします.最後に、出力を見ることができ、リスト内に2つのストリームオブジェクトが含まれています.他のすべての属性が意味するものの上でダイビングなしで、単にリストの最初の要素をとって、ビデオをダウンロードしましょう.
ダウンロードストリームの解像度に基づいて
YouTube動画をダウンロードするには、次のコードを更新します.
# ./pytube_demo.py
from pytube import YouTube
def get_stream_for_res(streams, res):
stream = list(filter(lambda x: x.resolution == res, streams))
return stream
video_url = input("Enter YouTube Video URL: ").strip()
youtube_obj = YouTube(video_url)
video_res = input(f"Enter YouTube Video Resolution for {youtube_obj.title}: ").strip()
req_stream_obj = get_stream_for_res(youtube_obj.streams, video_res)[0]
req_stream_obj.download()
print(f"YouTube Video {youtube_obj.title} Downloaded With Resolution {video_res}")
上記のスクリプトを実行すると、次の出力とダウンロードしたビデオが表示されます.Enter YouTube Video URL: https://www.youtube.com/watch?v=fibIyvTleqc
Enter YouTube Video Resolution for AURORA - Daydreamer (Audio): 720p
YouTube Video AURORA - Daydreamer (Audio) Downloaded With Resolution 720p
今、私たちがスクリプトを実行したディレクトリをチェックするならば、我々はダウンロードされたビデオを見つけることができます.注意:
You may notice that some streams listed have both a video codec and audio codec, while others have just video or just audio, this is a result of YouTube supporting a streaming technique called Dynamic Adaptive Streaming over HTTP (DASH).
In the context of pytube, the implications are for the highest quality streams; you now need to download both the audio and video tracks and then post-process them with software like FFmpeg to merge them.
The legacy streams that contain the audio and video in a single file (referred to as “progressive download”) are still available, but only for resolutions 720p and below.
与えられたコードからダウンロードされたビデオには、その属性
progressive
is False
. 指定されたビデオURLには720p
しかし、あなたが気づいているならば、1つの流れがありますprogressive
ASTrue
and res
AS360p
.<Stream: itag="18" mime_type="video/mp4" res="360p" fps="25fps" vcodec="avc1.42001E" acodec="mp4a.40.2" progressive="True" type="video">
だから、先に行くとそれを実験し、チェックアウトすることを忘れないでくださいprogressive
属性.次は?
まあ、それは私からです.あなたがこれに続いて、最終的なスクリプトを走らせるならば、あなたはダウンロードされたビデオを働くディレクトリで見ています.
このユーティリティのUIを作成することにより、次のレベルにそれを取ることができます.あなたは、厳密にあなたに個人的であるサービスとしてこれを主催することができます.
あなたは何を待っている?Tkinter、PyQt、Kivy、フラスコまたはDjangoを使用して、ビデオの解像度とオーディオABRなどのためのオーディオとビデオの選択オプションのようなより多くの機能を使用してUIを作る
NO
すべてのそれらの迷惑な広告には、プライバシーの問題は、さまざまな拡張子にいくつかの認証とダウンロードした動画を完全に制御している.++
あなたのgithubプロフィールREADME?チェックアウトQuote - README ナムスト🙏
Reference
この問題について(ダウンロードこの動画またはmp 3), 我々は、より多くの情報をここで見つけました https://dev.to/siddharth2016/download-youtube-videos-using-python-your-own-youtube-downloader-3ohfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol