python

Pythonを利用してYoutubeの動画をダウンロードする方法

パッケージをインストールして利用すれば、数行のコードを書くだけで実装できます。

それでは早速やっていきます。

まず、必要なパッケージをpip経由でインストールします。

pip install pafy youtube_dl

pafyはYoutubeコンテンツをダウンロードしてメタ情報を取得するためのライブラリで、youtube_dlが動画として保存するためのライブラリです。

ストリーミング再生をしたいだけならpafyで事足りますが、動画保存までとなるとyoutube_dlが必要なります。

コードを記述します。

import pafy
import youtube_dl

# 動画のURL
link = 'https://youtu.be/d0tU18Ybcvk'
video = pafy.new(link)
# 一番高い解像度を選択
best = video.getbest()

# DLされる解像度と拡張子の確認
print(best.resolution, best.extension)
# DL開始->裏側でyoutube_dlが使われる
best.download()

コメントで、コードの説明を残してあります。

後はこのファイルをターミナルなどで実行すればいいだけです。すると次のようになり完了するとローカルに動画が保存されます。

オペレーションで一つずつやるのが嫌な方は、CSVなどでダウンロードしたい動画一覧のURLを用意しておいて、pythonでCSVを読み取り、上記のコードを実行をする仕組みを構築するのが早いです。

CSVからダウンロード先を読み取る

とりあえず動作するか確かめたい方は次のサンプルをダウンロードして試してください

サンプルCSV

コードを追記します。

import pafy
import youtube_dl
import csv

with open('video.csv') as f:
    links = f.read().split("\n")
    for i in links:
        video = pafy.new(i)
        best = video.getbest()

        print(best.resolution, best.extension)
        best.download()

これである程度、自動化することができました。

さらに頑張りたい方は、スクレイピングしてCSVに書き出すのを自動化する、もしくはpython(selenium)で直接Youtubeの動画URLを取得しにいくという方法もあります。