ダウンロードこの動画またはmp 3


あなたはいつもリスクであなたのプライバシーをYouTubeのビデオダウンローダを探すのは面倒だと思いますか?外部拡張を使用してYouTubeのビデオをダウンロードすると、その拡張子を使用している間、マウスクリック広告と他の問題のために気が狂っているかもしれません.
だから、なぜ我々は単に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でより多くの:
  • Pytubeは非常に深刻な、軽量、依存関係のないPythonライブラリ(およびコマンドラインユーティリティ)YouTubeの動画をダウンロードするためです.
  • PytubeはPythonで書かれた軽量ライブラリです.サードパーティの依存関係はなく、信頼性が高い.
  • Pytubeはまた、簡単にパイプライン化を行います.このように、さまざまなダウンロードイベントのコールバック関数を指定できますon progress or on complete .
  • 最後に、Pytubeはまた、すぐに端末からビデオをダウンロードすることができますコマンドラインユーティリティが含まれています.
  • 特徴:
  • プログレッシブ&ダッシュストリームのサポート.
  • 完全なプレイリストをダウンロードするためのサポート.
  • 容易に登録するon_download_progress & on_download_complete コールバック.
  • コマンドラインインターフェイスが含まれます.
  • キャプショントラックのサポート.
  • キャプショントラックを出力します.srt フォーマット( subpサブタイトル).
  • サムネイルURLをキャプチャする機能.
  • 広く文書化されたソースコード.
  • サードパーティの依存関係(純粋なPythonで書かれていません).
  • 高いレベルでは、スクリプトでライブラリを使用してビデオをダウンロードするには、まずライブラリからYouTubeクラスをインポートする必要がありますし、それをビデオURLの引数を渡します.次に、そのYouTubeオブジェクトに存在するさまざまなストリームをダウンロードすることができます.
    さて、この情報を使用して最初の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 すべてのそれらの迷惑な広告には、プライバシーの問題は、さまざまな拡張子にいくつかの認証とダウンロードした動画を完全に制御している.
  • ちょうどあなたのオープンソースの旅を開始?チェックするのを忘れないでくださいHello Open Source
  • あなたのパイソンプロジェクトを披露するか、またはちょうどそこに探索する?チェックAwesome Python Repos
  • ゼロからシンプルで素晴らしいゲームをしたいですか?チェックアウトPongPong
  • 欲しい++ あなたのgithubプロフィールREADME?チェックアウトQuote - README
  • 次回まで!
    ナムスト🙏