14 Commits
1.1 ... 1.1.1

Author SHA1 Message Date
MasterAcnolo
6ed59fd272 Merge pull request #4 from MasterAcnolo/Notification-System
Notification system + YT DLP Update
2025-07-20 18:22:10 +02:00
MasterAcnolo
4df1cb207f ReadME Update 2025-07-20 18:17:19 +02:00
MasterAcnolo
d03e3bc7e5 Notif + Update YT DLP 2025-07-20 15:27:40 +02:00
MasterAcnolo
df02acb97f Notification + Open On CLICK 2025-07-03 18:28:56 +02:00
MasterAcnolo
6ef04700ab NPM Update 2025-07-03 15:39:03 +02:00
MasterAcnolo
766694f330 ReadME Fix 2025-07-02 22:38:38 +02:00
MasterAcnolo
93380b2f36 ReadME Fix 2025-07-02 22:38:15 +02:00
MasterAcnolo
8c969d694f ReadME Fix 2025-07-02 22:37:30 +02:00
MasterAcnolo
f2f3d42e8c ReadME Fix 2025-07-02 22:36:53 +02:00
MasterAcnolo
8d8973acfc ReadME Fix 2025-07-02 22:35:59 +02:00
MasterAcnolo
281bff2379 Merge pull request #3 from MasterAcnolo/1.0.2
1.1.1
2025-07-02 22:33:09 +02:00
MasterAcnolo
e30f54050f ReadME FIX 2025-07-02 22:28:30 +02:00
MasterAcnolo
0ae808c1a0 Merge branch '1.0.2' of https://github.com/MasterAcnolo/MP3-Downloader into 1.0.2 2025-07-02 22:27:46 +02:00
MasterAcnolo
2598573844 Package Fix 2025-07-02 22:27:44 +02:00
9 changed files with 66 additions and 29 deletions

1
.gitignore vendored
View File

@@ -2,4 +2,5 @@
/downloads /downloads
/dist /dist
logs/*.json logs/*.json
logs/*.log
/out /out

View File

@@ -1,21 +1,26 @@
# Freedom Loader # Freedom Loader
<!-- Release -->
![Static Badge](https://img.shields.io/badge/Build-1.1.1--beta-yellow?style=flat&logo=Test) ![Static Badge](https://img.shields.io/badge/Release-1.1.1-blue?style=flat&logo=Test)
![Static Badge](https://img.shields.io/badge/Latest%20Release_-1.0.1-blue?style=flat) ![Static Badge](https://img.shields.io/badge/Build-1.0.2%20Beta-yellow?style=flat) <!-- Build (Next Release) -->
![Static Badge](https://img.shields.io/badge/Build-1.1.2--beta-yellow?style=flat&logo=Test)
> This project aims to enable free, open-source, and unrestricted downloading of Video/Audio content. Eventually, it will allow users to choose > This project aims to enable free, open-source, and unrestricted downloading of Video/Audio content. Eventually, it will allow users to choose
## 🚀 Features ## 🚀 Features
✅ Video Download (MP4) - ✅ Video download (MP4)
✅ Audio Download (MP3) - ✅ Audio-only download (MP3)
✅ Detailed Logs (Console + Logs) - ✅ Full playlist support
✅ Automatic Fetch of Information - ✅ Automatic metadata retrieval (title, duration, etc.)
✅ Playlist Download - ✅ Detailed logs: console and rotating files (7 days)
✅ Theme selection - ✅ Custom output path selection with saving
✅ Custom output path selection for videos - ✅ Multiple graphical themes available for interface customization
- ✅ Simple, intuitive, and responsive interface
- ✅ Notification system when download finished (Click = Open Output Folder)
--- ---
@@ -52,7 +57,7 @@ Try restarting the application, checking the logs, or opening the browser's deve
- [ ] Extract / Split video using native chapters - [ ] Extract / Split video using native chapters
- [ ] Parallel downloads - [ ] Parallel downloads
- [ ] Skip sponsored parts of videos - [ ] Skip sponsored parts of videos
- [ ] Custom output path selection (default **C:\Users\Username\Downloads** with a **Freedom Loader Output** folder created) - [x] ~~Custom output path selection (default **C:\Users\Username\Downloads** with a **Freedom Loader Output** folder created)~~
--- ---

View File

@@ -1,21 +1,26 @@
# Freedom Loader # Freedom Loader
<!-- Release -->
![Static Badge](https://img.shields.io/badge/Build-1.1.1--beta-yellow?style=flat&logo=Test) ![Static Badge](https://img.shields.io/badge/Release-1.1.1-blue?style=flat&logo=Test)
![Static Badge](https://img.shields.io/badge/Latest%20Release_-1.0.1-blue?style=flat) ![Static Badge](https://img.shields.io/badge/Build-1.0.2%20Beta-yellow?style=flat) <!-- Build (Next Release) -->
![Static Badge](https://img.shields.io/badge/Build-1.1.2--beta-yellow?style=flat&logo=Test)
> Ce projet a pour but de permettre le téléchargement de contenu Vidéo/Audio de manière gratuite, open source et libre. Il permettra à terme de choisir > Ce projet a pour but de permettre le téléchargement de contenu Vidéo/Audio de manière gratuite, open source et libre. Il permettra à terme de choisir
## 🚀 Fonctionnalités ## 🚀 Fonctionnalités
✅ Téléchargement Vidéo (MP4) - ✅ Téléchargement de vidéos (MP4)
✅ Téléchargement Audio (MP3) - ✅ Téléchargement audio uniquement (MP3)
✅ Logs détaillés (console + fichiers logs) - ✅ Support des playlists complètes
✅ Récupération automatique des informations - ✅ Récupération automatique des métadonnées (titre, durée, etc.)
✅ Téléchargement des playlists - ✅ Logs détaillés : console et fichiers rotatifs (7 jours)
✅ Choix de thèmes - ✅ Choix du chemin de sortie personnalisé avec sauvegarde
✅ Choix du chemin de sortie des vidéos personnalisés - ✅ Plusieurs thèmes graphiques au choix pour personnaliser linterface
- ✅ Interface simple, intuitive
- ✅ Notification quand le téléchargement est fini (Click = Ouverture Dossier Output)
--- ---
@@ -52,7 +57,7 @@ Essayez de relancer l'application, de consulter les logs ou d'ouvrir la console
- [ ] Extraction / découpage de la vidéo via chapitrage natif - [ ] Extraction / découpage de la vidéo via chapitrage natif
- [ ] Téléchargements parallèles - [ ] Téléchargements parallèles
- [ ] Suppression automatique des parties sponsorisées (skip sponsor) - [ ] Suppression automatique des parties sponsorisées (skip sponsor)
- [ ] Choix personnalisé du chemin de sortie (par défaut **C:\Users\Utilisateur\Downloads**, où un dossier **Freedom Loader Output** sera créé) - [x] ~~Choix personnalisé du chemin de sortie (par défaut **C:\Users\Utilisateur\Downloads**, où un dossier **Freedom Loader Output** sera créé)~~
--- ---

BIN
build/confirm-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

10
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "freedom-loader", "name": "freedom-loader",
"version": "1.0.2", "version": "1.1.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "freedom-loader", "name": "freedom-loader",
"version": "1.0.2", "version": "1.1.1",
"dependencies": { "dependencies": {
"chalk": "^4.1.2", "chalk": "^4.1.2",
"debug": "^4.4.1", "debug": "^4.4.1",
@@ -2792,9 +2792,9 @@
} }
}, },
"node_modules/electron": { "node_modules/electron": {
"version": "37.1.0", "version": "37.2.0",
"resolved": "https://registry.npmjs.org/electron/-/electron-37.1.0.tgz", "resolved": "https://registry.npmjs.org/electron/-/electron-37.2.0.tgz",
"integrity": "sha512-Fcr3yfAw4oU392waVZSlrFUQx4P+h/k31+PRgkBY9tFx9E/zxzdPQQj0achZlG1HRDusw3ooQB+OXb9PvufdzA==", "integrity": "sha512-dE6+qeg6SBUVd5d8CD2+GH82kh+gF1v40+hs+U+UOno681NMSGmBtgqwldQRpbvtnQDD7V2M9Cpfr3+Abw7aBg==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",

View File

@@ -1,7 +1,7 @@
{ {
"name": "freedom-loader", "name": "freedom-loader",
"productName": "Freedom Loader", "productName": "Freedom Loader",
"version": "1.0.2", "version": "1.1.1",
"author": "MasterAcnolo", "author": "MasterAcnolo",
"description": "Freedom Loader, parce que nous le valons bien", "description": "Freedom Loader, parce que nous le valons bien",
"main": "main.js", "main": "main.js",
@@ -43,6 +43,12 @@
"buildResources": "build" "buildResources": "build"
}, },
"asar": false, "asar": false,
"extraResources": [
{
"from": "build/confirm-icon.png",
"to": "confirm-icon.png"
}
],
"win": { "win": {
"target": "nsis", "target": "nsis",
"icon": "build/installer-icon.ico" "icon": "build/installer-icon.ico"

View File

@@ -18,11 +18,12 @@ const router = express.Router();
const { execFile } = require("child_process"); const { execFile } = require("child_process");
const path = require("path"); const path = require("path");
const fs = require("fs"); const fs = require("fs");
const { Notification } = require("electron");
const logger = require("../logger").logger; const logger = require("../logger").logger;
// Path vers le fichier exécutable yt-dlp (outil tiers pour le téléchargement) // Path vers le fichier exécutable yt-dlp (outil tiers pour le téléchargement)
const ytDlpPath = path.join(__dirname, '../../yt-dlp.exe'); // const ytDlpPath = path.join(__dirname, '../../yt-dlp.exe');
const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.06.30.exe');
router.post("/", (req, res) => { router.post("/", (req, res) => {
try { try {
@@ -144,6 +145,25 @@ router.post("/", (req, res) => {
child.on("close", (code) => { child.on("close", (code) => {
logger.info(`yt-dlp terminé avec code de sortie : ${code}`); logger.info(`yt-dlp terminé avec code de sortie : ${code}`);
if (code === 0) { if (code === 0) {
const iconPath = path.join(process.resourcesPath, "confirm-icon.png"); // la sécurité pour toutes les machines
console.log("Icon path pour la notif :", iconPath);
const notif = new Notification({
title: "Freedom Loader",
body: "Ton téléchargement est terminé, clique ici pour l'ouvrir.",
icon: iconPath,
});
notif.on("click", () => {
console.log("Notification cliquée !");
//Pour pouvoir ouvrir le dossier de la vidéo
const { shell } = require("electron");
shell.openPath(requestedOutputFolder);
});
notif.show();
res.send("✅ Téléchargement terminé !"); res.send("✅ Téléchargement terminé !");
} else { } else {
res.status(500).send(`❌ yt-dlp a échoué avec le code : ${code}`); res.status(500).send(`❌ yt-dlp a échoué avec le code : ${code}`);

View File

@@ -24,7 +24,7 @@ const fs = require("fs");
const { logger } = require("../logger"); // On récupère ton logger Winston const { logger } = require("../logger"); // On récupère ton logger Winston
// Path absolu vers l'exécutable yt-dlp // Path absolu vers l'exécutable yt-dlp
const ytDlpPath = path.join(__dirname, "../../yt-dlp.exe"); const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.06.30.exe');
// Vérification que yt-dlp.exe existe bien au lancement du module // Vérification que yt-dlp.exe existe bien au lancement du module
if (!fs.existsSync(ytDlpPath)) { if (!fs.existsSync(ytDlpPath)) {

Binary file not shown.