【python】フォルダ内の動画ファイル(MP4)を音声ファイル(MP3)に一括置換する方法

pythonを使って、コマンドラインで簡単に、フォルダ内の動画ファイル(mp4)を、音声ファイル(mp3)に一括変換できるプログラムを作りました

の続きなので、上記で必要なプラグインなどをインストールした後に行ってください

実行するコマンド

$ # フォルダ内一括置換の場合
$ python convert.py mp3 {変換元ファイルのディレクトリ} {出力先ディレクトリ}


$ # 1ファイルのみの変換の場合
$ python convert.py mp3 {変換元ファイルパス} {出力先ディレクトリ}

用意するプログラムファイル(convert.py)

import os
import sys
import subprocess as sp
import glob

output_extension = sys.argv[1]
path = sys.argv[2].replace('\\', '/')
output_dir = sys.argv[3].replace('\\', '/')

# 末尾のスラッシュ「/」を削除する
if (output_dir[-1] == '/'):
    output_dir = output_dir[:-1]

if (path[-1] == '/'):
    path = path[:-1]

def convert(input_file, output_extension, output_dir):
    # ディレクトリ作成
    os.makedirs(output_dir, exist_ok=True)

    file_name = os.path.splitext(os.path.basename(input_file))[0]
    output_file_path = output_dir + '/' +file_name + '.'+output_extension

    cmd_list = ['ffmpeg', '-i', input_file, output_file_path]
    cmd = ' '.join(cmd_list)
    print(cmd)
    sp.call(cmd, shell=True)

if os.path.isdir(path):
    # ディレクトリの場合
    files = glob.glob(path+'/*')
    for file in files:
        tmp = file.replace('\\', '/').split('/')
        input_file = path + '/' + file.replace('\\', '/').split('/')[len(tmp) - 1]
        convert(input_file, output_extension, output_dir)
else:
    # ファイルの場合
    input_file = path
    convert(input_file, output_extension, output_dir)