Notify Error + Cookies Gestion

This commit is contained in:
MasterAcnolo
2025-11-09 13:19:54 +01:00
parent cd8b2bf007
commit 9d6065c80a
7 changed files with 66 additions and 3 deletions

View File

@@ -1,7 +1,10 @@
const path = require("path");
const getUserBrowser = require("./getBrowser")
function buildYtDlpArgs({ url, audioOnly, quality, outputFolder }) {
const args = [
"--cookies-from-browser", `${getUserBrowser()}`,
"--no-continue",
"--no-overwrites",
"--embed-thumbnail",
@@ -32,3 +35,4 @@ function buildYtDlpArgs({ url, audioOnly, quality, outputFolder }) {
}
module.exports = { buildYtDlpArgs };

View File

@@ -0,0 +1,27 @@
const fs = require("fs");
const os = require("os");
const path = require("path");
const notify = require("./notify")
function getUserBrowser() {
const userProfile = os.homedir();
// Liste des navigateurs supportés par yt-dlp
const browsers = [
{ name: "firefox", path: path.join(userProfile, "AppData", "Roaming", "Mozilla", "Firefox", "Profiles")},
{ name: "chrome", path: path.join(userProfile, "AppData", "Local", "Google", "Chrome", "User Data") },
{ name: "edge", path: path.join(userProfile, "AppData", "Local", "Microsoft", "Edge", "User Data") },
];
for (const browser of browsers) {
if (fs.existsSync(browser.path)) {
return browser.name;
} else{
}
}
notify.notifyCookiesBrowserError()
return ;
}
module.exports = getUserBrowser

View File

@@ -13,4 +13,19 @@ function notifyDownloadFinished(folder) {
notif.show();
}
module.exports = { notifyDownloadFinished };
function notifyCookiesBrowserError(){
const iconPath = path.join(process.resourcesPath, "error.png");
const notif = new Notification({
title: "Cookies Error",
body: "Impossible de récupérer les cookies. Connectez-vous sur votre navigateur et cliquez ici pour voir le tuto.",
icon: iconPath,
});
notif.on("click", () => shell.openExternal("https://youtube.com/shorts/cN9f4s1Mf88?si=519QCVd_-fzJqRf1"));
notif.show();
}
module.exports = {
notifyDownloadFinished,
notifyCookiesBrowserError
};

View File

@@ -3,6 +3,8 @@ const router = express.Router();
const { execFile } = require("child_process");
const { logger } = require("../logger");
const { userYtDlp } = require("../helpers/path");
const getUserBrowser = require("../helpers/getBrowser")
// const ytDlpPath = path.join(__dirname, '../../ressources/yt-dlp.exe');
// const userYtDlp = path.join(process.env.APPDATA || process.env.USERPROFILE, 'FreedomLoader', 'yt-dlp.exe');
@@ -22,9 +24,20 @@ router.post("/", (req, res) => {
logger.info(`Requête /info reçue pour ${url}`);
const args = ["--dump-single-json", "--ignore-errors", "--yes-playlist", url];
const args = ["--dump-single-json", "--ignore-errors", "--yes-playlist", url, "--cookies-from-browser" , `${getUserBrowser()}`];
execFile(userYtDlp, args, { timeout: 30_000, maxBuffer: 10 * 1024 * 1024 }, (error, stdout, stderr) => {
if (stderr) {
const lower = stderr.toLowerCase();
if (lower.includes("sign in to confirm") || lower.includes("failed to decrypt") || lower.includes("could not copy")) {
const browser = getUserBrowser();
return res.status(400).send(
`❌ Impossible d'extraire les cookies depuis ${browser}. Connectez-vous dans ce navigateur et réessayez.`
);
}
}
if (error) {
logger.error(`Erreur yt-dlp: ${error.message}`);
if (stderr) logger.debug(`stderr: ${stderr}`);