import os
import pandas as pd
from mutagen.mp4 import MP4
from os import path
# mp4ファイルからタイトルとアーティスト情報を取得する関数
def get_metadata(filepath):
metadata = {}
mp4 = MP4(filepath)
metadata['title'] = mp4.get('\xa9nam', ['none'])[0]
metadata['artist'] = mp4.get('\xa9ART', ['none'])[0]
return metadata
# mp4ファイルのディレクトリを指定
#dir_path = input("directory path >> ")
dir_path = path.dirname(__file__)
# CSVファイルの保存先を指定
csv_path = path.dirname(__file__)
# ファイル名、タイトル、アーティストのリストを格納するリストを初期化
data = []
# ディレクトリ内の全てのmp4ファイルに対して処理を実行
for filename in os.listdir(dir_path):
if filename.endswith('.mp4'):
filepath = os.path.join(dir_path, filename)
metadata = get_metadata(filepath)
data.append([filename,filename, metadata['title'], metadata['artist']])
# データをDataFrameに変換してCSVに書き出し
df = pd.DataFrame(data, columns=['filename', 'Newfilename','title', 'artist'])
df.to_csv(os.path.join(csv_path, "list.csv"), index=False)
# 修正が完了したらCSVファイルを読み込み、mp4ファイルのメタデータを修正する
while True:
user_input = input("CSVファイルを修正しましたか? (Yes/No): ")
if user_input.lower() == 'yes' or 'y':
# CSVを読み込む
df = pd.read_csv(os.path.join(csv_path, "list.csv"))
# mp4ファイルのメタデータを修正する
for index, row in df.iterrows():
old_filepath = os.path.join(dir_path, row['filename'])
new_filename = row['Newfilename']
new_filepath = os.path.join(dir_path, new_filename)
os.rename(old_filepath, new_filepath)
mp4 = MP4(new_filepath)
mp4['\xa9nam'] = row['title']
mp4['\xa9ART'] = row['artist']
mp4.save()
# ファイル名を更新
row['filename'] = new_filename
# DataFrameをCSVに書き出し
df.to_csv(os.path.join(csv_path, "list.csv"), index=False)
break
elif user_input.lower() == 'no' or 'n':
print("CSVファイルを修正してください。")
else:
print("YesまたはNoで答えてください。")
print("書き換えが完了しました。")
【Python】mp4ファイルからファイル名、タイトル、アーティストを取得してCSVで書き出す
コメントを残す