Merge pull request #6 from MasterAcnolo/1.2

1.1.3
This commit is contained in:
MasterAcnolo
2025-08-21 16:01:34 +02:00
committed by GitHub
10 changed files with 48 additions and 34 deletions

View File

@@ -2,18 +2,18 @@
<!-- Release -->
![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)
<!-- Build (Next Release) -->
![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)

View File

@@ -2,18 +2,18 @@
<!-- Release -->
![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)
<!-- Build (Next Release) -->
![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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -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");

35
package-lock.json generated
View File

@@ -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",

View File

@@ -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",

View File

@@ -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",
);
}

View File

@@ -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)) {