0
0

YouTube動画をダウンロード保存する環境の構築

Posted at

概要

YouTube動画をダウンロード保存したくなった場合に、自前でそれを行える環境を用意できるよう、手順をまとめました。ダウンロードには yt-dlp を使っています。特に珍しくはないと思います。

Python 3 環境を構築します

Linuxベースが無難と思います。当方 Ubuntu 20.04.5 LTS を使いました。Windows等では試していません。

既存の Python 環境を汚さないで Python 3 環境を構築するため、pyenv をインストールします。

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

pyenv をシェルで使えるようにするため、次の設定3行を ~/.bashrc に追記します。

~/.bashrc 末尾に追記
export PYENV_ROOT="${HOME}/.pyenv"
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init --path)"

再ログインするとシェルで pyenv が使えるようになります。

$ pyenv versions
* system

pyenv を用いて Python 3 環境をダウンロード構築します。

$ pyenv install 3.12.1
$ pyenv global 3.12.1
$ pyenv versions
  system
* 3.12.1 (set by /home/myname/.pyenv/version)

これで Python 3 環境をホームディレクトリ以下へ構築できました。

Python の yt-dlp モジュールを pip でインストールします

次の1行を実行するだけです。

$ pip install yt-dlp

ダウンロード保存プログラムを作成します

次のコードを download_youtube_movie.py として保存します。このプログラムは、引数で与えられた YouTube 動画URL に対して yt-dlp を使ってダウンロードし .mp4 として保存します。例として、YouTube 動画URLが「 https://www.youtube.com/watch?v=AbCdEfGh123 」である場合、保存先ファイル名は AbCdEfGh123.mp4 になります。

download_youtube_movie.py
import sys
from yt_dlp import YoutubeDL

def movie_get(urls):
    options = {
            'outtmpl': '%(id)s' + '.mp4',
            'format': 'best'
            }
    with YoutubeDL(options) as ydl:
        ydl.download([urls])

if len(sys.argv) < 2:
    print("Usage: python download_youtube_movie.py <youtube_url>")
    sys.exit(1)

youtube_url = sys.argv[1]
movie_get(youtube_url)

ダウンロード一括実行スクリプトを作成します

次のスクリプトを run_download.sh として保存します。このスクリプトは、引数で与えられたURL一覧ファイルから1行ずつURLを読み込んで、それぞれについて前述の download_youtube_movie.py を実行します。YouTube 負荷を軽減するため sleep 5 を入れています。

run_download.sh
#! /bin/bash

URLFILE=$1
if [ ! -r ${URLFILE} ] ; then
        echo "Usage: $0 <URL file>"
        exit 1
fi

for ELINE in `cat ${URLFILE}` ; do
        echo -n "${ELINE} ... "
        ~/.pyenv/shims/python ./download_youtube_movie.py ${ELINE}
        if [ $? = 0 ] ; then
                echo "[OK]"
        else
                echo "[ERROR]"
        fi
        sleep 5
done

実行権限を与えておくと起動しやすいです。

$ chmod +x run_download.sh

ダウンロードURL一覧ファイルを作成します

ダウンロードしたい YouTube 動画のURLを1行に1つずつ書いたファイルを用意します。次は単なる例です。

myurls.txt
https://www.youtube.com/watch?v=AbCdEfGh123
https://www.youtube.com/watch?v=IjKlMnOp456
https://www.youtube.com/watch?v=QrStUvWx789

ダウンロード一括実行スクリプトを実行します

$ ./run_download.sh ./myurls.txt

以上です。

Have a happy YouTube life!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0