mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-03-14 08:40:57 +03:00
160 lines
3.8 KiB
TypeScript
160 lines
3.8 KiB
TypeScript
import { Component, OnInit, Inject, ChangeDetectorRef } from '@angular/core';
|
|
import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
|
|
import { PostsService } from 'app/posts.services';
|
|
import { ArgModifierDialogComponent } from '../arg-modifier-dialog/arg-modifier-dialog.component';
|
|
|
|
@Component({
|
|
selector: 'app-edit-subscription-dialog',
|
|
templateUrl: './edit-subscription-dialog.component.html',
|
|
styleUrls: ['./edit-subscription-dialog.component.scss']
|
|
})
|
|
export class EditSubscriptionDialogComponent implements OnInit {
|
|
|
|
updating = false;
|
|
|
|
sub = null;
|
|
new_sub = null;
|
|
|
|
editor_initialized = false;
|
|
|
|
timerange_amount: number;
|
|
timerange_unit = 'days';
|
|
audioOnlyMode = null;
|
|
download_all = null;
|
|
|
|
available_qualities = [
|
|
{
|
|
'label': 'Best',
|
|
'value': 'best'
|
|
},
|
|
{
|
|
'label': '4K',
|
|
'value': '2160'
|
|
},
|
|
{
|
|
'label': '1440p',
|
|
'value': '1440'
|
|
},
|
|
{
|
|
'label': '1080p',
|
|
'value': '1080'
|
|
},
|
|
{
|
|
'label': '720p',
|
|
'value': '720'
|
|
},
|
|
{
|
|
'label': '480p',
|
|
'value': '480'
|
|
},
|
|
{
|
|
'label': '360p',
|
|
'value': '360'
|
|
}
|
|
];
|
|
|
|
time_units = [
|
|
'day',
|
|
'week',
|
|
'month',
|
|
'year'
|
|
];
|
|
|
|
constructor(@Inject(MAT_DIALOG_DATA) public data: any, private dialog: MatDialog, private postsService: PostsService) {
|
|
this.sub = JSON.parse(JSON.stringify(this.data.sub));
|
|
this.new_sub = JSON.parse(JSON.stringify(this.sub));
|
|
|
|
// ignore videos to keep requests small
|
|
delete this.sub['videos'];
|
|
delete this.new_sub['videos'];
|
|
|
|
this.audioOnlyMode = this.sub.type === 'audio';
|
|
this.download_all = !this.sub.timerange;
|
|
|
|
if (this.sub.timerange) {
|
|
const timerange_str = this.sub.timerange.split('-')[1];
|
|
const number = timerange_str.replace(/\D/g,'');
|
|
let units = timerange_str.replace(/[0-9]/g, '');
|
|
|
|
if (+number === 1) {
|
|
units = units.replace('s', '');
|
|
}
|
|
|
|
this.timerange_amount = parseInt(number);
|
|
this.timerange_unit = units;
|
|
this.editor_initialized = true;
|
|
} else {
|
|
this.editor_initialized = true
|
|
}
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
}
|
|
|
|
downloadAllToggled() {
|
|
if (this.download_all) {
|
|
this.new_sub.timerange = null;
|
|
} else {
|
|
console.log('checking');
|
|
this.timerangeChanged(null, null);
|
|
}
|
|
}
|
|
|
|
saveSubscription() {
|
|
this.postsService.updateSubscription(this.new_sub).subscribe(res => {
|
|
this.sub = this.new_sub;
|
|
this.new_sub = JSON.parse(JSON.stringify(this.sub));
|
|
this.postsService.reloadSubscriptions();
|
|
})
|
|
}
|
|
|
|
getSubscription() {
|
|
this.postsService.getSubscription(this.sub.id).subscribe(res => {
|
|
this.sub = res['subscription'];
|
|
this.new_sub = JSON.parse(JSON.stringify(this.sub));
|
|
});
|
|
}
|
|
|
|
timerangeChanged(value, select_changed) {
|
|
if (+this.timerange_amount === 1) {
|
|
this.timerange_unit = this.timerange_unit.replace('s', '');
|
|
} else {
|
|
if (!this.timerange_unit.includes('s')) {
|
|
this.timerange_unit += 's';
|
|
}
|
|
}
|
|
|
|
if (this.timerange_amount && this.timerange_unit && !this.download_all) {
|
|
this.new_sub.timerange = 'now-' + this.timerange_amount.toString() + this.timerange_unit;
|
|
} else {
|
|
this.new_sub.timerange = null;
|
|
}
|
|
}
|
|
|
|
saveClicked() {
|
|
this.saveSubscription();
|
|
}
|
|
|
|
// modify custom args
|
|
openArgsModifierDialog() {
|
|
if (!this.new_sub.custom_args) {
|
|
this.new_sub.custom_args = '';
|
|
}
|
|
const dialogRef = this.dialog.open(ArgModifierDialogComponent, {
|
|
data: {
|
|
initial_args: this.new_sub.custom_args
|
|
}
|
|
});
|
|
dialogRef.afterClosed().subscribe(new_args => {
|
|
if (new_args !== null && new_args !== undefined) {
|
|
this.new_sub.custom_args = new_args;
|
|
}
|
|
});
|
|
}
|
|
|
|
subChanged() {
|
|
return JSON.stringify(this.new_sub) !== JSON.stringify(this.sub);
|
|
}
|
|
|
|
}
|