Script Powershell pour trier ses vidéos

Je possède près d’un 1 To de vidéos sur un disque externe… lequel est régulièrement plein avec les nouveautés.

Je cherchais donc un moyen de pouvoir trier les trier facilement en les ouvrant une à une dans VLC histoire de voir quelques extraits et me rappeler l’histoire puis m’afficher un popup pour la conserver (choix par défaut) ou l’effacer.

Voici un petit script Powershell que j’ai fait pour l’occasion :

[void] [System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

# Demande de sélectionner un répertoire
$OpenFolderDialog = New-Object System.Windows.Forms.FolderBrowserDialog
$OpenFolderDialog.SelectedPath = [System.Environment+SpecialFolder]::UserProfile
$OpenFolderDialog.ShowDialog()
$SearchPath = $OpenFolderDialog.SelectedPath

# Parcours récursif du répertoire
$SearchDirInfo = New-Object System.IO.DirectoryInfo $SearchPath
$SearchEnumerator = $SearchDirInfo.EnumerateFiles("*", [System.IO.SearchOption]::AllDirectories).GetEnumerator()

foreach ($Result in $SearchEnumerator)
{
    # Affiche le chemin dans la console
    Write-Host "Found" $Result.FullName

    # Ouvre VLC
    & 'C:\Program Files\VideoLAN\VLC\vlc.exe' $Result.FullName | Out-Null

    # Pose la question de le conserver
    $Answer = [System.Windows.Forms.MessageBox]::Show( `
        [string]::Concat("Conserver ", $Result.Name, " ?"), `
        "Conserver le fichier ?", `
        [System.Windows.MessageBoxButton]::YesNo,
        [System.Windows.Forms.MessageBoxIcon]::Question,
        [System.Windows.Forms.MessageBoxDefaultButton]::Button1
    )

    if ($Answer -eq [System.Windows.MessageBoxResult]::Yes)
    {
        Write-Host "A garder !"
    }
    elseif ($Answer -eq [System.Windows.MessageBoxResult]::No)
    {
        Write-Host "A supprimer !"
        Remove-Item -Verbose $Result.FullName
    }
    else
    {
        Write-Error "Oops, réponse invalide"
        break
    }
}

Résultat, je le lance depuis l’explorateur (clic-droit > Exécuter avec Powershell), il me demande de sélectionner le répertoire de départ :

Capture-1

Puis, pour chaque vidéo, m’ouvre VLC pour que je visionne quelques extraits et, à la fermeture, pose la question de la conservation :

Capture-2

Si le script est ouvert depuis une invite Powershell, on peut voir clairement le chemin du fichier et s’il a était conservé ou supprimé :

Capture-2

Bonus : J’avais fait il y a quelques temps un script équivalent en shell, moins évolué et non documenté (pas drôle sinon). Il utilise zenity pour afficher le dialogue et indique également la date de création du fichier. Le voici :

#!/bin/sh
find "${PWD}" -type f | sort -R | while read -r f
do
    vlc --no-qt-error-dialogs  "${f}" >/dev/null
    dc="$(stat "${f}" | sed 's/\\/\\\\/')"
    if ! zenity --question --text="Conserver '${f}' ?\nDate de création : ${dc}" --no-wrap
    then
        rm -fv "${f}"
    fi
done

Utilisation :

cd /mnt/usb && sh script.sh

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s