Reveal Selected Clip: Add directories within session folder to the searched directories in addition to audio files folder.
Title
Reveal Selected Clip: Add directories within session folder to the searched directories in addition to audio files folder.
What do you expect to happen when you run the script/macro?
Add directories within the session folder to the searched directories in addition to the audio files folder to be recursively searched.
Namely:
Pro Tools session Folder/Video Files
Pro Tools session Folder/Imports
I added the following lines to the script but isn't enough clearly:
65 let videoFilesFolder = ${sessionFolder}/Video Files
;
66 let importsFolder = ${sessionFolder}/Imports
;
74 videoFilesFolder,
75 importsFolder,
Are you seeing an error?
What happens when you run this script?
It is unable to find files which are present. Namely Video Files in the video files folder.
How were you running this script?
I used a keyboard shortcut within the target app
How important is this issue to you?
4
Details
{ "inputExpected": "Add directories within the session folder to the searched directories in addition to the audio files folder to be recursively searched.\n\nNamely:\n\nPro Tools session Folder/Video Files\nPro Tools session Folder/Imports\n\nI added the following lines to the script but isn't enough clearly:\n\n\n\n65 let videoFilesFolder = `${sessionFolder}/Video Files`;\n66 let importsFolder = `${sessionFolder}/Imports`;\n\n\n74 videoFilesFolder,\n75 importsFolder,", "inputIsError": false, "inputWhatHappens": "It is unable to find files which are present. Namely Video Files in the video files folder.", "inputHowRun": { "key": "-Mpfwh4RkPLb2LPwjePT", "title": "I used a keyboard shortcut within the target app" }, "inputImportance": 4, "inputTitle": "Reveal Selected Clip: Add directories within session folder to the searched directories in addition to audio files folder." }
Source
const { searchPaths } = event.props;
function getClipFilename() {
sf.ui.proTools.appActivateMainWindow();
//Clear search, to ensure Clip Rename will work
sf.keyboard.press({
keys: "cmd+shift+d",
});
// Open Rename, copy Filename and close Rename
sf.ui.proTools.menuClick({
menuPath: ["Clip", "Rename..."],
});
var nameWin = sf.ui.proTools.windows.whoseTitle.is('Name').first;
nameWin.elementWaitFor({}, `Clip Rename didn't work`);
let clipInfoGrp = nameWin.groups.whoseTitle.is('Clip Info').first;
if (clipInfoGrp.frame.h < 30)
clipInfoGrp.elementClick();
sf.waitFor({ callback: () => clipInfoGrp.invalidate().frame.h >= 30 }, `Couldn't open Clip Info tab`);
let nameElement = clipInfoGrp.children.whoseRole.is("AXStaticText").allItems[2];
let name = nameElement.value.value;
nameWin.buttons.whoseTitle.is('OK').first.mouseClickElement();
nameWin.elementWaitFor({ waitForNoElement: true });
return name;
}
function locateFile({
filename,
searchPaths
}) {
var ext = filename.split('.').slice(-1)[0].toLowerCase();
var filenameLowerCase = filename.toLowerCase();
var filenameNoExtLowerCase = filename.split('.').slice(0, -1).join('.').toLowerCase();
var additionalExtensions = ['l', 'c', 'r', 'ls', 'rs', 'lfe'];
var candidates = [];
for (let searchPath of searchPaths) {
for (let candidatePath of sf.file.directoryGetFiles({
path: searchPath,
searchPattern: `*.${ext}`,
isRecursive: true
}).paths.filter(p => {
var fn = p.split('/').slice(-1)[0].toLowerCase();
if (fn === filenameLowerCase) return true;
if (additionalExtensions.some(ae => fn === `${filenameNoExtLowerCase}.${ae}.${ext}`)) return true;
return false;
})) {
candidates.push(candidatePath);
}
}
return candidates;
}
function main() {
let sessionFolder = sf.ui.proTools.mainWindow.sessionPath.split('/').slice(0, -1).join('/');
let audioFilesFolder = `${sessionFolder}/Audio Files`;
let videoFilesFolder = `${sessionFolder}/Video Files`;
let importsFolder = `${sessionFolder}/Imports`;
let clipFilename = getClipFilename();
let candidates = locateFile({
filename: clipFilename,
searchPaths: [
audioFilesFolder,
videoFilesFolder,
importsFolder,
...(searchPaths || []),
],
});
if (candidates.length === 0)
log(`Could not find file "${clipFilename}" in search path(s)`);
else if (candidates.length === 1) {
sf.system.exec({ commandLine: `open -R "${candidates[0]}"` });
} else {
log('Multiple files found.');
let selectedPath = sf.interaction.popupSearch({
items: candidates.map(c => ({
name: c,
}))
}).item.name;
sf.system.exec({ commandLine: `open -R "${selectedPath}"` });
}
}
main();
Links
User UID: VsW63KQlOvQ4pS3VRklEUcKKQz42
Feedback Key: sffeedback:VsW63KQlOvQ4pS3VRklEUcKKQz42:-NtRz4TjQ2Pv-A5UoY99
Feedback ZIP: EwsmayAdDxLpgIBZsNfp+jNSB2M28QCZKNZmKyYgnt+vEHB+DdcImeYHLWPyImhT4Dl34kOwgoUbUpHdKczYagF5vvTLj5DFhacdvDprXq6Bzuv96EjMXn8pictg1239YPF0QIL/BuxlRpORmeIutZljcH8embBdFtKQGQIEVupN28qmwqGLsE4o/kD8KoRkAyrMuR3HAx2Bc8HR/menWqsD8k58gh0t0DCPHw2tDTcPlTkTg/um4wySySzik3f5d0vnCnYUvYrgmnYufB8aExqc6lAN6qEGok/6BY2o5my3bAXJ5289hNGMXrTIlcbJVkkCSSHdHdoctqUbXD21xfTJTBZfbQqcVfwxOdXqX7s=