diff --git a/README-EN.md b/README-EN.md deleted file mode 100644 index 5f8b95e..0000000 --- a/README-EN.md +++ /dev/null @@ -1,113 +0,0 @@ -# Freedom Loader - - - -![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.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 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) -- ✅ Custom output path selection with saving -- ✅ Multiple graphical themes available for interface customization -- ✅ Simple, intuitive, and responsive interface -- ✅ Notification system when download finished (Click = Open Output Folder) - ---- - -## 🔧 Installation - -To install the application, simply download the installer from the releases section. Take the latest version and run it. - ---- - -## ❓ Frequently Asked Questions - -### _Where are my downloaded files located?_ - -In your computer's Downloads folder (**C:\Users\YOUR NAME\Downloads**), inside a folder named **Freedom Loader Output** -
- -### _After installing and running the program, I get an error_ - -Try restarting the application, checking the logs, or opening the browser's developer console by pressing `CTRL + SHIFT + I` or by going to `View > Toggle Developer Tools` - - -

- Example Developer Tools -

- -## 🏗️ Upcoming Features (Roadmap) - -- [ ] More format options -- [ ] Subtitle support -- [ ] Improved UI / UX -- [ ] Language selection -- [ ] Download a specific part of the video -- [ ] Rename output file -- [ ] Extract / Split video using native chapters -- [ ] Parallel downloads -- [ ] Skip sponsored parts of videos -- [x] ~~Custom output path selection (default **C:\Users\Username\Downloads** with a **Freedom Loader Output** folder created)~~ - ---- - -## 🖼️ Preview - -

- Exemple d'application -

- -> Here is an example of the app after launch and entering a URL - ---- - -## ℹ️ About - -This project was built using [![yt-dlp](https://img.shields.io/badge/yt--dlp-Visit%20Repo-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/yt-dlp/yt-dlp) -Thanks to them for providing a free and open-source API. - -This project is open-source and welcomes your contributions. -Here is how to get involved: - -- **🪲 Bug Reporting** - Please use the [GitHub issues system](https://github.com/MasterAcnolo/Freedom-Loader/issues) to report any bugs you encounter. - Try to provide clear reproduction steps and logs if possible. Logs are located in the installation folder of the program. Example path: - `C:\Users\[YOUR NAME]\Desktop\Freedom Loader\resources\app\logs` - The log file will be named something like `combined-20xx-xx-xx.log` -
-- **🛠️ Contribution** - Pull Requests are welcome! Please fork the repo and submit your PR after ensuring you meet the contribution guidelines (tests, style, etc.). -
-- **đź’ˇ Feature Suggestions** - You can propose new ideas via a [feature request issue](https://github.com/MasterAcnolo/Freedom-Loader/issues). - Any clear and detailed proposal will be reviewed. -
-- **đź’° Support the Project** -

- If you'd like to support me, you can donate via - - PayPal - -

- ---- - -## 📄 License - -This project is licensed under the **MIT License** — see the [LICENSE](./LICENSE) file for details. - ---- - -## ⚠️ Disclaimer - -I have obviously used AI assistance for some parts of this project. Use AI sparingly and always be aware of what you are doing. diff --git a/README-FR.md b/README-FR.md new file mode 100644 index 0000000..21e8ada --- /dev/null +++ b/README-FR.md @@ -0,0 +1,114 @@ +# Freedom Loader + + + +![Static Badge](https://img.shields.io/badge/Release-1.2-blue?style=flat&logo=Test) + + + +![Static Badge](https://img.shields.io/badge/Build-1.2.1--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 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) +- ✅ Choix du chemin de sortie personnalisé avec sauvegarde +- ✅ Plusieurs thèmes graphiques au choix pour personnaliser l’interface +- ✅ Interface simple, intuitive +- ✅ Notification quand le téléchargement est fini (Click = Ouverture Dossier Output) +- ✅ Discord Rich Presence + +--- + +## 🔧 Installation + +Pour installer l'application, il vous suffit de télécharger l'installateur dans la section releases, de prendre la dernière version et de l'exécuter. + +--- + +## ❓ Questions fréquentes + +### _Où se situent mes fichiers une fois téléchargés ?_ + +Dans le dossier Téléchargements (**C:\Users\VOTRE NOM\Downloads**) de votre ordinateur, dans un dossier nommé **Freedom Loader Output** +
+ +### _Une fois le programme installé et lancé, j'ai une erreur_ + +Essayez de relancer l'application, de consulter les logs ou d'ouvrir la console de développement du navigateur en faisant le raccourci `CTRL + SHIFT + I` ou via `View > Toggle Developer Tools`. + + +

+ Exemple Developer Tools +

+ +## 🏗️ Fonctionnalités à venir (Roadmap) + +- [ ] Plus de choix de formats +- [ ] Support des sous-titres +- [ ] Meilleure UI / UX +- [ ] Choix des langues +- [ ] Téléchargement d’une partie de la vidéo +- [ ] Renommage du fichier de sortie +- [x] ~~Extraction / découpage de la vidéo via chapitrage natif~~ +- [ ] Téléchargements parallèles +- [ ] Suppression automatique des parties sponsorisées (skip sponsor) +- [x] ~~Choix personnalisé du chemin de sortie (par défaut **C:\Users\Utilisateur\Downloads**, où un dossier **Freedom Loader Output** sera créé)~~ + +--- + +## 🖼️ Aperçu + +

+ Exemple d'application +

+ +> Voici un exemple de l’application lancée après avoir saisi une URL. + +--- + +## ℹ️ À propos + +Ce projet a été réalisé en utilisant [![yt-dlp](https://img.shields.io/badge/yt--dlp-Visit%20Repo-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/yt-dlp/yt-dlp) +Merci à eux de nous permettre d’utiliser leur API gratuitement et en open source. + +Ce projet est open source et accueille volontiers vos contributions. +Voici comment participer : + +- **🪲 Signalement de bugs** + Merci d’utiliser le [système d’issues GitHub](https://github.com/MasterAcnolo/Freedom-Loader/issues) pour remonter les bugs rencontrés. + Essayez de fournir une reproduction claire et les logs si possible. Les logs se trouvent dans le dossier d’installation du programme. Exemple de chemin : + `C:\Users\[VOTRE NOM]\Desktop\Freedom Loader\resources\app\logs` + Le fichier aura un nom du type `combined-20xx-xx-xx.log`. +
+- **🛠️ Contribution** + Les Pull Requests sont les bienvenues ! Merci de forker le repo et de soumettre votre PR après avoir vérifié le respect des guidelines (tests, style, etc.). +
+- **💡 Suggestions de fonctionnalités** + Vous pouvez proposer de nouvelles idées via une [issue de type feature request](https://github.com/MasterAcnolo/Freedom-Loader/issues). + Toute proposition claire et détaillée sera étudiée. +
+- **đź’° Soutenir le projet** +

+ Si vous souhaitez m’encourager, vous pouvez faire un don sur + + PayPal + +

+ +--- + +## 📄 Licence + +Ce projet est sous licence **MIT** — voir le fichier [LICENSE](./LICENSE) pour plus d’informations. + +--- + +## ⚠️ Disclaimer + +J’ai bien évidemment eu recours à l’IA pour m’aider sur certaines parties du projet. Utilisez l’IA avec parcimonie et soyez toujours conscient de ce que vous faites. diff --git a/README.md b/README.md index 1dc5820..c72c74d 100644 --- a/README.md +++ b/README.md @@ -2,99 +2,100 @@ -![Static Badge](https://img.shields.io/badge/Release-1.1.3-blue?style=flat&logo=Test) +![Static Badge](https://img.shields.io/badge/Release-1.2-blue?style=flat&logo=Test) -![Static Badge](https://img.shields.io/badge/Build-1.2--beta-yellow?style=flat&logo=Test) +![Static Badge](https://img.shields.io/badge/Build-1.2.1--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 +> This project aims to enable free, open-source, and unrestricted downloading of Video/Audio content. Eventually, it will allow users to choose -## 🚀 Fonctionnalités +## 🚀 Features -- ✅ 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) -- ✅ Choix du chemin de sortie personnalisé avec sauvegarde -- ✅ Plusieurs thèmes graphiques au choix pour personnaliser l’interface -- ✅ Interface simple, intuitive -- ✅ Notification quand le téléchargement est fini (Click = Ouverture Dossier Output) +- ✅ 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) +- ✅ Custom output path selection with saving +- ✅ Multiple graphical themes available for interface customization +- ✅ Simple, intuitive, and responsive interface +- ✅ Notification system when download finished (Click = Open Output Folder) +- ✅ Discord Rich Presence --- ## 🔧 Installation -Pour installer l'application, il vous suffit de télécharger l'installateur dans la section releases, de prendre la dernière version et de l'exécuter. +To install the application, simply download the installer from the releases section. Take the latest version and run it. --- -## ❓ Questions fréquentes +## ❓ Frequently Asked Questions -### _Où se situent mes fichiers une fois téléchargés ?_ +### _Where are my downloaded files located?_ -Dans le dossier Téléchargements (**C:\Users\VOTRE NOM\Downloads**) de votre ordinateur, dans un dossier nommé **Freedom Loader Output** +In your computer's Downloads folder (**C:\Users\YOUR NAME\Downloads**), inside a folder named **Freedom Loader Output**
-### _Une fois le programme installé et lancé, j'ai une erreur_ +### _After installing and running the program, I get an error_ -Essayez de relancer l'application, de consulter les logs ou d'ouvrir la console de développement du navigateur en faisant le raccourci `CTRL + SHIFT + I` ou via `View > Toggle Developer Tools`. +Try restarting the application, checking the logs, or opening the browser's developer console by pressing `CTRL + SHIFT + I` or by going to `View > Toggle Developer Tools` - +

- Exemple Developer Tools + Example Developer Tools

-## 🏗️ Fonctionnalités à venir (Roadmap) +## 🏗️ Upcoming Features (Roadmap) -- [ ] Plus de choix de formats -- [ ] Support des sous-titres -- [ ] Meilleure UI / UX -- [ ] Choix des langues -- [ ] Téléchargement d’une partie de la vidéo -- [ ] Renommage du fichier de sortie -- [ ] Extraction / découpage de la vidéo via chapitrage natif -- [ ] Téléchargements parallèles -- [ ] Suppression automatique des parties sponsorisées (skip sponsor) -- [x] ~~Choix personnalisé du chemin de sortie (par défaut **C:\Users\Utilisateur\Downloads**, où un dossier **Freedom Loader Output** sera créé)~~ +- [ ] More format options +- [ ] Subtitle support +- [ ] Improved UI / UX +- [ ] Language selection +- [ ] Download a specific part of the video +- [ ] Rename output file +- [x] ~~Extract / Split video using native chapters~~ +- [ ] Parallel downloads +- [ ] Skip sponsored parts of videos +- [x] ~~Custom output path selection (default **C:\Users\Username\Downloads** with a **Freedom Loader Output** folder created)~~ --- -## 🖼️ Aperçu +## 🖼️ Preview

Exemple d'application

-> Voici un exemple de l’application lancée après avoir saisi une URL. +> Here is an example of the app after launch and entering a URL --- -## ℹ️ À propos +## ℹ️ About -Ce projet a été réalisé en utilisant [![yt-dlp](https://img.shields.io/badge/yt--dlp-Visit%20Repo-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/yt-dlp/yt-dlp) -Merci à eux de nous permettre d’utiliser leur API gratuitement et en open source. +This project was built using [![yt-dlp](https://img.shields.io/badge/yt--dlp-Visit%20Repo-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/yt-dlp/yt-dlp) +Thanks to them for providing a free and open-source API. -Ce projet est open source et accueille volontiers vos contributions. -Voici comment participer : +This project is open-source and welcomes your contributions. +Here is how to get involved: -- **🪲 Signalement de bugs** - Merci d’utiliser le [système d’issues GitHub](https://github.com/MasterAcnolo/Freedom-Loader/issues) pour remonter les bugs rencontrés. - Essayez de fournir une reproduction claire et les logs si possible. Les logs se trouvent dans le dossier d’installation du programme. Exemple de chemin : - `C:\Users\[VOTRE NOM]\Desktop\Freedom Loader\resources\app\logs` - Le fichier aura un nom du type `combined-20xx-xx-xx.log`. -
+- **🪲 Bug Reporting** + Please use the [GitHub issues system](https://github.com/MasterAcnolo/Freedom-Loader/issues) to report any bugs you encounter. + Try to provide clear reproduction steps and logs if possible. Logs are located in the installation folder of the program. Example path: + `C:\Users\[YOUR NAME]\Desktop\Freedom Loader\resources\app\logs` + The log file will be named something like `combined-20xx-xx-xx.log` +
- **🛠️ Contribution** - Les Pull Requests sont les bienvenues ! Merci de forker le repo et de soumettre votre PR après avoir vérifié le respect des guidelines (tests, style, etc.). -
-- **💡 Suggestions de fonctionnalités** - Vous pouvez proposer de nouvelles idées via une [issue de type feature request](https://github.com/MasterAcnolo/Freedom-Loader/issues). - Toute proposition claire et détaillée sera étudiée. -
-- **đź’° Soutenir le projet** + Pull Requests are welcome! Please fork the repo and submit your PR after ensuring you meet the contribution guidelines (tests, style, etc.). +
+- **đź’ˇ Feature Suggestions** + You can propose new ideas via a [feature request issue](https://github.com/MasterAcnolo/Freedom-Loader/issues). + Any clear and detailed proposal will be reviewed. +
+- **đź’° Support the Project**

- Si vous souhaitez m’encourager, vous pouvez faire un don sur + If you'd like to support me, you can donate via PayPal @@ -102,12 +103,12 @@ Voici comment participer : --- -## 📄 Licence +## 📄 License -Ce projet est sous licence **MIT** — voir le fichier [LICENSE](./LICENSE) pour plus d’informations. +This project is licensed under the **MIT License** — see the [LICENSE](./LICENSE) file for details. --- ## ⚠️ Disclaimer -J’ai bien évidemment eu recours à l’IA pour m’aider sur certaines parties du projet. Utilisez l’IA avec parcimonie et soyez toujours conscient de ce que vous faites. +I have obviously used AI assistance for some parts of this project. Use AI sparingly and always be aware of what you are doing. diff --git a/package-lock.json b/package-lock.json index c991929..b8dfdd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,16 @@ { "name": "freedom-loader", - "version": "1.1.3", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "freedom-loader", - "version": "1.1.3", + "version": "1.2.0", "dependencies": { "chalk": "^4.1.2", "debug": "^4.4.1", + "discord-rpc": "^4.0.1", "electron-squirrel-startup": "^1.0.1", "express": "^5.1.0", "winston": "^3.17.0", @@ -678,9 +679,9 @@ } }, "node_modules/@electron/packager": { - "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==", + "version": "18.4.4", + "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.4.tgz", + "integrity": "sha512-fTUCmgL25WXTcFpM1M72VmFP8w3E4d+KNzWxmTDRpvwkfn/S206MAtM2cy0GF78KS9AwASMOUmlOIzCHeNxcGQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1155,9 +1156,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "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==", + "version": "22.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.0.tgz", + "integrity": "sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1578,9 +1579,9 @@ } }, "node_modules/app-builder-lib/node_modules/isbinaryfile": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", - "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.6.tgz", + "integrity": "sha512-I+NmIfBHUl+r2wcDd6JwE9yWje/PIVY/R5/CmV8dXLZd5K+L9X2klAOwfAHNnondLXkbHyTAleQAWonpTJBTtw==", "dev": true, "license": "MIT", "engines": { @@ -1739,6 +1740,16 @@ ], "license": "MIT" }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -2676,6 +2687,19 @@ "p-limit": "^3.1.0 " } }, + "node_modules/discord-rpc": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/discord-rpc/-/discord-rpc-4.0.1.tgz", + "integrity": "sha512-HOvHpbq5STRZJjQIBzwoKnQ0jHplbEWFWlPDwXXKm/bILh4nzjcg7mNqll0UY7RsjFoaXA7e/oYb/4lvpda2zA==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "ws": "^7.3.1" + }, + "optionalDependencies": { + "register-scheme": "github:devsnek/node-register-scheme" + } + }, "node_modules/dmg-builder": { "version": "26.0.12", "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.0.12.tgz", @@ -2794,9 +2818,9 @@ } }, "node_modules/electron": { - "version": "37.3.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-37.3.1.tgz", - "integrity": "sha512-7DhktRLqhe6OJh/Bo75bTI0puUYEmIwSzMinocgO63mx3MVjtIn2tYMzLmAleNIlud2htkjpsMG2zT4PiTCloA==", + "version": "37.4.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-37.4.0.tgz", + "integrity": "sha512-HhsSdWowE5ODOeWNc/323Ug2C52mq/TqNBG+4uMeOA3G2dMXNc/nfyi0RYu1rJEgiaJLEjtHveeZZaYRYFsFCQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3423,7 +3447,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3819,6 +3842,13 @@ "moment": "^2.29.1" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT", + "optional": true + }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -5616,7 +5646,6 @@ "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true, "license": "MIT", "optional": true }, @@ -5634,7 +5663,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -6507,6 +6535,17 @@ "node": ">= 10.13.0" } }, + "node_modules/register-scheme": { + "version": "0.0.2", + "resolved": "git+ssh://git@github.com/devsnek/node-register-scheme.git#e7cc9a63a1f512565da44cb57316d9fb10750e17", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "^1.3.0", + "node-addon-api": "^1.3.0" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7525,7 +7564,6 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, "license": "MIT" }, "node_modules/trim-repeated": { @@ -7750,14 +7788,12 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -7961,6 +7997,27 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xmlbuilder": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", diff --git a/package.json b/package.json index fbab7a4..efe91b8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "freedom-loader", "productName": "Freedom Loader", - "version": "1.1.3", + "version": "1.2.0", "author": "MasterAcnolo", "description": "Freedom Loader", "main": "main.js", @@ -14,6 +14,7 @@ "dependencies": { "chalk": "^4.1.2", "debug": "^4.4.1", + "discord-rpc": "^4.0.1", "electron-squirrel-startup": "^1.0.1", "express": "^5.1.0", "winston": "^3.17.0", @@ -44,7 +45,7 @@ }, "asar": false, "extraResources": [ - { + { "from": "build/confirm-icon.png", "to": "confirm-icon.png" } diff --git a/public/assets/images/Chirac.png b/public/assets/images/Chirac.png new file mode 100644 index 0000000..f40b8e7 Binary files /dev/null and b/public/assets/images/Chirac.png differ diff --git a/public/assets/images/cyberpunk4.webp b/public/assets/images/Cyberpunk.webp similarity index 100% rename from public/assets/images/cyberpunk4.webp rename to public/assets/images/Cyberpunk.webp diff --git a/public/assets/images/NF.jpg b/public/assets/images/NF.jpg new file mode 100644 index 0000000..f8d4f55 Binary files /dev/null and b/public/assets/images/NF.jpg differ diff --git a/public/assets/images/Vilbrequin.avif b/public/assets/images/Vilbrequin.avif deleted file mode 100644 index e115f98..0000000 Binary files a/public/assets/images/Vilbrequin.avif and /dev/null differ diff --git a/public/assets/images/Vilbrequin.webp b/public/assets/images/Vilbrequin.webp new file mode 100644 index 0000000..02c5d06 Binary files /dev/null and b/public/assets/images/Vilbrequin.webp differ diff --git a/public/assets/images/goat.webp b/public/assets/images/goat.webp deleted file mode 100644 index 4411f79..0000000 Binary files a/public/assets/images/goat.webp and /dev/null differ diff --git a/public/assets/images/spicy.webp b/public/assets/images/spicy.webp index da2b756..2f83d64 100644 Binary files a/public/assets/images/spicy.webp and b/public/assets/images/spicy.webp differ diff --git a/public/script/customthemes.js b/public/script/customthemes.js index f39c271..0510f8d 100644 --- a/public/script/customthemes.js +++ b/public/script/customthemes.js @@ -21,6 +21,7 @@ const themes = { default: "Default", dark: "Sombre", light: "Clair", + nf : "NF", chirac: "Chirac", fanatic: "Fanatic", cyberpunk: "Cyberpunk", @@ -32,6 +33,7 @@ const themeSubtitles = { default: "Because why not?", dark: "Darkness is my ally", light: "Qui aime ce thème ?", + nf : "You call it music, i call it my Therapist", chirac: "J'aime les pommes", fanatic: "Always Fnatic !", cyberpunk: "Wake up, choom. We’ve got a city to burn.", diff --git a/public/styles/components/editpathbutton.css b/public/styles/components/editpathbutton.css index 7668587..3c00a38 100644 --- a/public/styles/components/editpathbutton.css +++ b/public/styles/components/editpathbutton.css @@ -29,13 +29,14 @@ color: var(--form-button-text-color); border: none; padding: 0.3em 0.8em; - border-radius: 6px; + border-radius: 8px; cursor: pointer; transition: background-color 0.3s ease, transform 0.2s ease; box-shadow: 0 2px 5px rgba(0,0,0,0.2); + font-size: 0.9rem; + font-weight: 550; } .download-path button#changePath:hover { background-color: var(--form-button-bg-hover-color); - transform: scale(1.05); } diff --git a/public/styles/theme/chirac-theme.css b/public/styles/theme/chirac-theme.css index 02b1cce..8efbaac 100644 --- a/public/styles/theme/chirac-theme.css +++ b/public/styles/theme/chirac-theme.css @@ -1,7 +1,7 @@ body.chirac { /* Background image Chirac */ - background-image: url('../../assets/images/goat.webp'); - background-position: right; + background-image: url('../../assets/images/Chirac.png'); + /* background-position: right; */ background-repeat: no-repeat; background-size: cover; background-attachment: fixed; diff --git a/public/styles/theme/cyberpunk-theme.css b/public/styles/theme/cyberpunk-theme.css index 434210f..0cecee6 100644 --- a/public/styles/theme/cyberpunk-theme.css +++ b/public/styles/theme/cyberpunk-theme.css @@ -36,7 +36,7 @@ body.cyberpunk { } body.cyberpunk { - background-image: url('../../assets/images/cyberpunk4.webp'); + background-image: url('../../assets/images/Cyberpunk.webp'); background-size: cover; background-position: center; background-repeat: no-repeat; diff --git a/public/styles/theme/nf-theme.css b/public/styles/theme/nf-theme.css new file mode 100644 index 0000000..198b6a7 --- /dev/null +++ b/public/styles/theme/nf-theme.css @@ -0,0 +1,48 @@ +body.nf { + /* Couleurs générales */ + --background-color: #1a1a1a; /* fond sombre neutre */ + --default-text-color: #e6dfd5; /* texte beige clair */ + --subtitle-color: #f5f0e6; /* beige très clair (titres) */ + --mp3-text-color: #d8cfc2; /* texte checkbox */ + + /* Formulaire */ + --form-bg-color: #2a2a2a; /* fond formulaire gris sombre */ + --form-input-bg-color: #222222; /* fond inputs sombre */ + --form-input-border-color: #4a4036; /* bordure beige/brun */ + --form-input-border-focus-color: #cbb89d; /* beige doré en focus */ + --form-input-text-color: #f0e8dd; /* texte clair/beige */ + --form-input-placeholder-color: #9a8f80; /* placeholder beige/gris */ + --form-button-bg-color: #cbb89d; /* bouton beige doré */ + --form-button-text-color: #1a1a1a; /* texte sombre */ + --form-button-bg-hover-color: #b7a588; /* hover beige plus foncé */ + + /* Checkbox */ + --checkbox-bg-default: #4a4036; /* brun/gris */ + --checkbox-bg-checked: #cbb89d; /* beige doré */ + --checkbox-checkmark-border-color: #1a1a1a; /* noir profond */ + --checkbox-pulse-color: rgba(203,184,157,0.3); /* halo beige doux */ + + /* Download status */ + --download-status-color: #cbb89d; /* beige doré */ + + /* Video Info Box */ + --infos-box-color: #2a2a2a; /* fond sombre */ + --video-info-text-color: #e6dfd5; /* texte beige clair */ + --video-info-heading-color: #f5f0e6; /* titres beige clair */ + --video-info-list-color: #d8cfc2; /* texte liste */ + --video-info-list-strong-color: #ffffff; /* texte fort blanc cassé */ + --video-info-link-color: #cbb89d; /* liens beige doré */ + --video-info-link-hover-color: #b7a588; /* hover beige plus foncé */ +} + +/* Fond inspiré de ton image beige */ +body.nf { + background-image: url('../../assets/images/NF.jpg'); /* mets ton image ici */ + background-size: cover; + background-position: 70% center; + background-attachment: fixed; +} + +body.nf .download-path { + color: var(--default-text-color); +} diff --git a/public/styles/theme/spicy-theme.css b/public/styles/theme/spicy-theme.css index b4f2c93..a3046e7 100644 --- a/public/styles/theme/spicy-theme.css +++ b/public/styles/theme/spicy-theme.css @@ -1,8 +1,14 @@ +/* + + + +*/ + body.spicy { /* Couleurs générales */ --background-color: #121212; /* fond noir profond */ - --default-text-color: #f5f5f5; /* texte clair */ - --subtitle-color: #e29191; /* accent rouge piment */ + --default-text-color: #581010; /* texte clair */ + --subtitle-color: #3d0909; /* accent rouge piment */ --mp3-text-color: #ffffff; /* texte checkbox inline */ /* Formulaire */ @@ -37,8 +43,8 @@ body.spicy { /* Optionnel: background piments */ body.spicy { - background-image: url('../../assets/images/spicy.webp'); - background-size: cover; + background-image: url('../../assets/images/Spicy.webp'); + background-size:contain; background-position: center; background-attachment: fixed; } diff --git a/public/styles/theme/themeimport.css b/public/styles/theme/themeimport.css index 82d1565..3748f0c 100644 --- a/public/styles/theme/themeimport.css +++ b/public/styles/theme/themeimport.css @@ -5,4 +5,5 @@ @import url("light-theme.css"); @import url("cyberpunk-theme.css"); @import url("spicy-theme.css"); -@import url("vilbrequin-theme.css"); \ No newline at end of file +@import url("vilbrequin-theme.css"); +@import url("nf-theme.css"); \ No newline at end of file diff --git a/public/styles/theme/vilbrequin-theme.css b/public/styles/theme/vilbrequin-theme.css index 9a89dea..ec9df97 100644 --- a/public/styles/theme/vilbrequin-theme.css +++ b/public/styles/theme/vilbrequin-theme.css @@ -37,7 +37,7 @@ body.vilbrequin { /* Optionnel: motif turbo ou jantes */ body.vilbrequin { - background-image: url('../../assets/images/Vilbrequin.avif'); /* adapte ton image */ + background-image: url('../../assets/images/Vilbrequin.webp'); /* adapte ton image */ background-size: cover; background-position: center; background-attachment: fixed; diff --git a/server/discordRPC.js b/server/discordRPC.js new file mode 100644 index 0000000..c6e4724 --- /dev/null +++ b/server/discordRPC.js @@ -0,0 +1,32 @@ +// discordRPC.js +const RPC = require("discord-rpc"); + +const clientId = "1410934537051181146"; +const rpc = new RPC.Client({ transport: "ipc" }); + +function startRPC() { + rpc.on("ready", () => { + console.log("✅ Connecté à Discord !"); + + const presence = { + largeImageKey: "icon", + smallImageKey: "acnolo_pfp", + smallImageText: "By MasterAcnolo", + startTimestamp: new Date(), // compteur de temps + details: "github.com/MasterAcnolo/Freedom-Loader", + }; + + rpc.setActivity(presence); + + // Mise à jour toutes les 15 secondes si tu veux garder le compteur à jour + setInterval(() => { + rpc.setActivity(presence); + }, 15000); + }); + + rpc.login({ clientId }).catch(err => { + console.error("Erreur Discord RPC :", err); + }); +} + +module.exports = { startRPC }; diff --git a/server/routes/download.js b/server/routes/download.js index c3b79c6..a0ece15 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.08.20.exe'); +const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.27.exe'); router.post("/", (req, res) => { try { @@ -78,7 +78,7 @@ router.post("/", (req, res) => { // --restrict-filenames pour éviter les caractères problématiques dans les noms 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.) + //"--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.) diff --git a/server/routes/info.js b/server/routes/info.js index 233134f..92ba953 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.08.20.exe'); +const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.27.exe'); // Vérification que yt-dlp.exe existe bien au lancement du module if (!fs.existsSync(ytDlpPath)) { diff --git a/server/server.js b/server/server.js index 54ba18f..5433dff 100644 --- a/server/server.js +++ b/server/server.js @@ -101,3 +101,6 @@ process.on("SIGTERM", () => { // Capture kill ou arrêt du process // Export de la fonction startServer pour permettre son appel depuis d’autres fichiers module.exports = { startServer }; + +const { startRPC } = require("./discordRPC"); +startRPC(); diff --git a/yt-dlp 2025.08.20.exe b/yt-dlp 2025.08.27.exe similarity index 94% rename from yt-dlp 2025.08.20.exe rename to yt-dlp 2025.08.27.exe index 7c2e8fb..e342001 100644 Binary files a/yt-dlp 2025.08.20.exe and b/yt-dlp 2025.08.27.exe differ