|
@@ -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
|
}
|