Youtube_dlでYoutubeダウンローダー作ってみた(Python)

動画ダウンロードのみ対応してます。

import youtube_dl
import os
from pathlib import Path
import glob, re
import shutil
def ModeSelect():
    print('現在音楽ダウンロードには非対応\n')
    mode = input('Please input a mode (movie/musics)>')
    return mode

def MusiDown():
    ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s%(ext)s',
                                'postprocessors': [{
                                    'key': 'FFmpegExtractAudio',
                                    'preferredcodec': 'mp3',
                                    'preferredquality': '192',
                                    }]
                                })
    url = input('Please input the URL >')

    with ydl:
        result = ydl.extract_info(
            url,
            download=True
            )

def MoveDown():
    ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s%(ext)s'})
    url = input('Please input the URL >')

    with ydl:
        result = ydl.extract_info(
            url,
            download=True
            )

def MusiChangeName():
    new_name = input('Please input a name of the music >')
    
    fname_before1 = glob.glob('*mp3')
    fname_before2 = glob.glob('*mkv')
    fname_after1 = new_name + '.mp3'
    fname_after2 = new_name + '.mkv'

    try:
        os.rename(fname_before1[0], fname_after1)
        fname = fname_after1
    except:
        os.rename(fname_before2[0], fname_after2)
        fname = fname_after2
        
    return fname

def MoveChangeName():
    new_name = input('\n\nPlease input a name of the video >')
    
    fname_before1 = glob.glob('*mp4')
    fname_before2 = glob.glob('*mkv')
    fname_after1 = new_name + '.mp4'
    fname_after2 = new_name + '.mkv'

    try:
        os.rename(fname_before1[0], fname_after1)
        fname = fname_after1
    except:
        os.rename(fname_before2[0], fname_after2)
        fname = fname_after2
        
    return fname

def MoveFile(mode, fname):
    if mode == 'movie':
        shutil.move(fname, './videos/' + fname)
    else:
        shutil.move(fname, './musics/' + fname)

mode = ModeSelect()

if mode == 'movie':
    MoveDown() 
else:
    MusiDown()


fname = MoveChangeName()
MoveFile(mode, fname)

print('\n\n Complete!')

関数の勉強のために、機能をたくさんの関数に分けて描いてみました。

以下実行結果

まずモードを選びます(映像or音声)。次に対象のurlを入力します。

保存時のファイル名は自分で決められます。

あらかじめ作っておいたmoviesフォルダにファイルが保存されて、終了です。

  • 困った点

モードをmusicにすると、「ffmpegをインストールしろ!」ってエラーが出るんですよ。してるっての。。

ということで、音声のみのダウンロードはまだできません。

解決したら更新版を上げますね。


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です