-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
108 lines (94 loc) · 2.77 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const fs = require("fs");
const path = require("path");
const notifier = require("node-notifier");
//const os = require("os");
//you can use that to get the path of the downloads folder
//const downloadDir = path.join(os.homedir(), "Downloads");
//or you can use that to set the path of the downloads folder
const downloadDirs = ["C:/Users/Public/Downloads", "C:/Users/sekou/Downloads"];
// 📁 Dossiers de destination
const folders = {
pdf: "pdf & docs",
doc: "pdf & docs",
docx: "pdf & docs",
txt: "secrets",
json: "codes",
csv: "codes",
js: "codes",
py: "codes",
java: "codes",
html: "codes",
css: "codes",
ts: "codes",
xml: "codes",
jsonc: "codes",
zip: "zips",
rar: "zips",
"7z": "zips",
tar: "zips",
gz: "zips",
exe: "setups",
msi: "setups",
apk: "setups",
iso: "setups",
jpg: "icons & img",
jpeg: "icons & img",
png: "icons & img",
gif: "icons & img",
svg: "icons & img",
webp: "icons & img",
ico: "icons & img",
mp4: "videos",
avi: "videos",
mov: "videos",
mkv: "videos",
wmv: "videos",
ppt: "presentations",
pptx: "presentations",
odp: "presentations",
};
// 🕓 Date du jour pour nom de log
const now = new Date();
const dateString = now.toISOString().split("T")[0];
let totalMovedFiles = 0;
downloadDirs.forEach((downloadPath) => {
const logDir = path.join(downloadPath, "log_trie");
const logFile = path.join(logDir, `log-${dateString}.txt`);
let logData = `🗂 Log de tri du ${now.toLocaleString()}\n\n`;
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
fs.readdir(downloadPath, (err, files) => {
if (err)
return console.error(`❌ Erreur lecture dossier ${downloadPath}:`, err);
let movedFiles = 0;
files.forEach((file) => {
const filePath = path.join(downloadPath, file);
if (fs.lstatSync(filePath).isFile()) {
const ext = path.extname(file).slice(1).toLowerCase();
const folderName = folders[ext];
if (folderName) {
const destinationDir = path.join(downloadPath, folderName);
const destinationPath = path.join(destinationDir, file);
if (!fs.existsSync(destinationDir)) {
fs.mkdirSync(destinationDir, { recursive: true });
}
fs.renameSync(filePath, destinationPath);
logData += `✅ ${file} déplacé vers "${folderName}"\n`;
movedFiles++;
totalMovedFiles++;
}
}
});
fs.writeFileSync(logFile, logData);
console.log(`📁 ${movedFiles} fichier(s) déplacé(s) dans ${downloadPath}`);
});
});
// 🔔 Notification finale
setTimeout(() => {
notifier.notify({
title: "📂 Tri des téléchargements terminé",
message: `${totalMovedFiles} fichier(s) déplacé(s) au total.`,
sound: true,
});
}, 3000);