Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mangaRouter.get('/get', async (req, res) => {
- try {
- const basePath = "public/mangaImages"
- // Effettuo una richiesta HTTP GET alla pagina di ricerca di MangaDex
- // per ottenere i manga che corrispondono al titolo cercato
- // Includo le cover art e ordino per numero di follower decrescente
- const mangaResponse = await axios.get(`${baseUrl}/manga`, {params: {
- title: req.query.title,
- 'includes[]': 'cover_art',
- 'order[relevance]': 'desc',
- }}).catch(err => {
- throw new Error(err);
- });
- // Leggo il contenuto della directory 'mangaImages'
- const files = await fsPromises.readdir(basePath);
- try {
- // Elimino tutti i file presenti nella directory 'mangaImages'
- // per fare spazio alle nuove immagini che verranno scaricate
- for(let file of files) {
- await fsPromises.unlink(`${basePath}/${file}`);
- }
- } catch (e) {
- throw new Error(err);
- }
- // Estraggo l'ID del manga dalla risposta
- const mangaId = mangaResponse.data.data[0].id;
- // Effettuo una richiesta HTTP GET per ottenere tutte le cover art disponibili per questo manga
- // Limito a 100 risultati e le ordino per volume in ordine crescente
- const coverList = await axios.get(`${baseUrl}/cover`, {
- params: {
- 'manga[]': mangaId,
- order: { volume: 'asc' },
- 'locales[]': 'ja',
- limit: 100
- }
- })
- let i = 0;
- for(let img of coverList.data.data.filter(coverId => coverId.attributes.locale === 'ja')) {
- try {
- const coverImage = await axios.get(`${imagesUrl}${mangaId}/${img.attributes.fileName}.256.jpg`, {
- responseType: 'arraybuffer'
- });
- await fsPromises.writeFile(`${basePath}/cover${i}.jpg`, coverImage.data)
- i++;
- } catch (err) {
- throw new Error(err);
- }
- };
- const paths = (await fsPromises.readdir(`${basePath}`)).map((path) => '/mangaImages/' + path);
- return res.status(200)
- .set('Cache-Control', 'no-store')
- .json({
- data: {
- imagesPath: paths
- }
- })
- } catch (e) {
- // In caso di errori durante l'esecuzione, stampo l'errore in console
- console.log("Si è verificato un errore durante il reperimento dei dati: ", e);
- res.status(401).json({
- message: "Errore" + e
- })
- }
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement