function OnInit(initData) { initData.name = 'DurationAV'; initData.version = '2024-11-14'; initData.url = 'https://resource.dopus.com/t/durationav-duration-columns-for-folders/42701'; initData.desc = 'Display duration for folders.'; initData.default_enable = true; initData.min_version = '13.0'; } function OnAddColumns(addColData) { var col = addColData.AddColumn(); col.name = 'DurationAV'; col.method = 'OnColumn'; col.justify = 'right'; col.type = 'duration'; col.multicol = true; var col = addColData.AddColumn(); col.name = 'DurationAudio'; col.method = 'OnColumn'; col.justify = 'right'; col.type = 'duration'; col.multicol = true; var col = addColData.AddColumn(); col.name = 'DurationVideo'; col.method = 'OnColumn'; col.justify = 'right'; col.type = 'duration'; col.multicol = true; var col = addColData.AddColumn(); col.name = 'DurationAVAvg'; col.method = 'OnColumn'; col.justify = 'right'; col.type = 'duration'; col.multicol = true; var col = addColData.AddColumn(); col.name = 'DurationAudioAvg'; col.method = 'OnColumn'; col.justify = 'right'; col.type = 'duration'; col.multicol = true; var col = addColData.AddColumn(); col.name = 'DurationVideoAvg'; col.method = 'OnColumn'; col.justify = 'right'; col.type = 'duration'; col.multicol = true; } function OnColumn(scriptColData) { var item = scriptColData.item; var durationAudio = 0; var durationVideo = 0; var countAudio = 0; var countVideo = 0; if (item.is_dir) { var folderEnum = DOpus.FSUtil().ReadDir(item); while (!folderEnum.complete) { var folderItem = folderEnum.Next(); var meta = folderItem.metadata; if (meta == 'audio') { var d = meta.audio.duration; if (typeof d == 'number') { durationAudio += d; countAudio++; } } else if (meta == 'video') { var d = meta.video.duration; if (typeof d == 'number') { durationVideo += d; countVideo++; } } } folderEnum.Close(); } else { var meta = item.metadata; if (meta == 'audio') { durationAudio = meta.audio.duration; if (typeof durationAudio != 'number') durationAudio = 0; countAudio = 1; } else if (meta == 'video') { durationVideo = meta.video.duration; if (typeof durationVideo != 'number') durationVideo = 0; countVideo = 1; } } scriptColData.columns('DurationAudio').value = durationAudio; scriptColData.columns('DurationVideo').value = durationVideo; scriptColData.columns('DurationAV').value = durationAudio + durationVideo; scriptColData.columns('DurationAudioAvg').value = countAudio ? durationAudio / countAudio : '---'; scriptColData.columns('DurationVideoAvg').value = countVideo ? durationVideo / countVideo : '---'; scriptColData.columns('DurationAVAvg').value = (countAudio + countVideo) ? (durationAudio + durationVideo) / (countAudio + countVideo) : '---'; }