mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-09-27 20:11:15 +02:00
refactor: getBrowser function, and better firefox management on linux
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
const getUserBrowser = require("./getBrowser.helpers.js");
|
const {getUserBrowser} = require("./getBrowser.helpers.js");
|
||||||
const { ffmpegPath, denoPath} = require("./path.helpers.js");
|
const { ffmpegPath, denoPath} = require("./path.helpers.js");
|
||||||
const { configFeatures } = require("../../config.js");
|
const { configFeatures } = require("../../config.js");
|
||||||
const { logger } = require("../logger.js");
|
const { logger } = require("../logger.js");
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const os = require("os");
|
const os = require("os");
|
||||||
const path = require("path");
|
const notify = require("./notify.helpers");
|
||||||
const notify = require("./notify.helpers")
|
|
||||||
const { logger } = require("../logger");
|
const { logger } = require("../logger");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,41 +21,38 @@ const { logger } = require("../logger");
|
|||||||
* @returns {string} The detected browser identifier.
|
* @returns {string} The detected browser identifier.
|
||||||
*/
|
*/
|
||||||
function getUserBrowser() {
|
function getUserBrowser() {
|
||||||
//const userProfile = os.homedir();
|
const platform = process.platform;
|
||||||
const firefoxPath = getFirefoxProfilePath();
|
let isFirefoxHere = false;
|
||||||
|
|
||||||
/**
|
if (platform === "win32") {
|
||||||
* Browsers supported by yt-dlp cookie extraction.
|
const paths = [
|
||||||
*
|
"C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||||
* Only Firefox is currently enabled and tested.
|
"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||||
* Additional browsers can be enabled in the future
|
`${process.env.LOCALAPPDATA}\\Mozilla Firefox\\firefox.exe`,
|
||||||
* once compatibility has been verified.
|
];
|
||||||
*/
|
|
||||||
const browsers = [
|
|
||||||
{ name: "firefox", path: firefoxPath },
|
|
||||||
// { name: "chrome", path: path.join(userProfile, "AppData", "Local", "Google", "Chrome", "User Data", "Default") },
|
|
||||||
// { name: "brave", path: path.join(userProfile, "AppData", "Local", "BraveSoftware", "Brave-Browser", "User Data", "Default") },
|
|
||||||
// { name: "edge", path: path.join(userProfile, "AppData", "Local", "Microsoft", "Edge", "User Data", "Default") },
|
|
||||||
// { name: "opera", path: path.join(userProfile, "AppData", "Roaming", "Opera Software", "Opera Stable") },
|
|
||||||
// { name: "vivaldi", path: path.join(userProfile, "AppData", "Local", "Vivaldi", "User Data", "Default") },
|
|
||||||
// { name: "safari", path: path.join(userProfile, "AppData", "Local", "Apple Computer", "Safari") },
|
|
||||||
// { name: "whale", path: path.join(userProfile, "AppData", "Local", "Naver", "Naver Whale", "User Data", "Default") }
|
|
||||||
];
|
|
||||||
|
|
||||||
// Search for the first available browser profile.
|
isFirefoxHere = paths.some(p => fs.existsSync(p));
|
||||||
for (const browser of browsers) {
|
|
||||||
if (browser.path && fs.existsSync(browser.path)) {
|
|
||||||
logger.info(`Browser found: ${browser.name}`);
|
|
||||||
return browser.name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// No supported browser found => Notify User
|
if (platform === "linux") {
|
||||||
logger.warn("No supported browser found on the system");
|
const paths = [
|
||||||
|
"/usr/bin/firefox",
|
||||||
|
"/usr/bin/firefox-esr",
|
||||||
|
"/usr/local/bin/firefox",
|
||||||
|
"/snap/bin/firefox",
|
||||||
|
"/var/lib/flatpak/exports/bin/org.mozilla.firefox",
|
||||||
|
`${os.homedir()}/.local/share/flatpak/exports/bin/org.mozilla.firefox`,
|
||||||
|
];
|
||||||
|
isFirefoxHere = paths.some(p => fs.existsSync(p));
|
||||||
|
}
|
||||||
|
|
||||||
// If you somehow managed to live without Firefox and need help installing it. - Don't applied to my Linux chad
|
if (!isFirefoxHere) {
|
||||||
if (process.platform === "win32") {
|
// If you somehow managed to live without Firefox and need help installing it. - Don't applied to my Linux chad
|
||||||
|
// No supported browser found => Notify User
|
||||||
|
logger.warn("No supported browser found on the system");
|
||||||
notify.notifyFirefoxBrowserMissing();
|
notify.notifyFirefoxBrowserMissing();
|
||||||
|
} else {
|
||||||
|
logger.info("Browser found: firefox");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback to Firefox and let yt-dlp handle the error gracefully.
|
// Fallback to Firefox and let yt-dlp handle the error gracefully.
|
||||||
@@ -64,39 +60,4 @@ function getUserBrowser() {
|
|||||||
return "firefox";
|
return "firefox";
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFirefoxProfilePath() {
|
module.exports = {getUserBrowser};
|
||||||
const home = os.homedir();
|
|
||||||
|
|
||||||
if (process.platform === "win32") {
|
|
||||||
return path.join(
|
|
||||||
home,
|
|
||||||
"AppData",
|
|
||||||
"Roaming",
|
|
||||||
"Mozilla",
|
|
||||||
"Firefox",
|
|
||||||
"Profiles"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (process.platform === "linux") {
|
|
||||||
return path.join(
|
|
||||||
"usr",
|
|
||||||
"bin",
|
|
||||||
"firefox"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (process.platform === "darwin") {
|
|
||||||
return path.join(
|
|
||||||
home,
|
|
||||||
"Library",
|
|
||||||
"Application Support",
|
|
||||||
"Firefox",
|
|
||||||
"Profiles"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = getUserBrowser
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
const { execFile } = require("child_process");
|
const { execFile } = require("child_process");
|
||||||
const { userYtDlp, denoPath } = require("../helpers/path.helpers");
|
const { userYtDlp, denoPath } = require("../helpers/path.helpers");
|
||||||
const getUserBrowser = require("../helpers/getBrowser.helpers");
|
const {getUserBrowser} = require("../helpers/getBrowser.helpers");
|
||||||
const { logger } = require("../logger");
|
const { logger } = require("../logger");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,6 +61,7 @@ function fetchInfo(url) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const data = JSON.parse(stdout);
|
const data = JSON.parse(stdout);
|
||||||
|
|
||||||
resolve(data);
|
resolve(data);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error(`JSON Parsing Error: ${e.message}`);
|
logger.error(`JSON Parsing Error: ${e.message}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user