diff --git a/src/api/api.js b/src/api/api.js index f4bf951..d595865 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -16,7 +16,7 @@ const { structureThemes, videoServersJK, getThemes, - getMALid + getRelatedAnimes } = require('../utils/index'); const ThemeParser = require('../utils/animetheme'); @@ -253,7 +253,8 @@ const getMoreInfo = async (title) =>{ genres: result.genres || null, moreInfo: await animeExtraInfo(result.mal_title).then(info => info || null), promo: await getAnimeVideoPromo(result.mal_title).then(promo => promo || null), - characters: await getAnimeCharacters(result.mal_title).then(characters => characters || null) + characters: await getAnimeCharacters(result.mal_title).then(characters => characters || null), + related: await getRelatedAnimes(result.id) } } catch (e) { @@ -540,5 +541,6 @@ module.exports = { getDestAnimePlatforms, getPlatforms, getSectionYoutubeVideos, - getProfilePlatform + getProfilePlatform, + getRelatedAnimes }; diff --git a/src/utils/index.js b/src/utils/index.js index dd507e3..f06a37f 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -52,7 +52,7 @@ async function videoServersJK(id) { if (serverNames[serverNames.indexOf(server)].toLowerCase() === 'desu') { serverList.push({ id: serverNames[serverNames.indexOf(server)].toLowerCase(), - url: await desuServerUrl(servers[server]), + url: await desuServerUrl(servers[server]) !== null ? await desuServerUrl(servers[server]) : servers[server], direct: true }); }else { @@ -77,7 +77,11 @@ async function desuServerUrl(url) { $('script').each((index, element) => { if ($(element).html().includes('var parts = {')) { - script = $(element).html(); + if ($(element).html()) { + script = $(element).html(); + }else { + return null; + } } }); @@ -134,6 +138,47 @@ const jkanimeInfo = async (id) => { }; +function getPoster(id) { + + let data = JSON.parse(JSON.stringify(require('../assets/directory.json'))); + + for (let anime of data) { + if (anime.id === id) { + return anime.poster; + } + } +}; + +async function getRelatedAnimes(id) { + + const $ = await homgot(`${BASE_ANIMEFLV}/anime/${id}`, { scrapy: true }); + let listRelated = {}; + let relatedAnimes = []; + + if ($('ul.ListAnmRel').length) { + $('ul.ListAnmRel li a').each((index, element) => { + listRelated[$(element).text()] = $(element).attr('href'); + }); + + for (related in listRelated) { + let posterUrl = getPoster(listRelated[related].split('/')[2]); + + relatedAnimes.push( + { + id: listRelated[related].split('/')[2], + title: related, + poster: posterUrl + } + ); + } + + return relatedAnimes; + + }else { + return []; + } +}; + const animeflvGenres = async (id) => { let $ = await homgot(`${BASE_ANIMEFLV}/${id}`, { scrapy: true }); @@ -477,6 +522,7 @@ module.exports = { animeflvInfo, getAnimeCharacters, getAnimeVideoPromo, + getRelatedAnimes, animeExtraInfo, imageUrlToBase64, searchAnime,