diff --git a/README-EN.md b/README-EN.md index 84a9a4a..5f8b95e 100644 --- a/README-EN.md +++ b/README-EN.md @@ -2,18 +2,18 @@ -![Static Badge](https://img.shields.io/badge/Release-1.1.2-blue?style=flat&logo=Test) +![Static Badge](https://img.shields.io/badge/Release-1.1.3-blue?style=flat&logo=Test) -![Static Badge](https://img.shields.io/badge/Build-1.1.3--beta-yellow?style=flat&logo=Test) +![Static Badge](https://img.shields.io/badge/Build-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 ## 🚀 Features -- ✅ Video download (MP4) -- ✅ Audio-only download (MP3) +- ✅ Video download with metadata(MP4) +- ✅ Audio-only download with thumbail and metadata(MP3) - ✅ Full playlist support - ✅ Automatic metadata retrieval (title, duration, etc.) - ✅ Detailed logs: console and rotating files (7 days) diff --git a/README.md b/README.md index b8c7128..1dc5820 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,18 @@ -![Static Badge](https://img.shields.io/badge/Release-1.1.2-blue?style=flat&logo=Test) +![Static Badge](https://img.shields.io/badge/Release-1.1.3-blue?style=flat&logo=Test) -![Static Badge](https://img.shields.io/badge/Build-1.1.3--beta-yellow?style=flat&logo=Test) +![Static Badge](https://img.shields.io/badge/Build-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 ## 🚀 Fonctionnalités -- ✅ Téléchargement de vidéos (MP4) -- ✅ Téléchargement audio uniquement (MP3) +- ✅ Téléchargement de vidéos avec les métadonnées (MP4) +- ✅ Téléchargement audio uniquement, avec la couverture ainsi que les métadonnées (MP3) - ✅ Support des playlists complètes - ✅ Récupération automatique des métadonnées (titre, durée, etc.) - ✅ Logs détaillés : console et fichiers rotatifs (7 jours) diff --git a/build/installer-icon.ico b/build/installer-icon.ico index 9495555..9d832c7 100644 Binary files a/build/installer-icon.ico and b/build/installer-icon.ico differ diff --git a/build/uninstaller-icon.ico b/build/uninstaller-icon.ico index a80e557..d3d3c02 100644 Binary files a/build/uninstaller-icon.ico and b/build/uninstaller-icon.ico differ diff --git a/main.js b/main.js index f935f2b..11f4803 100644 --- a/main.js +++ b/main.js @@ -17,8 +17,7 @@ */ const { app, BrowserWindow, ipcMain, dialog, Menu, shell } = require("electron"); -// Désactive l'accélération GPU pour éviter les erreurs GPU sur certains systèmes -app.disableHardwareAcceleration(); +app.disableHardwareAcceleration(); // Désactive l'accélération GPU pour éviter les erreurs GPU sur certains systèmes const path = require("path"); const os = require("os"); const { logger, logSessionStart, logSessionEnd, logDir } = require("./server/logger"); diff --git a/package-lock.json b/package-lock.json index 7328ac6..c991929 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "freedom-loader", - "version": "1.1.2", + "version": "1.1.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "freedom-loader", - "version": "1.1.2", + "version": "1.1.3", "dependencies": { "chalk": "^4.1.2", "debug": "^4.4.1", @@ -678,9 +678,9 @@ } }, "node_modules/@electron/packager": { - "version": "18.4.0", - "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.0.tgz", - "integrity": "sha512-Ge1wQWRUZShKDeUPiamOPo44mipX4bosfBgul2x0PiMDXW09/IGftDphatoT+kAhsuLRBOKTLIe9VsDNk5MzZw==", + "version": "18.4.2", + "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.2.tgz", + "integrity": "sha512-5wr/6YoOhBlQoAloquKksY21Pa/2Eg4kq4y/+jOX+9smAFS4fcM3kG3KyhU/zEuwitxRjquq9/KxDNNhJbhc+w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -690,6 +690,7 @@ "@electron/osx-sign": "^1.0.5", "@electron/universal": "^2.0.1", "@electron/windows-sign": "^1.0.0", + "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.0.1", "extract-zip": "^2.0.0", "filenamify": "^4.1.0", @@ -1154,9 +1155,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.17.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.1.tgz", - "integrity": "sha512-y3tBaz+rjspDTylNjAX37jEC3TETEFGNJL6uQDxwF9/8GLLIjW1rvVHlynyuUKMnMr1Roq8jOv3vkopBjC4/VA==", + "version": "22.17.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.2.tgz", + "integrity": "sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==", "dev": true, "license": "MIT", "dependencies": { @@ -1211,9 +1212,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "dev": true, "license": "MIT", "engines": { @@ -1328,9 +1329,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", + "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", "dev": true, "license": "MIT", "engines": { @@ -2793,9 +2794,9 @@ } }, "node_modules/electron": { - "version": "37.2.6", - "resolved": "https://registry.npmjs.org/electron/-/electron-37.2.6.tgz", - "integrity": "sha512-Ns6xyxE+hIK5UlujtRlw7w4e2Ju/ImCWXf1Q/PoOhc0N3/6SN6YW7+ujCarsHbxWnolbW+1RlkHtdklUJpjbPA==", + "version": "37.3.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-37.3.1.tgz", + "integrity": "sha512-7DhktRLqhe6OJh/Bo75bTI0puUYEmIwSzMinocgO63mx3MVjtIn2tYMzLmAleNIlud2htkjpsMG2zT4PiTCloA==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index 2bf6afd..fbab7a4 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "freedom-loader", "productName": "Freedom Loader", - "version": "1.1.2", + "version": "1.1.3", "author": "MasterAcnolo", - "description": "Freedom Loader, parce que nous le valons bien", + "description": "Freedom Loader", "main": "main.js", "scripts": { "start": "electron-forge start", diff --git a/server/routes/download.js b/server/routes/download.js index 483ad54..c3b79c6 100644 --- a/server/routes/download.js +++ b/server/routes/download.js @@ -23,7 +23,7 @@ const logger = require("../logger").logger; // 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 2025.06.30.exe'); +const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.20.exe'); router.post("/", (req, res) => { try { @@ -76,12 +76,26 @@ router.post("/", (req, res) => { // Construction du tableau d'arguments à passer à yt-dlp // --no-continue pour forcer un téléchargement propre // --restrict-filenames pour éviter les caractères problématiques dans les noms - const args = ["--no-continue", "--restrict-filenames"]; - args.push("--concurrent-fragments", "8"); // Permet de télécharger plusieurs fragments en parallèle pour accélérer le processus + const args = [ + "--no-continue", // pas de reprise, c'est un choix que j'ai fait voila + "--restrict-filenames", // noms de fichiers sans caractères spéciaux (Cyrilique, accents, etc.) + "--no-overwrites", // évite d'écraser un fichier existant + "--embed-thumbnail", // ajoute la pochette + "--add-metadata", // ajoute les tags (titre, artiste, etc.) + "--concurrent-fragments", "8",// accélère le téléchargement + "--retries", "10", // réessaie jusqu'à 10 fois en cas d'erreur + "--fragment-retries", "10" // réessaie aussi 10 fois chaque fragment + ]; // Si l'option audioOnly est activée, on ajoute les flags pour extraction audio en mp3 if (options.audioOnly) { - args.push("-f", "bestaudio", "--extract-audio", "--audio-format", "mp3"); + args.push( + "-f", + "bestaudio", + "--extract-audio", + "--audio-format", + "mp3", + ); } diff --git a/server/routes/info.js b/server/routes/info.js index 02e97ba..233134f 100644 --- a/server/routes/info.js +++ b/server/routes/info.js @@ -24,7 +24,7 @@ const fs = require("fs"); const { logger } = require("../logger"); // On récupère ton logger Winston // Path absolu vers l'exécutable yt-dlp -const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.06.30.exe'); +const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.20.exe'); // Vérification que yt-dlp.exe existe bien au lancement du module if (!fs.existsSync(ytDlpPath)) { diff --git a/yt-dlp 2025.06.30.exe b/yt-dlp 2025.08.20.exe similarity index 85% rename from yt-dlp 2025.06.30.exe rename to yt-dlp 2025.08.20.exe index 309fc8b..7c2e8fb 100644 Binary files a/yt-dlp 2025.06.30.exe and b/yt-dlp 2025.08.20.exe differ