34 lines
1.4 KiB
JavaScript
Executable File
34 lines
1.4 KiB
JavaScript
Executable File
#!/bin/node
|
|
/**
|
|
* @file Convert cookies copy/pasted from Chrome's Application -> Storage -> Cookies -> [domain] table,
|
|
* into the Netscape cookies format used by tools like `curl` or `youtube-dl`.
|
|
*/
|
|
const fs = require('fs');
|
|
|
|
const filename = process.argv[2];
|
|
if (!filename) {
|
|
console.error(`Usage: node convert-cookies.js <file-with-cookies-copy-pasted-from-Chrome.txt> > netscape-cookies.txt`);
|
|
console.error();
|
|
console.error(`Make sure to replace <file-with-cookies-copy-pasted-from-Chrome.txt> with the name of the\nfile in which you copy/pasted the cookies from Chrome's Application -> Storage -> Cookies.`);
|
|
console.error(`\nThen, pass the 'netscape-cookies.txt' file to 'curl' or 'youtube-dl' or any other tool\nthat reads cookies in the Netscape cookies format.`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const content = fs.readFileSync(filename, 'utf8');
|
|
const cookies = content.split('\n');
|
|
|
|
console.log('# Netscape HTTP Cookie File');
|
|
|
|
for (const cookie of cookies) {
|
|
let [name, value, domain, path, expiration, /* size */, httpOnly] = cookie.split('\t');
|
|
if (!name)
|
|
continue;
|
|
if (domain.charAt(0) !== '.')
|
|
domain = '.' + domain;
|
|
httpOnly = httpOnly === '✓' ? 'TRUE' : 'FALSE'
|
|
if (expiration === 'Session')
|
|
expiration = new Date(Date.now() + 86400 * 1000);
|
|
expiration = Math.trunc(new Date(expiration).getTime() / 1000);
|
|
console.log([domain, 'TRUE', path, httpOnly, expiration, name, value].join('\t'));
|
|
}
|