26 Commits
1.2 ... 1.2.4

Author SHA1 Message Date
MasterAcnolo
4be5c14999 Merge pull request #16 from MasterAcnolo/build-branch
1.2.4
2025-09-27 11:15:41 +02:00
MasterAcnolo
b92ffebdb4 YT-DLP Maj Automatique 2025-09-27 11:10:34 +02:00
MasterAcnolo
7b6e48b09e Préparation 1.2.4 2025-09-26 07:50:09 +02:00
MasterAcnolo
368851b4bb Merge pull request #15 from MasterAcnolo/build-branch
1.2.3
2025-09-25 21:51:13 +02:00
MasterAcnolo
fa2da5712d ReadME Update 2025-09-25 21:48:38 +02:00
MasterAcnolo
7df97d70bb YT-DLP Update + Fix Crash 2025-09-25 21:43:14 +02:00
MasterAcnolo
5c5f595829 Fix Spicy Image 2025-09-21 09:57:47 +02:00
MasterAcnolo
5b659e3d8a ffprobe 2025-09-20 18:22:43 +02:00
MasterAcnolo
1a526777cc FFPROBE 2025-09-20 18:22:07 +02:00
MasterAcnolo
b0d99d4c29 Update project purpose in README-FR.md 2025-09-20 17:59:17 +02:00
MasterAcnolo
c7554475a9 Update README.md 2025-09-20 17:58:53 +02:00
MasterAcnolo
cab177e8a7 Merge pull request #14 from MasterAcnolo/build-branch
Build branch
2025-09-20 17:53:59 +02:00
MasterAcnolo
f7244a69ac ReadME Update 2025-09-20 17:42:15 +02:00
MasterAcnolo
c6ed79ed1d Title Window 2025-09-20 17:41:27 +02:00
MasterAcnolo
00e5358bbb Asar 2025-09-20 17:21:38 +02:00
MasterAcnolo
598c35eb54 Asar 2025-09-20 17:00:33 +02:00
MasterAcnolo
00c74ea6c6 Package Update + Notif Fix Issues#13 2025-09-20 16:51:46 +02:00
MasterAcnolo
0c415c9106 Merge pull request #12 from MasterAcnolo/build-branch
1.2.1
2025-09-17 12:29:53 +02:00
MasterAcnolo
b0495d033d FFMPEG Location 2025-09-17 11:10:48 +02:00
MasterAcnolo
d72cc6e0ca Correct Log Folder Name 2025-09-17 10:32:53 +02:00
MasterAcnolo
b59cb9f57f Fix Server.js Path 2025-09-17 10:30:48 +02:00
MasterAcnolo
af743be5b0 GitIgnore Fix 2025-09-13 16:18:17 +02:00
MasterAcnolo
024d039701 Package Updated for 1.2.1 + ReadME Fix 2025-09-13 15:41:19 +02:00
MasterAcnolo
e9a91656bc Package JSON Updated for 1.2.1 2025-08-31 18:09:16 +02:00
MasterAcnolo
3505606b44 ADD Licence 'discordRPC.js' 2025-08-31 18:04:07 +02:00
MasterAcnolo
815abae0a0 YT-DLP Moove 2025-08-31 16:30:54 +02:00
13 changed files with 869 additions and 450 deletions

6
.gitignore vendored
View File

@@ -1,6 +1,10 @@
/node_modules /node_modules
/downloads /downloads
/dist /dist
/out
/ressources/ffmpeg.exe
/ressources/ffprobe.exe
logs/*.json logs/*.json
logs/*.log logs/*.log
/out

View File

@@ -2,13 +2,13 @@
<!-- Release --> <!-- Release -->
![Static Badge](https://img.shields.io/badge/Release-1.2-blue?style=flat&logo=Test) ![Static Badge](https://img.shields.io/badge/Release-1.2.4-blue?style=flat&logo=Test)
<!-- Build (Next Release) --> <!-- Build (Next Release) -->
![Static Badge](https://img.shields.io/badge/Build-1.2.1--beta-yellow?style=flat&logo=Test) ![Static Badge](https://img.shields.io/badge/Build-1.2.5--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.
## 🚀 Fonctionnalités ## 🚀 Fonctionnalités

View File

@@ -2,13 +2,13 @@
<!-- Release --> <!-- Release -->
![Static Badge](https://img.shields.io/badge/Release-1.2-blue?style=flat&logo=Test) ![Static Badge](https://img.shields.io/badge/Release-1.2.4-blue?style=flat&logo=Test)
<!-- Build (Next Release) --> <!-- Build (Next Release) -->
![Static Badge](https://img.shields.io/badge/Build-1.2.1--beta-yellow?style=flat&logo=Test) ![Static Badge](https://img.shields.io/badge/Build-1.2.5--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.
## 🚀 Features ## 🚀 Features

View File

@@ -25,7 +25,7 @@ const { logger, logSessionStart, logSessionEnd, logDir } = require("./server/log
let mainWindow; let mainWindow;
// Utilise le vrai dossier de logs défini dans logger.js // Utilise le vrai dossier de logs défini dans logger.js
const logsFolderPath = logDir; const logsFolderPath = logDir;
app.setAppUserModelId("com.masteracnolo.freedomloader"); /* Pour la notif */
/* /*
Fonction principale qui crée la fenêtre principale de l'application. Fonction principale qui crée la fenêtre principale de l'application.
Elle évite la création multiple et configure les dimensions et options de la fenêtre. Elle évite la création multiple et configure les dimensions et options de la fenêtre.
@@ -40,7 +40,7 @@ async function createWindow() {
} }
mainWindow = new BrowserWindow({ mainWindow = new BrowserWindow({
title: "Freedom Loader", title: "Freedom Loader 1.2.4", // A Changer à chaque Version
width: 750, width: 750,
height: 800, height: 800,
minWidth: 750, minWidth: 750,

1229
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{ {
"name": "freedom-loader", "name": "freedom-loader",
"productName": "Freedom Loader", "productName": "Freedom Loader",
"version": "1.2.0", "version": "1.2.4",
"author": "MasterAcnolo", "author": "MasterAcnolo",
"description": "Freedom Loader", "description": "Freedom Loader",
"main": "main.js", "main": "main.js",
@@ -43,11 +43,23 @@
"directories": { "directories": {
"buildResources": "build" "buildResources": "build"
}, },
"asar": false, "asar": true,
"extraResources": [ "extraResources": [
{ {
"from": "build/confirm-icon.png", "from": "build/confirm-icon.png",
"to": "confirm-icon.png" "to": "confirm-icon.png"
},
{
"from": "ressources/yt-dlp.exe",
"to": "yt-dlp.exe"
},
{
"from": "ressources/ffmpeg.exe",
"to": "ffmpeg.exe"
},
{
"from": "ressources/ffprobe.exe",
"to": "ffprobe.exe"
} }
], ],
"win": { "win": {

View File

@@ -9,7 +9,7 @@
font-src https://fonts.gstatic.com; font-src https://fonts.gstatic.com;
img-src 'self' data: https://i.ytimg.com; img-src 'self' data: https://i.ytimg.com;
"> ">
<title>Freedom Loader</title> <title></title>
<!--CSS--> <!--CSS-->
<link rel="stylesheet" href="styles/styles.css"> <link rel="stylesheet" href="styles/styles.css">

View File

@@ -43,8 +43,9 @@ body.spicy {
/* Optionnel: background piments */ /* Optionnel: background piments */
body.spicy { body.spicy {
background-image: url('../../assets/images/Spicy.webp'); background-image: url('../../assets/images/spicy.webp');
background-size:contain; background-size:contain;
background-position: center; background-position: center;
background-attachment: fixed; background-attachment: fixed;
background-repeat: no-repeat;
} }

View File

@@ -1,6 +1,22 @@
// discordRPC.js /*
const RPC = require("discord-rpc"); This file is part of Freedom Loader.
Copyright (C) 2025 MasterAcnolo
Freedom Loader is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License.
Freedom Loader is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const RPC = require("discord-rpc");
const clientId = "1410934537051181146"; const clientId = "1410934537051181146";
const rpc = new RPC.Client({ transport: "ipc" }); const rpc = new RPC.Client({ transport: "ipc" });

View File

@@ -22,8 +22,16 @@ 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(process.resourcesPath, '../../yt-dlp.exe');
const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.27.exe'); const ytDlpPath = path.join(process.resourcesPath, 'yt-dlp.exe');
execFile(ytDlpPath, ["-U"], (err, stdout, stderr) => {
if (err) {
logger.error("Erreur update yt-dlp:", err);
return;
}
logger.info(`Update yt-dlp : ${stdout}`);
});
router.post("/", (req, res) => { router.post("/", (req, res) => {
try { try {
@@ -84,7 +92,8 @@ router.post("/", (req, res) => {
"--add-metadata", // ajoute les tags (titre, artiste, etc.) "--add-metadata", // ajoute les tags (titre, artiste, etc.)
"--concurrent-fragments", "8",// accélère le téléchargement "--concurrent-fragments", "8",// accélère le téléchargement
"--retries", "10", // réessaie jusqu'à 10 fois en cas d'erreur "--retries", "10", // réessaie jusqu'à 10 fois en cas d'erreur
"--fragment-retries", "10" // réessaie aussi 10 fois chaque fragment "--fragment-retries", "10" , // réessaie aussi 10 fois chaque fragment
"--ffmpeg-location", path.join(process.resourcesPath, "ffmpeg.exe")
]; ];
// Si l'option audioOnly est activée, on ajoute les flags pour extraction audio en mp3 // Si l'option audioOnly est activée, on ajoute les flags pour extraction audio en mp3

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 2025.08.27.exe'); const ytDlpPath = path.join(__dirname, '../../ressources/yt-dlp.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)) {

View File

@@ -31,19 +31,19 @@ const app = express(); // Création de linstance Express, notre serveur web
// Définition du dossier par défaut où enregistrer les téléchargements // Définition du dossier par défaut où enregistrer les téléchargements
// On prend le dossier Téléchargements de lutilisateur Windows (USERPROFILE) // On prend le dossier Téléchargements de lutilisateur Windows (USERPROFILE)
const downloadsPath = path.join(process.env.USERPROFILE, "Downloads"); const downloadsPath = path.join(process.env.USERPROFILE, "Downloads");
const outputFolder = path.join(downloadsPath, "Freedom Loader Output"); const outputFolder = path.join(downloadsPath, "Freedom Loader");
// Création du dossier de sortie sil nexiste pas déjà // Création du dossier de sortie sil nexiste pas déjà
if (!fs.existsSync(outputFolder)) { if (!fs.existsSync(outputFolder)) {
try { try {
fs.mkdirSync(outputFolder, { recursive: true }); // création récursive au cas où fs.mkdirSync(outputFolder, { recursive: true }); // création récursive au cas où
logger.info("Dossier Freedom Loader Output cree dans Telechargements."); logger.info("Dossier Freedom Loader cree dans Telechargements.");
} catch (err) { } catch (err) {
logger.error("Impossible de creer le dossier :", err); logger.error("Impossible de creer le dossier :", err);
process.exit(1); // Arrêt du programme si dossier non créé (critique) process.exit(1); // Arrêt du programme si dossier non créé (critique)
} }
} else { } else {
logger.info("Dossier Freedom Loader Output deja existant."); logger.info("Dossier Freedom Loader deja existant.");
} }
// On rend ce dossier accessible globalement via app.locals pour lutiliser dans les routes // On rend ce dossier accessible globalement via app.locals pour lutiliser dans les routes