|
|
|
|
@@ -1159,12 +1159,7 @@ async function downloadFileByURL_exec(url, type, options, sessionID = null) {
|
|
|
|
|
return;
|
|
|
|
|
} else {
|
|
|
|
|
// store info in download for future use
|
|
|
|
|
if (Array.isArray(info)) {
|
|
|
|
|
download['fileNames'] = [];
|
|
|
|
|
for (let info_obj of info) download['fileNames'].push(info_obj['_filename']);
|
|
|
|
|
} else {
|
|
|
|
|
download['_filename'] = info['_filename'];
|
|
|
|
|
}
|
|
|
|
|
download['filesize'] = utils.getExpectedFileSize(info);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1244,7 +1239,7 @@ async function downloadFileByURL_exec(url, type, options, sessionID = null) {
|
|
|
|
|
if (options.merged_string !== null && options.merged_string !== undefined) {
|
|
|
|
|
let current_merged_archive = fs.readFileSync(path.join(fileFolderPath, `merged_${type}.txt`), 'utf8');
|
|
|
|
|
let diff = current_merged_archive.replace(options.merged_string, '');
|
|
|
|
|
const archive_path = options.user ? path.join(fileFolderPath, 'archives', `archive_${type}.txt`) : path.join(archivePath, `archive_${type}.txt`);
|
|
|
|
|
const archive_path = options.user ? path.join(config_api.getConfigItem('ytdl_users_base_path'), options.user, 'archives', `archive_${type}.txt`) : path.join(archivePath, `archive_${type}.txt`);
|
|
|
|
|
fs.appendFileSync(archive_path, diff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1379,7 +1374,7 @@ async function downloadFileByURL_normal(url, type, options, sessionID = null) {
|
|
|
|
|
if (options.merged_string !== null && options.merged_string !== undefined) {
|
|
|
|
|
let current_merged_archive = fs.readFileSync(path.join(fileFolderPath, `merged_${type}.txt`), 'utf8');
|
|
|
|
|
let diff = current_merged_archive.replace(options.merged_string, '');
|
|
|
|
|
const archive_path = options.user ? path.join(fileFolderPath, 'archives', `archive_${type}.txt`) : path.join(archivePath, `archive_${type}.txt`);
|
|
|
|
|
const archive_path = options.user ? path.join(config_api.getConfigItem('ytdl_users_base_path'), options.user, 'archives', `archive_${type}.txt`) : path.join(archivePath, `archive_${type}.txt`);
|
|
|
|
|
fs.appendFileSync(archive_path, diff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1480,7 +1475,7 @@ async function generateArgs(url, type, options) {
|
|
|
|
|
|
|
|
|
|
let useYoutubeDLArchive = config_api.getConfigItem('ytdl_use_youtubedl_archive');
|
|
|
|
|
if (useYoutubeDLArchive) {
|
|
|
|
|
const archive_folder = options.user ? path.join(fileFolderPath, 'archives') : archivePath;
|
|
|
|
|
const archive_folder = options.user ? path.join(config_api.getConfigItem('ytdl_users_base_path'), options.user, 'archives') : archivePath;
|
|
|
|
|
const archive_path = path.join(archive_folder, `archive_${type}.txt`);
|
|
|
|
|
|
|
|
|
|
fs.ensureDirSync(archive_folder);
|
|
|
|
|
@@ -1490,7 +1485,7 @@ async function generateArgs(url, type, options) {
|
|
|
|
|
fs.closeSync(fs.openSync(archive_path, 'w'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let blacklist_path = options.user ? path.join(fileFolderPath, 'archives', `blacklist_${type}.txt`) : path.join(archivePath, `blacklist_${type}.txt`);
|
|
|
|
|
let blacklist_path = options.user ? path.join(config_api.getConfigItem('ytdl_users_base_path'), options.user, 'archives', `blacklist_${type}.txt`) : path.join(archivePath, `blacklist_${type}.txt`);
|
|
|
|
|
// create blacklist file if it doesn't exist
|
|
|
|
|
if (!fs.existsSync(blacklist_path)) {
|
|
|
|
|
fs.closeSync(fs.openSync(blacklist_path, 'w'));
|
|
|
|
|
@@ -1618,15 +1613,12 @@ function checkDownloadPercent(download) {
|
|
|
|
|
Any file that starts with <video title> will be counted as part of the "bytes downloaded", which will
|
|
|
|
|
be divided by the "total expected bytes."
|
|
|
|
|
*/
|
|
|
|
|
// assume it's a playlist for logic reasons
|
|
|
|
|
const fileNames = Array.isArray(download['fileNames']) ? download['fileNames']
|
|
|
|
|
: [path.format(path.parse(download['_filename'].substring(0, download['_filename'].length-4)))];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const file_id = download['file_id'];
|
|
|
|
|
const filename = path.format(path.parse(download['_filename'].substring(0, download['_filename'].length-4)));
|
|
|
|
|
const resulting_file_size = download['filesize'];
|
|
|
|
|
|
|
|
|
|
glob(`${filename}*`, (err, files) => {
|
|
|
|
|
let sum_size = 0;
|
|
|
|
|
let glob_str = '';
|
|
|
|
|
glob(`{${fileNames.join(',')}, }*`, (err, files) => {
|
|
|
|
|
files.forEach(file => {
|
|
|
|
|
try {
|
|
|
|
|
const file_stats = fs.statSync(file);
|
|
|
|
|
@@ -1998,7 +1990,7 @@ app.post('/api/getFile', optionalJwt, function (req, res) {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.post('/api/getAllFiles', optionalJwt, function (req, res) {
|
|
|
|
|
app.post('/api/getAllFiles', optionalJwt, async function (req, res) {
|
|
|
|
|
// these are returned
|
|
|
|
|
let files = [];
|
|
|
|
|
let playlists = [];
|
|
|
|
|
@@ -2008,7 +2000,7 @@ app.post('/api/getAllFiles', optionalJwt, function (req, res) {
|
|
|
|
|
let audios = null;
|
|
|
|
|
let audio_playlists = null;
|
|
|
|
|
let video_playlists = null;
|
|
|
|
|
let subscriptions = subscriptions_api.getAllSubscriptions(req.isAuthenticated() ? req.user.uid : null);
|
|
|
|
|
let subscriptions = config_api.getConfigItem('ytdl_allow_subscriptions') ? (subscriptions_api.getAllSubscriptions(req.isAuthenticated() ? req.user.uid : null)) : [];
|
|
|
|
|
|
|
|
|
|
// get basic info depending on multi-user mode being enabled
|
|
|
|
|
if (req.isAuthenticated()) {
|
|
|
|
|
|