Hello,
I’ve been trying for several days to write a script that reproduces a folder from the file explorer into a media bin in Vegas Pro, preserving the folder hierarchy and importing media files into their corresponding sub-bins. However, I haven’t been able to find the appropriate command to do this. I’ve studied the public API and the FAQ, but couldn’t find a solution.
Could you tell me how to achieve this, or what command should be used?
I’m attaching the script I’ve been trying to create. When I run it, I get the error 0x80131600 with the following details:
D:\Downloads\vegas_scripting_api\Importation.cs(20): The type or namespace name 'MediaBinCollection' could not be found (are you missing a using directive or an assembly reference?)
D:\Downloads\vegas_scripting_api\Importation.cs(21): 'ScriptPortal.Vegas.MediaPool' does not contain a definition for 'Bins' and no accessible extension method 'Bins' accepting a first argument of type 'ScriptPortal.Vegas.MediaPool' could be found (are you missing a using directive or an assembly reference?)
D:\Downloads\vegas_scripting_api\Importation.cs(22): 'ScriptPortal.Vegas.MediaBin' does not contain a definition for 'Bins' and no accessible extension method 'Bins' accepting a first argument of type 'ScriptPortal.Vegas.MediaBin' could be found (are you missing a using directive or an assembly reference?)
D:\Downloads\vegas_scripting_api\Importation.cs(51): 'ScriptPortal.Vegas.MediaBin' does not contain a definition for 'Items' and no accessible extension method 'Items' accepting a first argument of type 'ScriptPortal.Vegas.MediaBin' could be found (are you missing a using directive or an assembly reference?)
D:\Downloads\vegas_scripting_api\Importation.cs(55): 'ScriptPortal.Vegas.Vegas' does not contain a definition for 'ShowMessageBox' and no accessible extension method 'ShowMessageBox' accepting a first argument of type 'ScriptPortal.Vegas.Vegas' could be found (are you missing a using directive or an assembly reference?)
using System;
using System.IO;
using ScriptPortal.Vegas;
public class EntryPoint
{
public void FromVegas(Vegas vegas)
{
string rootPath = @"D:\Pictures\test";
foreach (string folder in Directory.GetDirectories(rootPath, "*", SearchOption.AllDirectories))
{
string relativePath = folder.Substring(rootPath.Length).TrimStart('\\');
string[] binNames = relativePath.Split('\\');
MediaBin currentBin = null;
foreach (string binName in binNames)
{
MediaBinCollection binCollection = (currentBin == null)
? vegas.Project.MediaPool.Bins
: currentBin.Bins;
MediaBin subBin = null;
// Search if the bin exist
foreach (MediaBin b in binCollection)
{
if (b.Name == binName)
{
subBin = b;
break;
}
}
// Create the bin if it doesn't exist
if (subBin == null)
{
subBin = binCollection.Add(binName);
}
currentBin = subBin;
}
// Import media in the latest bin
foreach (string file in Directory.GetFiles(folder))
{
try
{
Media media = vegas.Project.MediaPool.AddMedia(file);
currentBin.Items.Add(media);
}
catch (Exception ex)
{
vegas.ShowMessageBox("Erreur lors de l'import : " + file + "\n" + ex.Message);
}
}
}
}
}
