Youtube to wav

프로필

2024年12月20日

306 0

開発理由

趣味で録音をしているのだが、ときどき公式音源が必要になる場面がある。
そんなときは、だいたいネット上の “youtube to wav” サイトを使っていた。
中でも長く使っていたサイトが最近になって急に動かなくなり、
他のサイトはというと、フィッシングまがいだったり、音源ファイルの最後に不要な無音が追加されていたり、
あるいは「◯曲まで」と制限されていて、寄付しないとダウンロードできない曲数に上限がついていたりと、地味にストレスだった。

イラつくなら、お前がやれよ

というある人の言葉を思い出し、俺が自分で作ることにした。

開発過程

Pythonには「こんなライブラリもあるのかよ…」と感心するくらい色んなライブラリが揃っている。
今回使用したのはpydubとyt-dlp。

最初は pytubeとmoviepyを使ってみたけど、
pytubeは最近アップデートが遅れてるのか、

エラー発生: HTTP Error 403: Forbidden

を連発してきたし、moviepyに至っては理由は分からんが、poetryの仮想環境下でimportが通らないという謎のバグに遭遇した。

Traceback (most recent call last):
  File "/Users/-/Desktop/Youtube-to-wav/app/main.py", line 2, in <module>
    from moviepy.editor import AudioFileClip
ModuleNotFoundError: No module named 'moviepy.editor'

poetry showで確認してpoetry removeして再インストールしてもmodule not found errorが直らず、
結局pydubとyt-dlpに乗り換えることにした。

最終的に完成したコード

import os

from pydub import AudioSegment
from yt_dlp import YoutubeDL


def download_youtube_audio(url, output_path="downloads"):
    try:
        if not os.path.exists(output_path):
            os.makedirs(output_path)

        ydl_opts = {
            "format": "bestaudio/best",
            "outtmpl": os.path.join(output_path, "%(title)s.%(ext)s"),
            "postprocessors": [
                {
                    "key": "FFmpegExtractAudio",
                    "preferredcodec": "wav",
                }
            ],
        }

        with YoutubeDL(ydl_opts) as ydl:
            print("ダウンロード開始...")
            info = ydl.extract_info(url, download=True)
            print(f"ダウンロード完了: {info['title']}")

            wav_path = os.path.join(output_path, f"{info['title']}.wav")
            print(f"変換完了: {wav_path}")
            return wav_path

    except Exception as e:
        print(f"エラー発生: {str(e)}")
        return None


if __name__ == "__main__":
    url = input("YouTubeのURLを入力してください: ")
    download_youtube_audio(url)

録音作業は基本的にWindowsでやる派なので、Windows上でクローンしてffmpegをインストールしたあと、テストをしてみたら、しっかり動いてくれた。

ただし、mac環境だとhomebrewで

brew install ffmpeg

とワンクリックで終わるところが、
Windowsでは ffmpeg の公式サイトにアクセスしてダウンロード → フォルダ名を変更 → Cドライブに移動 → 環境変数の設定、とめちゃくちゃ手間がかかる。ここがちょっとだけ面倒だった。

でも、これでもう広告も無音も寄付の催促もなく、俺が欲しいときに、YouTubeの音源をWAVで手に入れられるようになった。

github リポジトリ

github

#파이썬 #토이프로젝트

コメント 0件

コメントを投稿するにはログインが必要です