deemix-web-frontend/src/get/album.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

2021-10-23 19:33:00 +02:00
import express from 'express';
import { albumcache } from '..';
import { logger } from '../logger';
import { deezerInstance } from '../deemix';
const router = express.Router();
router.get('/api/album', async (req, res) => {
if (!req.query.id) return res.sendStatus(400);
if (Array.isArray(req.query.id)) req.query.id = req.query.id.join('');
req.query.id = req.query.id as string;
let album: Album;
try {
album = albumcache[req.query.id] || (await deezerInstance.api.get_album(req.query.id));
if (!albumcache[req.query.id]) albumcache[req.query.id] = album;
} catch (err) {
logger.error((err as Error).toString());
return res.status(404).send('Album not found!');
}
res.send({
id: album.id,
title: album.title,
link: album.link,
2022-08-19 08:29:35 +02:00
releaseDate: album.release_date,
explicitCover: album.explicit_content_cover,
2022-08-19 09:22:55 +02:00
tracks: await Promise.all(album.tracks.data.map(async ({id}) => {
const t = await deezerInstance.api.get_track(id);
2021-10-23 19:33:00 +02:00
return {
id: t.id,
title: t.title,
duration: t.duration,
link: t.link,
2022-08-19 08:46:13 +02:00
artist: t.artist.name,
2022-08-19 09:22:55 +02:00
explicit: t.explicit_content_lyrics,
contributors: t.contributors
2021-10-23 19:33:00 +02:00
};
2022-08-19 09:22:55 +02:00
}))
2021-10-23 19:33:00 +02:00
});
});
export default router;