【Python】mp4ファイルのメタデータを編集

#@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がちらほらと

データ壊れるのは勘弁してほしい

なんでだろ

リストにしてるので
ジャンルとか一気に修正できる

コメントを残す

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


*