ゆっくりMovieMaker4βのymmpファイルの動画や画像のリンク切れ確認

powershell コンピュータ
powershell

ゆっくりMovieMaker4のプロジェクトで参照している動画や画像ファイルの保存場所を移動してしまい、
リンク切れがおきているのでymmpファイル内で参照しているパスを表示するPowerShellスクリプトを作成しました。

# ymmpファイル内の動画や画像のリンク切れ確認

param(
    [string]
    $input_file="YMMPファイルのパス"
)

$data = (Get-Content $input_file | ConvertFrom-Json)
$data.Timeline.Items | Where-Object {
    $_.'$type' -in ("YukkuriMovieMaker.Project.Items.VideoItem, YukkuriMovieMaker", "YukkuriMovieMaker.Project.Items.ImageItem, YukkuriMovieMaker")
} | Where-Object {
    -not(Test-Path $_.FilePath)
} | ForEach-Object {
    $_.FilePath
}

 

ワンライナー

(Get-Content "ymmpファイルのパス" `
 | ConvertFrom-Json).Timeline.Items `
 | ? { 'YukkuriMovieMaker.Project.Items.VideoItem, YukkuriMovieMaker' -eq $_.'$type' } `
 | % { [PSCustomObject]@{'FilePath' = $_.FilePath; `
 'Exists' = (Test-Path $_.FilePath); `
 'LastWriteTime' = (Test-Path $_.FilePath) ? (Get-Item $_.FilePath).LastWriteTime : ""} }

チャプターテキストの作成(Drax用)

(Get-Content "ymmpファイルのパス" | ConvertFrom-Json).TimeLines.Items | ? { 'YukkuriMovieMaker.Project.Items.VideoItem, YukkuriMovieMaker' -eq $_.'$type' } | % -begin {$i = 0; "00:00:00.000 000"} -process { $i++; $ms = $_.Frame * 1000 / 60; $h = [int][Math]::Truncate($ms / 3600000);$m = [int][Math]::Truncate(($ms % 3600000) / 60000); $s = [int][Math]::Truncate(($ms % 60000) / 1000); $rms = [int][Math]::Truncate(($ms % 1000)); ("{0:D2}:{1:D2}:{2:D2}.{3:D3} {4:D3}" -f $h, $m, $s, $rms, $i) + " " + $_.Frame} > "出力先テキストのパス"

コメント