diff --git a/frontend/src/Archived.tsx b/frontend/src/Archived.tsx
index 424d3e3..722188e 100644
--- a/frontend/src/Archived.tsx
+++ b/frontend/src/Archived.tsx
@@ -25,7 +25,7 @@ export default function archivedDownloads() {
>
- {
+ {/*
archived.length > 0 ?
{
@@ -40,7 +40,7 @@ export default function archivedDownloads() {
}
: null
- }
+ */}
);
}
\ No newline at end of file
diff --git a/frontend/src/Settings.tsx b/frontend/src/Settings.tsx
index 05feb71..7330ee1 100644
--- a/frontend/src/Settings.tsx
+++ b/frontend/src/Settings.tsx
@@ -40,7 +40,7 @@ export default function Settings({ socket }: Props) {
/**
* Update the server ip address state and localstorage whenever the input value changes.
* Validate the ip-addr then set.s
- * @param e Input change event
+ * @param event Input change event
*/
const handleAddrChange = (event: any) => {
const $serverAddr = of(event)
diff --git a/server/src/core/Process.ts b/server/src/core/Process.ts
index 89ad016..666886c 100644
--- a/server/src/core/Process.ts
+++ b/server/src/core/Process.ts
@@ -15,13 +15,11 @@ const log = Logger.instance;
*/
class Process {
- private url: string;
- private params: Array;
+ public readonly url: string;
+ public readonly params: Array;
private settings: ISettings;
private stdout: Readable;
private pid: number;
- private info: any;
- private lock: boolean;
private exePath = join(__dirname, 'yt-dlp');
constructor(url: string, params: Array, settings: any) {
@@ -30,7 +28,6 @@ class Process {
this.settings = settings
this.stdout = undefined;
this.pid = undefined;
- this.info = null;
}
/**
@@ -73,8 +70,6 @@ class Process {
try {
const buffer = Buffer.concat(stdoutChunks);
const json = JSON.parse(buffer.toString());
- this.info = json;
- this.lock = false;
resolve({
formats: json.formats.map((format: IDownloadInfoSection) => {
return {
diff --git a/server/src/core/downloader.ts b/server/src/core/downloader.ts
index 64b0575..4d2825e 100644
--- a/server/src/core/downloader.ts
+++ b/server/src/core/downloader.ts
@@ -1,6 +1,6 @@
import { spawn } from 'child_process';
import { from, interval } from 'rxjs';
-import { throttle } from 'rxjs/operators';
+import { map, throttle } from 'rxjs/operators';
import { killProcess } from '../utils/procUtils';
import { Socket } from 'socket.io';
import { IPayload } from '../interfaces/IPayload';
@@ -57,18 +57,22 @@ export async function download(socket: Socket, payload: IPayload) {
p.start().then(downloader => {
pool.add(p)
- let pid = downloader.getPid();
+ const pid = downloader.getPid();
p.getInfo().then(info => {
- socket.emit('info', { pid: pid, info: info });
+ socket.emit('info', {
+ pid: pid,
+ info: info
+ });
});
- from(downloader.getStdout()) // stdout as observable
- .pipe(throttle(() => interval(500))) // discard events closer than 500ms
+ from(downloader.getStdout()) // stdout as observable
+ .pipe(
+ throttle(() => interval(500)), // discard events closer than 500ms
+ map(stdout => formatter(String(stdout), pid))
+ )
.subscribe({
- next: (stdout) => {
- socket.emit('progress', formatter(String(stdout), pid))
- },
+ next: (stdout) => socket.emit('progress', stdout),
complete: () => {
downloader.kill().then(() => {
socket.emit('progress', {
@@ -82,6 +86,7 @@ export async function download(socket: Socket, payload: IPayload) {
socket.emit('progress', {
status: 'Done!', pid: pid
});
+ pool.remove(downloader);
}
});
});
@@ -118,7 +123,7 @@ export async function retrieveDownload(socket: Socket) {
socket.emit('pending-jobs', _poolSize)
const it = pool.iterator();
- const tempWorkQueue = new Array();
+ const tempWorkQueue = new Array();
// sanitize
for (const entry of it) {
@@ -207,6 +212,8 @@ const formatter = (stdout: string, pid: number) => {
progress: '100',
}
default:
- return { progress: '0' }
+ return {
+ progress: '0'
+ }
}
}