Browse Source

Encodage du script + Readme

master
Figg 3 months 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,4 +1,4 @@
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 2
 function Get-ImageVideoExtensions {
3 3
     param (
4 4
         [string] $sourceUrl = "https://cdn.jsdelivr.net/gh/jshttp/mime-db@v1.52.0/db.json"
@@ -16,7 +16,7 @@ function Get-ImageVideoExtensions {
16 16
     return $extensions
17 17
 }
18 18
 
19
-# Fonction pour décompresser les archives
19
+# Fonction pour décompresser les archives
20 20
 function Decompress-ArchiveIfNeeded {
21 21
     param(
22 22
         [string]$ArchivePath,
@@ -35,12 +35,12 @@ function Decompress-ArchiveIfNeeded {
35 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 39
 function Get-OriginalDate {
40 40
     param (
41 41
         $file
42 42
     )
43
-    # Tentative de lecture des données EXIF
43
+    # Tentative de lecture des données EXIF
44 44
     $exif = Try { [System.Drawing.Image]::FromFile($file.FullName) } Catch { $null }
45 45
 
46 46
     if ($exif) {
@@ -58,7 +58,7 @@ function Get-OriginalDate {
58 58
     }
59 59
 }
60 60
 
61
-# Demande des paramètres si non fournis
61
+# Demande des paramètres si non fournis
62 62
 if (-not $args[0] -or -not $args[1]) {
63 63
     $SourceDir = Read-Host "Entrez le chemin du dossier source"
64 64
     $DestinationDir = Read-Host "Entrez le chemin du dossier destination"
@@ -67,24 +67,24 @@ if (-not $args[0] -or -not $args[1]) {
67 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 71
 if ($SourceDir -match "\.zip$") {
72 72
     $SourceDir = Decompress-ArchiveIfNeeded -ArchivePath $SourceDir -ExtractPath $env:TEMP
73 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 75
         return
76 76
     }
77 77
 }
78 78
 
79 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 82
 Get-ChildItem -Path $SourceDir -Recurse -File | ForEach-Object {
83 83
     $file = $_
84 84
     $extension = $file.Extension.ToLower().TrimStart('.')
85 85
 
86 86
     if ($extension -in $validExtensions) {
87
-        # Tentative de lecture des données EXIF
87
+        # Tentative de lecture des données EXIF
88 88
         $exif = Try { [System.Drawing.Image]::FromFile($file.FullName) } Catch { $null }
89 89
 
90 90
         if ($exif) {
@@ -102,9 +102,9 @@ Get-ChildItem -Path $SourceDir -Recurse -File | ForEach-Object {
102 102
         }
103 103
         
104 104
         if (-Not $originalDate) {
105
-            $targetFolder = Join-Path -Path $DestinationDir -ChildPath "Non daté"
105
+            $targetFolder = Join-Path -Path $DestinationDir -ChildPath "Non daté"
106 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 108
             $year = $originalDate.Year
109 109
             $monthNum = $originalDate.Month.ToString("00")
110 110
             $monthName = $originalDate.ToString("MMMM", [System.Globalization.CultureInfo]::GetCultureInfo("fr-FR"))
@@ -118,11 +118,11 @@ Get-ChildItem -Path $SourceDir -Recurse -File | ForEach-Object {
118 118
         # Copier le fichier dans le dossier de destination
119 119
         Copy-Item -Path $file.FullName -Destination $targetFolder
120 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 126
 if ($SourceDir -like "$env:TEMP\*") {
127 127
     Remove-Item -Path $SourceDir -Recurse -Force
128 128
 }

+ 16
- 3
README.md View File

@@ -1,5 +1,18 @@
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