diff --git a/src/utils/index.js b/src/utils/index.js index b27f422..39a7d81 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -7,7 +7,7 @@ const { } = require('../api/urls'); const animeflvInfo = async (id, index) => { - + let poster = "" let banner = "" let synopsis = "" @@ -15,100 +15,96 @@ const animeflvInfo = async (id, index) => { let debut = "" let type = "" - do { - - try { - - const res = await cloudscraper(`${BASE_ANIMEFLV}anime/${id}`); - const body = await res; - const $ = cheerio.load(body); - const scripts = $('script'); - const anime_info_ids = []; - const anime_eps_data = []; - const animeExtraInfo = []; - const genres = []; - let listByEps; - - poster = `${BASE_ANIMEFLV}` + $('body div div div div div aside div.AnimeCover div.Image figure img').attr('src') - banner = poster.replace('covers', 'banners').trim(); - synopsis = $('body div div div div div main section div.Description p').text().trim(); - rating = $('body div div div.Ficha.fchlt div.Container div.vtshr div.Votes span#votes_prmd').text(); - debut = $('body div.Wrapper div.Body div div.Container div.BX.Row.BFluid.Sp20 aside.SidebarA.BFixed p.AnmStts').text(); - type = $('body div.Wrapper div.Body div div.Ficha.fchlt div.Container span.Type').text() - - animeExtraInfo.push({ - poster: poster, - banner: banner, - synopsis: synopsis, - rating: rating, - debut: debut, - type: type, - }) - - $('main.Main section.WdgtCn nav.Nvgnrs a').each((index, element) => { - const $element = $(element); - const genre = $element.attr('href').split('=')[1] || null; - genres.push(genre); - }); + try { + + const res = await cloudscraper(`${BASE_ANIMEFLV}anime/${id}`); + const body = await res; + + const $ = await cheerio.load(body); + const scripts = $('script'); + const anime_info_ids = []; + const anime_eps_data = []; + const animeExtraInfo = []; + const genres = []; + let listByEps; + + poster = `${BASE_ANIMEFLV}` + $('body div div div div div aside div.AnimeCover div.Image figure img').attr('src') + banner = poster.replace('covers', 'banners').trim(); + synopsis = $('body div div div div div main section div.Description p').text().trim(); + rating = $('body div div div.Ficha.fchlt div.Container div.vtshr div.Votes span#votes_prmd').text(); + debut = $('body div.Wrapper div.Body div div.Container div.BX.Row.BFluid.Sp20 aside.SidebarA.BFixed p.AnmStts').text(); + type = $('body div.Wrapper div.Body div div.Ficha.fchlt div.Container span.Type').text() + + animeExtraInfo.push({ + poster: poster, + banner: banner, + synopsis: synopsis, + rating: rating, + debut: debut, + type: type, + }) + + $('main.Main section.WdgtCn nav.Nvgnrs a').each((index, element) => { + const $element = $(element); + const genre = $element.attr('href').split('=')[1] || null; + genres.push(genre); + }); - Array.from({length: scripts.length}, (v, k) => { - const $script = $(scripts[k]); - const contents = $script.html(); - if ((contents || '').includes('var anime_info = [')) { - let anime_info = contents.split('var anime_info = ')[1].split(';\n')[0]; - let dat_anime_info = JSON.parse(anime_info); - anime_info_ids.push(dat_anime_info); - } - if ((contents || '').includes('var episodes = [')) { - let episodes = contents.split('var episodes = ')[1].split(';')[0]; - let eps_data = JSON.parse(episodes) - anime_eps_data.push(eps_data); - } - }); - const AnimeThumbnailsId = index; - const animeId = id; - let nextEpisodeDate - - if (anime_info_ids.length > 0) { - if (anime_info_ids[0].length === 4) { - nextEpisodeDate = anime_info_ids[0][3] - } else { - nextEpisodeDate = null - } + Array.from({length: scripts.length}, (v, k) => { + const $script = $(scripts[k]); + const contents = $script.html(); + if ((contents || '').includes('var anime_info = [')) { + let anime_info = contents.split('var anime_info = ')[1].split(';\n')[0]; + let dat_anime_info = JSON.parse(anime_info); + anime_info_ids.push(dat_anime_info); } - - const amimeTempList = []; - for (const [key, value] of Object.entries(anime_eps_data)) { - let episode = anime_eps_data[key].map(x => x[0]); - let episodeId = anime_eps_data[key].map(x => x[1]); - amimeTempList.push(episode, episodeId); + if ((contents || '').includes('var episodes = [')) { + let episodes = contents.split('var episodes = ')[1].split(';')[0]; + let eps_data = JSON.parse(episodes) + anime_eps_data.push(eps_data); } - const animeListEps = [{nextEpisodeDate: nextEpisodeDate}]; - Array.from({length: amimeTempList[1].length}, (v, k) => { - let data = amimeTempList.map(x => x[k]); - let episode = data[0]; - let id = data[1]; - let imagePreview = `${BASE_EPISODE_IMG_URL}${AnimeThumbnailsId}/${episode}/th_3.jpg` - let link = `${id}/${animeId}-${episode}` - - animeListEps.push({ - episode: episode, - id: link, - imagePreview: imagePreview - }) - }) - - listByEps = animeListEps; + }); + const AnimeThumbnailsId = index; + const animeId = id; + let nextEpisodeDate - return {listByEps, genres, animeExtraInfo}; + if (anime_info_ids.length > 0) { + if (anime_info_ids[0].length === 4) { + nextEpisodeDate = anime_info_ids[0][3] + } else { + nextEpisodeDate = null + } + } - } catch (err) { - console.error(err) + const amimeTempList = []; + for (const [key, value] of Object.entries(anime_eps_data)) { + let episode = anime_eps_data[key].map(x => x[0]); + let episodeId = anime_eps_data[key].map(x => x[1]); + amimeTempList.push(episode, episodeId); } + const animeListEps = [{nextEpisodeDate: nextEpisodeDate}]; + Array.from({length: amimeTempList[1].length}, (v, k) => { + let data = amimeTempList.map(x => x[k]); + let episode = data[0]; + let id = data[1]; + let imagePreview = `${BASE_EPISODE_IMG_URL}${AnimeThumbnailsId}/${episode}/th_3.jpg` + let link = `${id}/${animeId}-${episode}` + + animeListEps.push({ + episode: episode, + id: link, + imagePreview: imagePreview + }) + }) - } while (poster === "" && banner === "" && synopsis === "" && rating === "" && debut === "" && type === "") + listByEps = animeListEps; + return {listByEps, genres, animeExtraInfo}; + + } catch (err) { + console.error(err) + } }; @@ -268,7 +264,7 @@ const searchAnime = async (query) => { const res = await cloudscraper(`${SEARCH_URL}${query}`); const body = await res; - const $ = cheerio.load(body); + const $ = await cheerio.load(body); const promises = []; $('div.Container ul.ListAnimes li article').each((index, element) => { @@ -336,18 +332,18 @@ const obtainPreviewNews = (encoded) => { image = encoded.substring(encoded.indexOf(" { let respFinal if (task === 0) { - for(let i = 0; i <= body.length -1; i++) { + for (let i = 0; i <= body.length - 1; i++) { if (indv === true) { const data = await cloudscraper.get(`${BASE_THEMEMOE}themes/${body[i]}`); @@ -420,7 +416,7 @@ const getHeaderTheme = async (series) => { let promises = [] let data - for(let i = 0; i <= series.length -1; i++) { + for (let i = 0; i <= series.length - 1; i++) { data = await getThemes(series[i].themes)