暇があるから人である。暇でなければ機械だ

人生暇化を目指す人が書くブログ

カラオケアプリ製作(2) : pythonでのytdlpの使い方 youtubeからmp3をダウンロード

なんでも歌えるカラオケアプリを作るにあたって音源を確保する必要があったので
いろいろ探してたらyt-dlpなるものを発見した。
pythonで実装しよう!としたのだが、実行環境がコマンドライン上がメインだったので
コード内で実行するのに苦戦した。同じ苦しみを味合わないようにメモを残します。

①まずインストール

pip install yt-dlp

必要ならば仮想環境でのインストール

コマンドライン上で動くか確認

yt-dlp [youtubeのURL]

と打った時にyoutubeから動画がダウンロードされるか確認

pythonに組み込んでみる(mp3をダウンロード)

def download_with_info(youtube_url, output_dir):
    out_dir = "./output"
    os.makedirs(out_dir, exist_ok=True)
    ydl_opts = {
        "quiet": True,
        "format": "bestaudio/best",
        "outtmpl": f"{out_dir}/%(id)s.%(ext)s",#指定フォルダに[videoid].mp3で保存する
        "postprocessors": [{
            "key": "FFmpegExtractAudio",
            "preferredcodec": "mp3",
            "preferredquality": "192",
        }]
    }
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(youtube_url, download=True)
        return info#動画の情報を返す

④おまけ: プレイリストからビデオID達をリストにして返す

def get_playlist_videoids(playlist_url):
    ydl_opts = {
        'quiet': True,
        'extract_flat': True,
    }
    try:
        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(playlist_url, download=False)
            if 'entries' in info:
                video_ids = [video_data['id'] for video_data in info['entries']]
            else:
                video_ids = []  # 'entries'キーが存在しない場合は空のリストを返す
    except yt_dlp.utils.DownloadError as e:
        print(f"エラーが発生しました: {e}")
        video_ids = []  # エラーが発生した場合は空のリストを返す
    return video_ids

サービス紹介

洋楽も最新曲もニッチな曲も歌えるカラオケアプリを作りました!
ぜひ使ってみてください。
カラオケアプリKalyokeへアクセス