幻魔ナイトブログ

主に絵、音楽、プログラミングなどについて書きます。

youtubeの動画をダウンロードしよう!

f:id:MahiroN:20200823135552p:plain

概要

皆さんお疲れ様! 今日はpythonをつかってyoutubeをダウンロードしてみましょう。

私は普段作業用bgmにYoutubeを活用していますが、広告が強制的に入ってくるから正直作業に集中できないですよね。

てことで今回はpythonをつかってYouTubeをダウンロードしてみましょう。


事前に必要なこと

  • youtubeに公開タイプのプレイリストを作っておいて、そこにダウンロードしたい動画を入れておきましょう。

作ったものと使い方

  • ↓のコードを自分の環境に置く。今回は「download_youtuibe.py」という名前にします。
#!/usr/bin/env python
# coding: utf-8

import os
import glob
import youtube_dl
import sys
# consts
VIDEO_DIR = os.path.join(os.getcwd(), "videos")
OPTS = {
    "outtmpl": "{VIDEO_DIR}/%(title)s.mp4".format(VIDEO_DIR=VIDEO_DIR),
    'ignoreerrors': True
}

def download(url):
    """
    Download video from YouTube.

    Parameters
    ----------
    url : str
        YouTube video URL

    Returns
    ----------
    info : dict
        Downloaded video info.
    """
    print("Downloading {url} start..".format(url=url))
    with youtube_dl.YoutubeDL(OPTS) as y:
        info = y.extract_info(url, download=True)
        print("Downloading {url} finish!".format(url=url))
    return info

def rename(info):
    """
    Rename downloaded video filename as camelcase.

    Parameters
    ----------
    info : dict
        Downloaded video info.
    """
    title = info["title"]
    pattern = '{VIDEO_DIR}/{title}.mp4'.format(VIDEO_DIR=VIDEO_DIR, title=title)
    for v in glob.glob(pattern, recursive=True):
        print("{title}.mp4 found! Renaming start..".format(title=title))
        file_path = os.path.join(VIDEO_DIR, v)
        new_file_path = file_path.replace(' ', '_')
        os.rename(file_path, new_file_path)
        print("Renaming finish!".format(title))

if __name__ == "__main__":
    args = sys.argv
    url = args[1]
    info = download(url)
    rename(info)
  • あとはコマンドを実行するだけ↓
python download_youtube_mp3.py <対象のURL>

これでスクリプトをおいたディレクトリにvideosというディレクトリが生成されてそこに動画がダウンロードされます。

お問合わせはこちら