Skip to content

Commit

Permalink
1) Provide User-Agent to YT-DLP (if any).
Browse files Browse the repository at this point in the history
2) Try to extract cookies from web browser if no cookies are provided.
  • Loading branch information
meowcateatrat committed Jan 14, 2025
1 parent 63fdbba commit fd81cc9
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 13 deletions.
2 changes: 1 addition & 1 deletion plugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"uuid": "elephant",
"name": "Elephant",
"description": "Provides support for downloading videos from various sites.",
"version": "1.1.20",
"version": "1.1.21",
"icon": "icon.svg",
"mediaParser": true,
"mediaListParser": true,
Expand Down
88 changes: 76 additions & 12 deletions plugin/msabstractparser.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
var g_browsers = Object.create(null);

var msAbstractParser = (function()
{
function MsAbstractParser()
Expand All @@ -10,10 +12,19 @@ var msAbstractParser = (function()
{
console.log("parsing...");

var args = [];
var tmpCookies;
let args = [];
let tmpCookies;
let systemUserAgent;
let systemBrowser;

try
{
systemUserAgent = qtJsSystem.defaultUserAgent;
systemBrowser = qtJsSystem.defaultWebBrowser;
}
catch(e) {}

var proxyUrl = qtJsNetworkProxyMgr.proxyForUrl(obj.url).url();
let proxyUrl = qtJsNetworkProxyMgr.proxyForUrl(obj.url).url();
if (proxyUrl)
{
proxyUrl = proxyUrl.replace(/^https:\/\//i, 'http://'); // FDM bug workaround
Expand All @@ -23,11 +34,31 @@ var msAbstractParser = (function()
args.push("-J", "--flat-playlist", "--no-warnings", "--compat-options", "no-youtube-unavailable-videos");

if (obj.cookies && obj.cookies.length)
{
tmpCookies = qtJsTools.createTmpFile("request_" + obj.requestId + "_cookies");
if (tmpCookies && tmpCookies.writeText(cookiesToNetscapeText(obj.cookies)))
args.push("--cookies", tmpCookies.path);
}
{
tmpCookies = qtJsTools.createTmpFile("request_" + obj.requestId + "_cookies");
if (tmpCookies && tmpCookies.writeText(cookiesToNetscapeText(obj.cookies)))
args.push("--cookies", tmpCookies.path);
}
else
{
let browser = obj.browser || systemBrowser;
if (browser)
{
if (!(browser in g_browsers))
{
return this.checkBrowser(obj.requestId, obj.interactive, browser)
.then(() => this.parse(obj, customArgs));
}
else if (g_browsers[browser])
{
args.push('--cookies-from-browser', browser);
}
}
}

let userAgent = obj.userAgent || systemUserAgent;
if (userAgent)
args.push('--user-agent', userAgent);

if (customArgs.length)
args = args.concat(customArgs);
Expand Down Expand Up @@ -80,10 +111,43 @@ var msAbstractParser = (function()
return /^https?:\/\//.test(obj.url);
},

overrideUrlPolicy: function(url)
{
return true;
}
overrideUrlPolicy: function(url)
{
return true;
},

checkBrowser: function(requestId, interactive, browser)
{
console.log("Checking browser support (", browser, ")...");

return launchPythonScript(requestId, interactive, "yt-dlp/yt_dlp/__main__.py", ['--cookies-from-browser', browser, 'e692ec362191442c960a761ac6b84878://test.test'])
.then(function(obj)
{
console.log("Python result: ", obj.output);

return new Promise(function (resolve, reject)
{
var output = obj.output.trim();
if (!output)
{
reject({
error: "Parse error",
isParseError: false
});
}
else
{
let isSupported = /"e692ec362191442c960a761ac6b84878"/.test(output);

console.log(browser, " supported: ", isSupported);

g_browsers[browser] = isSupported;

resolve();
}
});
});
}
};

return new MsAbstractParser();
Expand Down
Binary file modified plugin/signature.dat
Binary file not shown.

0 comments on commit fd81cc9

Please sign in to comment.