Browse Source

Encodage du script + Readme

master
Figg 1 month ago
parent
commit
fd5a0d3cd3
3 changed files with 29 additions and 16 deletions
  1. 13
    13
      ArrangePictures.ps1
  2. 16
    3
      README.md
  3. BIN
      images/readme_img1.png

+ 13
- 13
ArrangePictures.ps1 View File

1
-# Fonction pour récupérer une Array des extensions d'images et vidéos depuis un json
1
+# Fonction pour récupérer une Array des extensions d'images et vidéos depuis un json
2
 function Get-ImageVideoExtensions {
2
 function Get-ImageVideoExtensions {
3
     param (
3
     param (
4
         [string] $sourceUrl = "https://cdn.jsdelivr.net/gh/jshttp/mime-db@v1.52.0/db.json"
4
         [string] $sourceUrl = "https://cdn.jsdelivr.net/gh/jshttp/mime-db@v1.52.0/db.json"
16
     return $extensions
16
     return $extensions
17
 }
17
 }
18
 
18
 
19
-# Fonction pour décompresser les archives
19
+# Fonction pour décompresser les archives
20
 function Decompress-ArchiveIfNeeded {
20
 function Decompress-ArchiveIfNeeded {
21
     param(
21
     param(
22
         [string]$ArchivePath,
22
         [string]$ArchivePath,
35
     return $null
35
     return $null
36
 }
36
 }
37
 
37
 
38
-# Fonction pour obtenir la date de création d'une image/vidéo
38
+# Fonction pour obtenir la date de création d'une image/vidéo
39
 function Get-OriginalDate {
39
 function Get-OriginalDate {
40
     param (
40
     param (
41
         $file
41
         $file
42
     )
42
     )
43
-    # Tentative de lecture des données EXIF
43
+    # Tentative de lecture des données EXIF
44
     $exif = Try { [System.Drawing.Image]::FromFile($file.FullName) } Catch { $null }
44
     $exif = Try { [System.Drawing.Image]::FromFile($file.FullName) } Catch { $null }
45
 
45
 
46
     if ($exif) {
46
     if ($exif) {
58
     }
58
     }
59
 }
59
 }
60
 
60
 
61
-# Demande des paramètres si non fournis
61
+# Demande des paramètres si non fournis
62
 if (-not $args[0] -or -not $args[1]) {
62
 if (-not $args[0] -or -not $args[1]) {
63
     $SourceDir = Read-Host "Entrez le chemin du dossier source"
63
     $SourceDir = Read-Host "Entrez le chemin du dossier source"
64
     $DestinationDir = Read-Host "Entrez le chemin du dossier destination"
64
     $DestinationDir = Read-Host "Entrez le chemin du dossier destination"
67
     $DestinationDir = $args[1]
67
     $DestinationDir = $args[1]
68
 }
68
 }
69
 
69
 
70
-# Vérifie si le dossier source est une archive
70
+# Vérifie si le dossier source est une archive
71
 if ($SourceDir -match "\.zip$") {
71
 if ($SourceDir -match "\.zip$") {
72
     $SourceDir = Decompress-ArchiveIfNeeded -ArchivePath $SourceDir -ExtractPath $env:TEMP
72
     $SourceDir = Decompress-ArchiveIfNeeded -ArchivePath $SourceDir -ExtractPath $env:TEMP
73
     if (-not $SourceDir) {
73
     if (-not $SourceDir) {
74
-        Write-Host "L'archive n'a pas pu être décompressée."
74
+        Write-Host "L'archive n'a pas pu être décompressée."
75
         return
75
         return
76
     }
76
     }
77
 }
77
 }
78
 
78
 
79
 $validExtensions = Get-ImageVideoExtensions
79
 $validExtensions = Get-ImageVideoExtensions
80
 
80
 
81
-# Parcourt tous les fichiers récursivement dans le dossier source
81
+# Parcourt tous les fichiers récursivement dans le dossier source
82
 Get-ChildItem -Path $SourceDir -Recurse -File | ForEach-Object {
82
 Get-ChildItem -Path $SourceDir -Recurse -File | ForEach-Object {
83
     $file = $_
83
     $file = $_
84
     $extension = $file.Extension.ToLower().TrimStart('.')
84
     $extension = $file.Extension.ToLower().TrimStart('.')
85
 
85
 
86
     if ($extension -in $validExtensions) {
86
     if ($extension -in $validExtensions) {
87
-        # Tentative de lecture des données EXIF
87
+        # Tentative de lecture des données EXIF
88
         $exif = Try { [System.Drawing.Image]::FromFile($file.FullName) } Catch { $null }
88
         $exif = Try { [System.Drawing.Image]::FromFile($file.FullName) } Catch { $null }
89
 
89
 
90
         if ($exif) {
90
         if ($exif) {
102
         }
102
         }
103
         
103
         
104
         if (-Not $originalDate) {
104
         if (-Not $originalDate) {
105
-            $targetFolder = Join-Path -Path $DestinationDir -ChildPath "Non daté"
105
+            $targetFolder = Join-Path -Path $DestinationDir -ChildPath "Non daté"
106
         } else {
106
         } else {
107
-            # Créer le dossier de destination basé sur l'année et le mois
107
+            # Créer le dossier de destination basé sur l'année et le mois
108
             $year = $originalDate.Year
108
             $year = $originalDate.Year
109
             $monthNum = $originalDate.Month.ToString("00")
109
             $monthNum = $originalDate.Month.ToString("00")
110
             $monthName = $originalDate.ToString("MMMM", [System.Globalization.CultureInfo]::GetCultureInfo("fr-FR"))
110
             $monthName = $originalDate.ToString("MMMM", [System.Globalization.CultureInfo]::GetCultureInfo("fr-FR"))
118
         # Copier le fichier dans le dossier de destination
118
         # Copier le fichier dans le dossier de destination
119
         Copy-Item -Path $file.FullName -Destination $targetFolder
119
         Copy-Item -Path $file.FullName -Destination $targetFolder
120
     } else {
120
     } else {
121
-        Write-Host "Fichier ignoré: $($file.FullName)"
121
+        Write-Host "Fichier ignoré: $($file.FullName)"
122
     }
122
     }
123
 }
123
 }
124
 
124
 
125
-# Suppression du dossier temporaire si nécessaire
125
+# Suppression du dossier temporaire si nécessaire
126
 if ($SourceDir -like "$env:TEMP\*") {
126
 if ($SourceDir -like "$env:TEMP\*") {
127
     Remove-Item -Path $SourceDir -Recurse -Force
127
     Remove-Item -Path $SourceDir -Recurse -Force
128
 }
128
 }

+ 16
- 3
README.md View File

1
-# PicturesArrangerScript
1
+# PicturesArranger
2
 
2
 
3
-Ce script Powershell récupère les fichiers images/vidéos contenus dans une source et les copie dans une destination en les rangeant selon une arborescence <année>/<mois> qui se base sur la date de création des fichiers.
3
+Ce script Powershell récupère les fichiers images/vidéos contenus dans une source et les copie dans une destination en les rangeant selon une arborescence qui se base sur la date de création des fichiers.
4
 
4
 
5
-Je l'utilise pour trier d'un bloc toutes mes données dans mon SSD externe.
5
+Je l'utilise pour trier d'un bloc toutes mes données dans mon SSD externe.
6
+
7
+## Utilisation
8
+
9
+Vous pouvez lancer le script depuis l'explorateur de fichiers Windows en faisant clic droit dessus puis en sélectionnant "Exécuter avec Powershell"
10
+
11
+![Illustration.](/images/readme_img1.png "Exécuter avec Powershell")
12
+
13
+Il vous demandera deux chemins ; Le premier vers le dossier source ou récupérer les fichiers, vous pouvez aussi lui donner une archive qu'il décompressera le temps de l'exécution, le deuxième vers le dossier destination ou ranger les images récupérées, il le créera si besoin.
14
+
15
+Vos fichiers rangées dans des sous-dossiers par année puis par mois en se basant sur la date où le fichier a été créé pour la première fois.
16
+Par exemple "2023\\03 - Mars\\"
17
+
18
+Il arrive que certains fichiers ne puissent être datés et soient rangés dans un dossier "Non daté"

BIN
images/readme_img1.png View File


Loading…
Cancel
Save