Audacityのラベルを書きだしたファイルをYouTubeのタイムコード一覧に変換するPythonスクリプトを作成してください。

❓ Prompt

Audacityのラベルを書きだしたファイルをYouTubeのタイムコード一覧に変換するPythonスクリプトを作成してください。

💬 Answer

以下は、Audacityのラベルを記録したファイルをYouTubeのタイムコード一覧に変換するPythonスクリプトの例です。

import re

# ラベルを記録したファイルのパス
file_path = "labels.txt"

# YouTubeの動画の開始時間(秒数)
video_start_time = 0

# ラベルを格納するリスト
labels = []

# ファイルを読み込んでラベルを取得
with open(file_path, "r") as f:
    lines = f.readlines()
    for line in lines:
        match = re.search(r"(\\d+\\.\\d+)\\s+(\\d+\\.\\d+)\\s+(.*)", line)
        if match:
            start_time = float(match.group(1))
            end_time = float(match.group(2))
            label_text = match.group(3).strip()
            labels.append((start_time, end_time, label_text))

# タイムコード一覧を出力
for i, label in enumerate(labels):
    start_time = label[0] + video_start_time
    end_time = label[1] + video_start_time
    label_text = label[2]
    print(f"{i+1}\\t{convert_to_timecode(start_time)}\\t{convert_to_timecode(end_time)}\\t{label_text}")

# 秒数をYouTubeのタイムコード形式に変換する関数
def convert_to_timecode(seconds):
    m, s = divmod(seconds, 60)
    h, m = divmod(m, 60)
    return f"{int(h):02d}:{int(m):02d}:{int(s):02d}"

上記のスクリプトでは、labels.txtという名前のファイルからラベルを読み取り、video_start_timeで指定された開始時間を加えて、YouTubeのタイムコード形式に変換して出力します。出力されるタイムコードは、タブ区切りで番号、開始時間、終了時間、ラベルテキストの順に表示されます。タイムコード形式への変換には、convert_to_timecodeという関数を使用しています。この関数は、与えられた秒数をhh:mm:ssの形式の文字列に変換します。