mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-05-02 11:13:21 +03:00
Added setting for redownloading fresh uploads
Fixed bug in implementation of fresh upload redownloader
This commit is contained in:
@@ -38,7 +38,8 @@
|
|||||||
"Subscriptions": {
|
"Subscriptions": {
|
||||||
"allow_subscriptions": true,
|
"allow_subscriptions": true,
|
||||||
"subscriptions_base_path": "subscriptions/",
|
"subscriptions_base_path": "subscriptions/",
|
||||||
"subscriptions_check_interval": "300"
|
"subscriptions_check_interval": "300",
|
||||||
|
"redownload_fresh_uploads": false
|
||||||
},
|
},
|
||||||
"Users": {
|
"Users": {
|
||||||
"base_path": "users/",
|
"base_path": "users/",
|
||||||
|
|||||||
@@ -215,7 +215,8 @@ DEFAULT_CONFIG = {
|
|||||||
"Subscriptions": {
|
"Subscriptions": {
|
||||||
"allow_subscriptions": true,
|
"allow_subscriptions": true,
|
||||||
"subscriptions_base_path": "subscriptions/",
|
"subscriptions_base_path": "subscriptions/",
|
||||||
"subscriptions_check_interval": "300"
|
"subscriptions_check_interval": "300",
|
||||||
|
"redownload_fresh_uploads": false
|
||||||
},
|
},
|
||||||
"Users": {
|
"Users": {
|
||||||
"base_path": "users/",
|
"base_path": "users/",
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ let CONFIG_ITEMS = {
|
|||||||
'key': 'ytdl_subscriptions_check_interval',
|
'key': 'ytdl_subscriptions_check_interval',
|
||||||
'path': 'YoutubeDLMaterial.Subscriptions.subscriptions_check_interval'
|
'path': 'YoutubeDLMaterial.Subscriptions.subscriptions_check_interval'
|
||||||
},
|
},
|
||||||
|
'ytdl_subscriptions_redownload_fresh_uploads': {
|
||||||
|
'key': 'ytdl_subscriptions_redownload_fresh_uploads',
|
||||||
|
'path': 'YoutubeDLMaterial.Subscriptions.redownload_fresh_uploads'
|
||||||
|
},
|
||||||
|
|
||||||
// Users
|
// Users
|
||||||
'ytdl_users_base_path': {
|
'ytdl_users_base_path': {
|
||||||
|
|||||||
@@ -333,9 +333,13 @@ async function getVideosForSub(sub, user_uid = null) {
|
|||||||
|
|
||||||
const reset_videos = i === 0;
|
const reset_videos = i === 0;
|
||||||
handleOutputJSON(sub, sub_db, output_json, multiUserMode, reset_videos);
|
handleOutputJSON(sub, sub_db, output_json, multiUserMode, reset_videos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config_api.getConfigItem('ytdl_subscriptions_redownload_fresh_uploads')) {
|
||||||
await setFreshUploads(sub, user_uid);
|
await setFreshUploads(sub, user_uid);
|
||||||
checkVideosForFreshUploads(sub, user_uid);
|
checkVideosForFreshUploads(sub, user_uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(true);
|
resolve(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -403,7 +407,7 @@ async function generateArgsForSubscription(sub, user_uid, redownload = false, de
|
|||||||
downloadConfig = ['-f', 'best', '--dump-json'];
|
downloadConfig = ['-f', 'best', '--dump-json'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sub.timerange) {
|
if (sub.timerange && !redownload) {
|
||||||
downloadConfig.push('--dateafter', sub.timerange);
|
downloadConfig.push('--dateafter', sub.timerange);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -515,14 +519,13 @@ async function checkVideosForFreshUploads(sub, user_uid) {
|
|||||||
|
|
||||||
async function checkVideoIfBetterExists(file_obj, sub, user_uid) {
|
async function checkVideoIfBetterExists(file_obj, sub, user_uid) {
|
||||||
const new_path = file_obj['path'].substring(0, file_obj['path'].length - 4);
|
const new_path = file_obj['path'].substring(0, file_obj['path'].length - 4);
|
||||||
const downloadConfig = generateArgsForSubscription(sub, user_uid, true, new_path);
|
const downloadConfig = await generateArgsForSubscription(sub, user_uid, true, new_path);
|
||||||
logger.verbose(`Checking if a better version of the fresh upload ${file_obj['id']} exists.`);
|
logger.verbose(`Checking if a better version of the fresh upload ${file_obj['id']} exists.`);
|
||||||
// simulate a download to verify that a better version exists
|
// simulate a download to verify that a better version exists
|
||||||
youtubedl.getInfo(file_obj['url'], downloadConfig, (err, output) => {
|
youtubedl.getInfo(file_obj['url'], downloadConfig, (err, output) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
// video is not available anymore for whatever reason
|
// video is not available anymore for whatever reason
|
||||||
} else if (output) {
|
} else if (output) {
|
||||||
console.log(output);
|
|
||||||
const metric_to_compare = sub.type === 'audio' ? 'abr' : 'height';
|
const metric_to_compare = sub.type === 'audio' ? 'abr' : 'height';
|
||||||
if (output[metric_to_compare] > file_obj[metric_to_compare]) {
|
if (output[metric_to_compare] > file_obj[metric_to_compare]) {
|
||||||
// download new video as the simulated one is better
|
// download new video as the simulated one is better
|
||||||
|
|||||||
@@ -53,12 +53,15 @@
|
|||||||
<mat-hint><ng-container i18n="Subscriptions base path setting input hint">Base path for videos from your subscribed channels and playlists. It is relative to YTDL-Material's root folder.</ng-container></mat-hint>
|
<mat-hint><ng-container i18n="Subscriptions base path setting input hint">Base path for videos from your subscribed channels and playlists. It is relative to YTDL-Material's root folder.</ng-container></mat-hint>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 mt-5 mb-3">
|
<div class="col-12 mt-4">
|
||||||
<mat-form-field class="text-field" color="accent">
|
<mat-form-field class="text-field" color="accent">
|
||||||
<input [disabled]="!new_config['Subscriptions']['allow_subscriptions']" [(ngModel)]="new_config['Subscriptions']['subscriptions_check_interval']" matInput placeholder="Check interval" i18n-placeholder="Check interval input setting placeholder">
|
<input [disabled]="!new_config['Subscriptions']['allow_subscriptions']" [(ngModel)]="new_config['Subscriptions']['subscriptions_check_interval']" matInput placeholder="Check interval" i18n-placeholder="Check interval input setting placeholder">
|
||||||
<mat-hint><ng-container i18n="Check interval setting input hint">Unit is seconds, only include numbers.</ng-container></mat-hint>
|
<mat-hint><ng-container i18n="Check interval setting input hint">Unit is seconds, only include numbers.</ng-container></mat-hint>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-12 mt-2 mb-3">
|
||||||
|
<mat-checkbox color="accent" [(ngModel)]="new_config['Subscriptions']['redownload_fresh_uploads']" matTooltip="Sometimes new videos are downloaded before being fully processed. This setting will mean new videos will be checked for a higher quality version the following day." i18n-matTooltip="Redownload fresh uploads tooltip"><ng-container i18n="Redownload fresh uploads">Redownload fresh uploads</ng-container></mat-checkbox>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<mat-divider></mat-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|||||||
Reference in New Issue
Block a user