From 83503123cf09154e553b079947afae19cfa54cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9luchu?= Date: Thu, 2 Jul 2020 10:02:04 +0200 Subject: [PATCH] Added Genres - v2.4.0 --- README.md | 2 +- package-lock.json | 2 +- package.json | 2 +- src/api/api.js | 44 +++++++++++++++++++++++++++++++++++++++-- src/api/index.js | 3 ++- src/api/routes/index.js | 18 +++++++++++++++++ src/api/urls.js | 1 + 7 files changed, 66 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d149627..dcdd93b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# **Aruppi API** (v2.3.0) +# **Aruppi API** (v2.4.0) > This API has everything about Japan, from anime, music, radio, images, videos ... to japanese culture > diff --git a/package-lock.json b/package-lock.json index 232d4f3..95acee4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "aruppi", - "version": "2.3.0", + "version": "2.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c9e4c09..703e036 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aruppi", - "version": "2.3.0", + "version": "2.4.0", "description": "Aruppi is a custom API to obtain data from the Japanese culture for the mobile app", "main": "./src/api/api.js", "scripts": { diff --git a/src/api/api.js b/src/api/api.js index 6039b00..982bb39 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -20,7 +20,7 @@ const { } = require('../utils/index'); const { - BASE_ANIMEFLV_JELU, BASE_JIKAN, BASE_IVOOX, BASE_QWANT, BASE_YOUTUBE, BASE_THEMEMOE + BASE_ANIMEFLV_JELU, BASE_JIKAN, BASE_IVOOX, BASE_QWANT, BASE_YOUTUBE, BASE_THEMEMOE, GENRES_URL } = require('./urls'); const schedule = async (day) =>{ @@ -467,6 +467,45 @@ const getArtist = async (id) => { }; +const getAnimeGenres = async(genre, order, page) => { + + let $ + let promises = [] + let options = { scrapy: true } + + if (page !== undefined) { + $ = await homgot(`${GENRES_URL}genre%5B%5D=${genre}&order=${order}&page=${page}`,options) + } else { + $ = await homgot(`${GENRES_URL}genre%5B%5D=${genre}&order=${order}`,options) + } + + + $('div.Container ul.ListAnimes li article').each((index , element) =>{ + const $element = $(element); + const id = $element.find('div.Description a.Button').attr('href').slice(1); + const title = $element.find('a h3').text(); + const poster = $element.find('a div.Image figure img').attr('src'); + const banner = poster.replace('covers' , 'banners').trim(); + const type = $element.find('div.Description p span.Type').text(); + const synopsis = $element.find('div.Description p').eq(1).text().trim(); + const rating = $element.find('div.Description p span.Vts').text(); + + promises.push(helper().then(async () => ({ + id: id || null, + title: title || null, + poster: await imageUrlToBase64(poster) || null, + banner: banner || null, + synopsis: synopsis || null, + type: type || null, + rating: rating || null + }))) + + }) + + return Promise.all(promises); + +}; + module.exports = { schedule, top, @@ -488,5 +527,6 @@ module.exports = { getOpAndEd, getThemesSeason, getRandomTheme, - getArtist + getArtist, + getAnimeGenres }; diff --git a/src/api/index.js b/src/api/index.js index 89f737a..1f51de0 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -7,7 +7,7 @@ router.get('/', (req, res) => { res.json({ message: 'Aruppi API - 🎏', author: 'Jéluchu', - version: '2.3.0', + version: '2.4.0', credits: 'The bitch loves APIs that offers data to Aruppi App', entries: [ { @@ -19,6 +19,7 @@ router.get('/', (req, res) => { 'Season': '/api/v2/season/:year/:type', 'All Seasons': '/api/v2/allSeasons', 'All Directory': '/api/v2/allDirectory', + 'Genres': '/api/v2/getByGenres/:genre/:order/:page?', 'Futures Seasons': '/api/v2/laterSeasons', 'LastEpisodes': '/api/v2/lastEpisodes', 'Movies': '/api/v2/movies/:type/:page', diff --git a/src/api/routes/index.js b/src/api/routes/index.js index db1be93..7304969 100644 --- a/src/api/routes/index.js +++ b/src/api/routes/index.js @@ -461,4 +461,22 @@ router.get('/artists/:id?', (req, res) =>{ }); +router.get('/getByGenres/:genre/:order/:page?' , (req , res) =>{ + let genre = req.params.genre; + let order = req.params.order; + let page = req.params.page; + api.getAnimeGenres(genre, order , page) + .then(animes =>{ + if (animes.length > 0) { + res.status(200).json({ + animes + }); + } else ( + res.status(500).json({ message: 'Aruppi lost in the shell'}) + ) + }).catch((err) =>{ + console.error(err); + }); +}); + module.exports = router; diff --git a/src/api/urls.js b/src/api/urls.js index 6eef83d..d369e47 100644 --- a/src/api/urls.js +++ b/src/api/urls.js @@ -10,6 +10,7 @@ module.exports = { BASE_RAMENPARADOS: 'https://ramenparados.com/category/noticias/anime/feed/', BASE_CRUNCHYROLL: 'https://www.crunchyroll.com/newsrss?lang=esES', SEARCH_URL: 'https://animeflv.net/browse?q=', + GENRES_URL: 'https://animeflv.net/browse?', SEARCH_DIRECTORY: 'https://animeflv.net/browse?order=title&page=', BASE_EPISODE_IMG_URL: 'https://cdn.animeflv.net/screenshots/', BASE_QWANT: 'https://api.qwant.com/search/images?',