fix the ws aborting a download after its finished
This commit is contained in:
parent
a3e8d2013f
commit
0bde41fd60
14
src/index.js
14
src/index.js
|
@ -245,6 +245,7 @@ async function deemixDownloadWrapper(dlObj, ws, coverArt, metadata) {
|
||||||
await ws.send(JSON.stringify({key: 'zipping'}));
|
await ws.send(JSON.stringify({key: 'zipping'}));
|
||||||
|
|
||||||
const folderName = trackpaths[0].split('/').slice(-2)[0];
|
const folderName = trackpaths[0].split('/').slice(-2)[0];
|
||||||
|
logger.debug(`zipping ${folderName}`);
|
||||||
try {
|
try {
|
||||||
await promisify(exec)(`${config.server.zipBinaryLocation} ${config.server.zipArguments} "data/${folderName}.zip" "data/${folderName}"`);
|
await promisify(exec)(`${config.server.zipBinaryLocation} ${config.server.zipArguments} "data/${folderName}.zip" "data/${folderName}"`);
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
|
@ -264,8 +265,10 @@ app.ws('/api/album', async (ws, req) => {
|
||||||
if (!req.query.id) return ws.close(1008, 'Supply a track ID in the query!');
|
if (!req.query.id) return ws.close(1008, 'Supply a track ID in the query!');
|
||||||
|
|
||||||
const dlObj = await deemix.generateDownloadObject(deezerInstance, 'https://www.deezer.com/album/' + req.query.id, format);
|
const dlObj = await deemix.generateDownloadObject(deezerInstance, 'https://www.deezer.com/album/' + req.query.id, format);
|
||||||
|
let isDone = false;
|
||||||
|
|
||||||
ws.on('close', (code) => {
|
ws.on('close', (code) => {
|
||||||
|
if (isDone) return;
|
||||||
dlObj.isCanceled = true;
|
dlObj.isCanceled = true;
|
||||||
logger.debug(`client left unexpectedly with code ${code}; cancelling download`);
|
logger.debug(`client left unexpectedly with code ${code}; cancelling download`);
|
||||||
});
|
});
|
||||||
|
@ -280,6 +283,8 @@ app.ws('/api/album', async (ws, req) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
await deemixDownloadWrapper(dlObj, ws, album.cover_medium, {id: album.id, title: album.title, artist: album.artist.name});
|
await deemixDownloadWrapper(dlObj, ws, album.cover_medium, {id: album.id, title: album.title, artist: album.artist.name});
|
||||||
|
isDone = true;
|
||||||
|
logger.debug('download done');
|
||||||
|
|
||||||
ws.close(1000);
|
ws.close(1000);
|
||||||
});
|
});
|
||||||
|
@ -288,6 +293,13 @@ app.ws('/api/track', async (ws, req) => {
|
||||||
if (!req.query.id) return ws.close(1008, 'Supply a track ID in the query!');
|
if (!req.query.id) return ws.close(1008, 'Supply a track ID in the query!');
|
||||||
|
|
||||||
const dlObj = await deemix.generateDownloadObject(deezerInstance, 'https://www.deezer.com/track/' + req.query.id, format);
|
const dlObj = await deemix.generateDownloadObject(deezerInstance, 'https://www.deezer.com/track/' + req.query.id, format);
|
||||||
|
let isDone = false;
|
||||||
|
|
||||||
|
ws.on('close', (code) => {
|
||||||
|
if (isDone) return;
|
||||||
|
dlObj.isCanceled = true;
|
||||||
|
logger.debug(`client left unexpectedly with code ${code}; cancelling download`);
|
||||||
|
});
|
||||||
|
|
||||||
let track;
|
let track;
|
||||||
try {
|
try {
|
||||||
|
@ -299,6 +311,8 @@ app.ws('/api/track', async (ws, req) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
await deemixDownloadWrapper(dlObj, ws, track.album.cover_medium, {id: track.id, title: track.title, artist: track.artist.name});
|
await deemixDownloadWrapper(dlObj, ws, track.album.cover_medium, {id: track.id, title: track.title, artist: track.artist.name});
|
||||||
|
isDone = true;
|
||||||
|
logger.debug('download done');
|
||||||
|
|
||||||
ws.close(1000);
|
ws.close(1000);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue