Backend can kick off downloads without using deprecated node-youtube-dl library

Downloads can now be cancelled and better "paused"
This commit is contained in:
Isaac Abadi
2023-09-05 00:35:36 -04:00
parent 3fc1110fc1
commit ea43ea7121
9 changed files with 105 additions and 26 deletions

View File

@@ -8,6 +8,7 @@ export type Download = {
running: boolean;
finished: boolean;
paused: boolean;
cancelled?: boolean;
finished_step: boolean;
url: string;
type: string;

View File

@@ -69,8 +69,7 @@ export class DownloadsComponent implements OnInit, OnDestroy {
tooltip: $localize`Pause`,
action: (download: Download) => this.pauseDownload(download),
show: (download: Download) => !download.finished && (!download.paused || !download.finished_step),
icon: 'pause',
loading: (download: Download) => download.paused && !download.finished_step
icon: 'pause'
},
{
tooltip: $localize`Resume`,
@@ -81,7 +80,7 @@ export class DownloadsComponent implements OnInit, OnDestroy {
{
tooltip: $localize`Cancel`,
action: (download: Download) => this.cancelDownload(download),
show: (download: Download) => false && !download.finished && !download.paused, // TODO: add possibility to cancel download
show: (download: Download) => !download.finished && !download.paused && !download.cancelled,
icon: 'cancel'
},
{

View File

@@ -169,6 +169,8 @@ export class MainComponent implements OnInit {
argsChangedSubject: Subject<boolean> = new Subject<boolean>();
simulatedOutput = '';
interval_id = null;
constructor(public postsService: PostsService, private youtubeSearch: YoutubeSearchService, public snackBar: MatSnackBar,
private router: Router, public dialog: MatDialog, private platform: Platform, private route: ActivatedRoute) {
this.audioOnly = false;
@@ -232,11 +234,12 @@ export class MainComponent implements OnInit {
}
// get downloads routine
setInterval(() => {
if (this.interval_id) { clearInterval(this.interval_id) }
this.interval_id = setInterval(() => {
if (this.current_download) {
this.getCurrentDownload();
}
}, 500);
}, 1000);
return true;
}
@@ -294,6 +297,10 @@ export class MainComponent implements OnInit {
}
}
ngOnDestroy(): void {
if (this.interval_id) { clearInterval(this.interval_id) }
}
// download helpers
downloadHelper(container: DatabaseFile | Playlist, type: string, is_playlist = false, force_view = false, navigate_mode = false): void {
this.downloadingfile = false;