#@title ファイル名一覧をCSVで書き出して、変更する
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', [''])[0]
metadata['artist'] = mp4.get('\xa9ART', [''])[0]
metadata['genre'] = mp4.get('\xa9gen', [''])[0]
metadata['album'] = mp4.get('\xa9alb', [''])[0]
metadata['day'] = mp4.get('\xa9day', [''])[0]
metadata['comment'] = mp4.get('\xa9cmt', [''])[0]
return metadata
# mp4ファイルのディレクトリを指定
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'], metadata['genre'], metadata['album'], metadata['day'], metadata['comment']])
# データをDataFrameに変換してCSVに書き出し
df = pd.DataFrame(data, columns=['filename', 'Newfilename', 'title', 'artist', 'genre', 'album', 'day', 'comment'])
df.to_csv(os.path.join(csv_path, "henko.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, "henko.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'] = str(row['title'])
mp4['\xa9ART'] = str(row['artist'])
mp4['\xa9gen'] = str(row['genre'])
mp4['\xa9alb'] = str(row['album'])
mp4['\xa9day'] = str(row['day'])
mp4['\xa9cmt'] = str(row['comment'])
mp4.save()
# ファイル名を更新
row['filename'] = new_filename
# DataFrameをCSVに書き出し
df.to_csv(os.path.join(csv_path, "henko.csv"), index=False)
break
elif user_input.lower() == 'no' or 'n':
print("CSVファイルを修正してください。")
else:
print("YesまたはNoで答えてください。")
print("完了しました。")
編集ソフトが有る
まあそうなのだが
フリーソフト使ってタイトルとか編集すると
書き換え失敗してるのか
再生不可能になるMP4がちらほらと
データ壊れるのは勘弁してほしい
なんでだろ
リストにしてるので
ジャンルとか一気に修正できる