YouTubeから音声のダウンロードをしたい気持ちになった

はじめに

身内でクソ動画作ることってあるじゃないですか。
それのために、つべとかで音声素材欲しいことあるじゃないですか。
というわけで音声をダウンロードできるやつ軽く作れたら便利じゃない?って思ったんですよ。
最初の前提が異なる?そう・・・。

いやまあ世の中にそんな感じのもの無限にあるらしいんですけど、自称有識者に聞いたらなんちゃらかんちゃらエクスプローラー2ってやつが2になって使いにくくなったって聞いたんですよ。
名前ですか?忘れましたよ。

前にどこかで「ふつうになんやかんやすれば簡単にダウンロードするためのコードくらいかけましてよ!!」と耳に挟みましたの。
ってわけで書きました。

もっと本気で探せばダウンロードできるコードくらいネットに転がってるんじゃないかなぁって思った。

ついでにそのままmp3にしたいなぁって思ったのでmp3にしてます。
ffmpegは神っていうワード、とても理解をした。
それからダウンロードしたそのものはwebm形式らしいからそのファイルも勝手に捨ててくれるようになってます。
そうならなかったらごめんね。

解説

  1. pytubeってやつ使います。インストールしとけ。PytubeDocs
  2. ffmpeg使います。インストールしてるよね?
  3. 160kbpsにしてるけどここいじるとエラー吐いた。参考にしたサイト別のもの使ってたような気もするけど忘れた。
  4. Q「PAUSEってなに?」A「続行するには何かキーを押してください」

f:id:Amesiorine271108:20210402122121p:plain

from pytube import YouTube
import os
import subprocess

if not os.path.exists("audio"):
    os.mkdir("audio")
if not os.path.exists("mp3"):
    os.mkdir("mp3")

def DL_audio(DL_URL, abr="160kbps"):
    y = YouTube(DL_URL)
    q = y.streams.filter(abr=abr).all()
    q[0].download("audio")

URL = input("YouTubeURL:")

try:
    DL_audio(URL)
except Exception as e:
    print(e)
    subprocess.call('PAUSE', shell=True)


try:
    path = "audio"
    files = os.listdir(path)
    for file in files:
        print(file)
        fp = file.replace(".webm",".mp3")
        print(fp)
        cmd = 'ffmpeg -i "audio\\{}" "mp3\\{}"'.format(file,fp)
        print(cmd)
        returncode = subprocess.call(cmd)
        subprocess.call('PAUSE', shell=True)
        os.remove("audio\\{}".format(file))

except Exception as e:
    print("Error")
    print(e)
    subprocess.call('PAUSE', shell=True)


参考:
https://qiita.com/pycys/items/4ac9c80be216401eb68b
など