Comment scripter la manipulation de dossiers et fichiers DaVinci Resolve


Dans DaVinci Resolve, l’un des outils les plus important à notre disposition est le Media Pool, qui nous permet de gérer nos clips, images et autres ressources multimédias. Pour faciliter cette gestion et accroître votre productivité, j’ai rassemblé un recueil de méthodes et de techniques pour optimiser l’utilisation du Media Pool.

Dans cet article, nous allons explorer les différentes facettes de la gestion du Media Pool, notamment la création de dossiers, la vérification de l’existence de dossiers, la récupération de clips, et la navigation à travers les dossiers et sous-dossiers. Ces astuces vous aideront à gagner du temps pour la création de script.

Récupération de liste de dossiers

A la racine du MédiaPool

Dans DaVinci Resolve, la structure du Media Pool est hiérarchique, avec un « folder root » (racine de dossier) qui contient tous les dossiers et sous-dossiers.

Pour obtenir ce dossier racine On a récupéré l’objet  projectManager pour récupérer l’objet currentProject pour enfin récupérer MediaPool. Et avec cet objet on utilise la méthode GetRootFolder() qui nous retourne un objet Folder. Cet objet Étant le dossier racine du Media pool. À partir de là, on peut utiliser rootFolder pour lister les dossiers à l’intérieur du dossier racine.

projectManger = resolve.GetProjectManager()
currentProject = projectManger.GetCurrentProject()
mediaPool = currentProject.GetMediaPool()
rootFolder = mediaPool.GetRootFolder()
listFolderInRoot = rootFolder.GetSubFolderList()

Cette liste, on peut maintenant l’afficher grâce à une simple boucle. 

for folder in listFolderInRoot:
    print(folder.GetName())

résultat :

dossier-test1
dossier-test2
dossier-test3

Dans le dossier courant du MédiaPool où se trouve l’utilisateur

Le « dossier courant du Media Pool » fait référence au dossier actuellement sélectionné par l’utilisateur dans la structure du Media Pool. C’est très utiles pour un script permettant à l’utilisateur de choisir ou l’action va se produire.

projectManger = resolve.GetProjectManager()
currentProject = projectManger.GetCurrentProject()
mediaPool = currentProject.GetMediaPool()
currentFolder = mediaPool.GetCurrentFolder()
listFolderInCurrent = currentFolder.GetSubFolderList()

Cette liste, on peut maintenant l’afficher grâce à une simple boucle. 

for folder in listFolderInCurrent:
    print(folder.GetName())

résultat :

dossier-courant-test1
dossier-courant-test2
dossier-courant-test3

Supprimer le dossier nommé « test » à la racine du média pool.

Pour illustrer davantage notre exploration de la gestion du Media Pool, prenons un exemple concret : la suppression d’un dossier nommé « test » à la racine du Media Pool. Cette tâche nous permettra de mettre en pratique les concepts que nous avons déjà abordés et de découvrir de nouvelles méthodes pour gérer nos médias.

Lister les Dossiers à la Racine du Media Pool :

Tout d’abord, nous devons obtenir une liste des dossiers présents dans le dossier racine. Cela nous permettra de rechercher le dossier spécifique que nous souhaitons supprimer.

projectManger = resolve.GetProjectManager()
currentProject = projectManger.GetCurrentProject()
mediaPool = currentProject.GetMediaPool()
rootFolder = mediaPool.GetRootFolder()
listFolderInRoot = rootFolder.GetSubFolderList()

Rechercher le Dossier « test »

Une fois que nous avons la liste des dossiers à la racine, nous parcourrons cette liste pour identifier le dossier portant le nom « test ».

folderIndex = None
for i, folder in enumerate(listFolderInRoot):
    if folder.GetName() == "test":
        folderIndex = i

Utiliser la Méthode pour le Supprimer

Une fois que nous avons identifié le dossier « test », nous utiliserons une méthode appropriée pour le supprimer du Media Pool.

if folderIndex:
    mediaPool.DeleteFolders(listFolderInRoot[folderIndex])

Créer un dossier à la racine

La subtilité réside dans le fait que nous devons récupérer le dossier racine du Media Pool et l’utiliser pour insérer un nouveau dossier. Cela signifie que nous utilisons un objet (le dossier racine) dans un autre (le Media Pool) pour effectuer cette opération.

La méthode que nous allons utiliser s’appelle AddFolder() et elle nécessite que nous spécifiions le dossier parent dans lequel le nouveau dossier sera créé. Grâce à la récupération du dossier racine, nous pourrons insérer notre nouveau dossier directement à la racine du Media Pool.

projectManger = resolve.GetProjectManager()
currentProject = projectManger.GetCurrentProject()
mediaPool = currentProject.GetMediaPool()
rootFolder = mediaPool.GetRootFolder()

# création 
mediaPool.AddSubFolder(rootFolder , "mondossier")

Vous devriez maintenant voir un dossier Du nom de “mondossier” s’afficher dans votre Media pool.

Insérer un média provenant du disque dur

Maintenant que nous avons exploré la gestion des dossiers dans le Media Pool, passons à l’ajout d’un élément essentiel : un média provenant de notre disque dur. Notre objectif est de placer ce média à la racine du Media Pool.

IMPORTANT : monter la destination pour vos média !

Avant de plonger dans l’ajout de médias au Media Pool de DaVinci Resolve, il y a une étape cruciale à ne pas négliger : la configuration du Media Storage. Cette étape est essentielle pour que DaVinci Resolve puisse accéder et gérer correctement les médias depuis votre disque dur.

Le Media Storage de DaVinci Resolve est l’interface qui vous permet de spécifier les emplacements depuis lesquels le logiciel peut accéder aux médias. Si vous ne configurez pas correctement le Media Storage en ajoutant les dossiers de destination, DaVinci Resolve ne pourra pas trouver les médias que vous essayez d’importer.

Comment Configurer le Media Storage

  1. Ouvrez le Media Storage : Dans DaVinci Resolve, accédez à l’onglet « Media » en bas de l’interface. À partir de là, ouvrez le panneau « Storage » (Stockage).
  2. Ajoutez les Dossiers de Destination : Cliquez sur « Add » (Ajouter) pour spécifier les dossiers ou les disques durs depuis lesquels vous souhaitez importer des médias. Veillez à ce que les dossiers contenant les médias soient inclus dans la liste.
  3. Montez les Disques durs : Assurez-vous que les disques durs que vous avez ajoutés sont montés et accessibles à partir de votre système d’exploitation. Sinon, DaVinci Resolve ne pourra pas accéder aux médias.

Cette configuration préalable est cruciale pour que DaVinci Resolve puisse trouver et importer les médias à partir de vos disques durs. Si cette étape n’est pas correctement réalisée, vous risquez de rencontrer des problèmes lors de l’ajout de médias au Media Pool.

Ajout du média au Média Pool

pathMedia =  "C:/medias/image.png"
mediaStorage = resolve.GetMediaStorage()
mediaStorage.AddItemsToMediaPool(pathMedia)