mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-07-29 18:25:47 +02:00
Compare commits
9 Commits
1.5.0
...
migration-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
519dcad6e6 | ||
|
|
ac94d68224 | ||
|
|
0f876fcb70 | ||
|
|
a6c11ba7c4 | ||
|
|
44132dd7b5 | ||
|
|
15ab6892b7 | ||
|
|
725b6f0ada | ||
|
|
ad0e4f858b | ||
|
|
68108e3a66 |
47
README.md
47
README.md
@@ -7,7 +7,7 @@
|
||||
|
||||
### **A clean, open-source multimedia downloader for Windows**
|
||||
|
||||
[](https://github.com/MasterAcnolo/Freedom-Loader/releases)
|
||||
[](https://github.com/MasterAcnolo/Freedom-Loader/releases)
|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||
[](https://masteracnolo.github.io/Freedom-Loader-Site/)
|
||||
[](https://masteracnolo.github.io/Freedom-Loader-Workshop/)
|
||||
@@ -26,7 +26,7 @@ The primary goal is to make media downloading accessible to users who want offli
|
||||
### See related repo:
|
||||
|
||||
- **[Website](https://masteracnolo.github.io/Freedom-Loader-Site/)** - Official project website and documentation
|
||||
- **[Workshop](https://masteracnolo.github.io/Freedom-Loader-Workshop/)** - Theme creation tool and theme browser
|
||||
- **[Workshop](https://github.com/MasterAcnolo/Freedom-Loader-Workshop)** - Theme creation tool and theme browser
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -165,7 +165,7 @@ Freedom Loader can be configured either through the settings panel in the UI or
|
||||
|
||||
### Configuration File Location
|
||||
```
|
||||
C:\Users\[USERNAME]\AppData\Roaming\FreedomLoader\config.json
|
||||
%APPDATA%\Freedom Loader\config.json
|
||||
```
|
||||
|
||||
### Available Options
|
||||
@@ -179,11 +179,13 @@ C:\Users\[USERNAME]\AppData\Roaming\FreedomLoader\config.json
|
||||
"addMetadata": true,
|
||||
"verboseLogs": false,
|
||||
"autoDownloadPlaylist": true,
|
||||
"createPlaylistFolders": true,
|
||||
"customCodec": "h264",
|
||||
"logSystem": true,
|
||||
"outputTitleCheck": true,
|
||||
"downloadSystem": true,
|
||||
"notifySystem": true
|
||||
"notifySystem": true,
|
||||
"theme": "dark"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -199,11 +201,13 @@ C:\Users\[USERNAME]\AppData\Roaming\FreedomLoader\config.json
|
||||
| `addMetadata` | boolean | `true` | Add metadata tags to downloaded files |
|
||||
| `verboseLogs` | boolean | `false` | Enable detailed logging for debugging |
|
||||
| `autoDownloadPlaylist` | boolean | `true` | Automatically download entire playlists |
|
||||
| `createPlaylistFolders` | boolean | `true` | Automatically create a folder for a playlist |
|
||||
| `customCodec` | string | `"h264"` | Video codec for encoding (supported: h264, h265, vp9, av1) |
|
||||
| `logSystem` | boolean | `true` | Enable application logging |
|
||||
| `outputTitleCheck` | boolean | `true` | Verify output file titles |
|
||||
| `downloadSystem` | boolean | `true` | Enable download system |
|
||||
| `notifySystem` | boolean | `true` | Enable system notifications |
|
||||
| `theme` | string | `dark` | Current Theme Name |
|
||||
|
||||
### Supported Codecs
|
||||
|
||||
@@ -423,39 +427,6 @@ ressources/
|
||||
|
||||
See the most recent Roadmap [Here](https://masteracnolo.github.io/Freedom-Loader-Site/Roadmap).
|
||||
|
||||
### Completed
|
||||
|
||||
- [x] ~~Website and documentation~~
|
||||
- [x] ~~Automatic YT-DLP updates~~
|
||||
- [x] ~~Automatic application updates~~
|
||||
- [x] ~~Enhanced download status display~~
|
||||
- [x] ~~Video chapter extraction~~
|
||||
- [x] ~~Custom output path selection~~
|
||||
- [x] ~~Custom codec selection~~
|
||||
- [x] ~~Settings Panel with toggle switch for features.~~
|
||||
- [x] ~~Custom theme system (ZIP format) ~~
|
||||
- [x] ~~Theme Workshop (web tool)~~
|
||||
- [x] ~~Splash screen~~
|
||||
- [x] ~~Download stop button~~
|
||||
- [x] ~~Config saved in AppData (preserved on update)~~
|
||||
|
||||
### In Progress
|
||||
|
||||
- [ ] Additional format support (WebM, OGG, etc.)
|
||||
- [ ] Chrome/Edge cookie support
|
||||
- [ ] Improved multi-site support
|
||||
|
||||
### Planned
|
||||
|
||||
- [ ] Subtitle download and embedding
|
||||
- [ ] Multiple language support
|
||||
- [ ] Partial video downloads
|
||||
- [ ] Custom file naming patterns
|
||||
- [ ] Parallel downloads
|
||||
- [ ] Automatic sponsor detection (SponsorBlock integration)
|
||||
- [ ] Download history
|
||||
- [ ] Linux version
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome and appreciated. This project benefits from community involvement.
|
||||
@@ -528,4 +499,4 @@ You are free to use, modify, and redistribute this software under the terms of t
|
||||
|
||||
[Website](https://masteracnolo.github.io/Freedom-Loader-Site/) • [Download](https://github.com/MasterAcnolo/Freedom-Loader/releases) • [Documentation](https://masteracnolo.github.io/Freedom-Loader-Site/wiki) • [Report Bug](https://github.com/MasterAcnolo/Freedom-Loader/issues)
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@ async function createMainWindow() {
|
||||
return mainWindow;
|
||||
}
|
||||
|
||||
const iconPath = config.localMode
|
||||
const iconPath = config.devMode
|
||||
? path.join(__dirname, "../build/app-icon.ico")
|
||||
: path.join(process.resourcesPath, "build/app-icon.ico");
|
||||
|
||||
|
||||
@@ -3,10 +3,12 @@ const { app } = require("electron");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const localMode = !app.isPackaged;
|
||||
|
||||
const devMode = !app.isPackaged;
|
||||
|
||||
|
||||
function resolveConfigPath() {
|
||||
if (localMode) {
|
||||
if (devMode) {
|
||||
const devConfigPath = path.join(__dirname, "config", "config.dev.json");
|
||||
if (!fs.existsSync(devConfigPath)) {
|
||||
const defaultConfigPath = path.join(__dirname, "config", "config.default.json");
|
||||
@@ -36,7 +38,7 @@ const configFeatures = loadFeatures();
|
||||
module.exports = {
|
||||
version: packageJson.version,
|
||||
applicationPort: "8787",
|
||||
localMode,
|
||||
devMode,
|
||||
DiscordRPCID: "1410934537051181146",
|
||||
configFeatures,
|
||||
featuresPath
|
||||
|
||||
4
main.js
4
main.js
@@ -30,7 +30,7 @@ app.setName("Freedom Loader");
|
||||
app.setAppUserModelId("com.masteracnolo.freedomloader");
|
||||
app.disableHardwareAcceleration();
|
||||
|
||||
if (!config.localMode) {
|
||||
if (!config.devMode) {
|
||||
const gotLock = app.requestSingleInstanceLock();
|
||||
if (gotLock) {
|
||||
app.on("second-instance", () => {
|
||||
@@ -45,7 +45,7 @@ app.whenReady().then(async () => {
|
||||
|
||||
createSplashWindow();
|
||||
|
||||
if (!config.localMode && !checkNativeDependencies()) return;
|
||||
if (!config.devMode && !checkNativeDependencies()) return;
|
||||
|
||||
const { userYtDlp } = require("./server/helpers/path.helpers");
|
||||
updateYtDlp(userYtDlp);
|
||||
|
||||
42
package-lock.json
generated
42
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "freedom-loader",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "freedom-loader",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.4.1",
|
||||
@@ -917,9 +917,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@xmldom/xmldom": {
|
||||
"version": "0.8.12",
|
||||
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz",
|
||||
"integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==",
|
||||
"version": "0.8.13",
|
||||
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz",
|
||||
"integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -1355,9 +1355,9 @@
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "5.0.5",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
|
||||
"integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
|
||||
"version": "5.0.6",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
|
||||
"integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -2794,12 +2794,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/express-rate-limit": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz",
|
||||
"integrity": "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==",
|
||||
"version": "8.5.1",
|
||||
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz",
|
||||
"integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ip-address": "10.1.0"
|
||||
"ip-address": "^10.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 16"
|
||||
@@ -3549,9 +3549,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/ip-address": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
|
||||
"integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
|
||||
"version": "10.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
|
||||
"integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
@@ -4752,9 +4752,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.15.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz",
|
||||
"integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
|
||||
"version": "6.15.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
|
||||
"integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.1.0"
|
||||
@@ -5613,9 +5613,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tmp": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
|
||||
"integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
|
||||
"integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "freedom-loader",
|
||||
"productName": "Freedom Loader",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"author": "MasterAcnolo",
|
||||
"description": "Freedom Loader",
|
||||
"main": "main.js",
|
||||
|
||||
@@ -7,7 +7,7 @@ const config = require("../../config.js");
|
||||
const { logger } = require("../logger.js");
|
||||
|
||||
// Centralized resource paths
|
||||
const resourcesPath = config.localMode
|
||||
const resourcesPath = config.devMode
|
||||
? path.join(__dirname, "../../ressources")
|
||||
: process.resourcesPath;
|
||||
|
||||
@@ -21,7 +21,7 @@ let denoPath;
|
||||
|
||||
const sourceYtDlp = path.join(resourcesPath, "binaries","yt-dlp.exe");
|
||||
|
||||
if (config.localMode) {
|
||||
if (config.devMode) {
|
||||
userYtDlp = path.join(__dirname, "../../ressources/yt-dlp.exe");
|
||||
ffmpegPath = path.join(__dirname, "../../ressources/"); // <- has ffmpeg.exe and ffprobe.exe
|
||||
denoPath = path.join(__dirname, "../../ressources/deno.exe");
|
||||
|
||||
Reference in New Issue
Block a user