|
|
@ -56,12 +56,22 @@ export const animeExtraInfo = async (mal_id: number) => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
data = await requestGot(`${urls.BASE_JIKAN}anime/${mal_id}`, {
|
|
|
|
const resultQueryRedis: any = await redisClient.get(
|
|
|
|
parse: true,
|
|
|
|
`extraInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
scrapy: false,
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
if (resultQueryRedis) {
|
|
|
|
|
|
|
|
const resultRedis: any = JSON.parse(resultQueryRedis);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return resultRedis;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
data = await requestGot(`${urls.BASE_JIKAN}anime/${mal_id}`, {
|
|
|
|
|
|
|
|
parse: true,
|
|
|
|
|
|
|
|
scrapy: false,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
broadcast = data.broadcast.split('at')[0].trim().toLowerCase() || null;
|
|
|
|
broadcast = data.broadcast.split('at')[0].trim().toLowerCase() || null;
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return err;
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -90,34 +100,90 @@ export const animeExtraInfo = async (mal_id: number) => {
|
|
|
|
endingThemes: data.ending_themes || null,
|
|
|
|
endingThemes: data.ending_themes || null,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
return formattedObject;
|
|
|
|
if (formattedObject) {
|
|
|
|
|
|
|
|
/* Set the key in the redis cache. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
|
|
|
|
`extraInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
|
|
|
|
JSON.stringify(formattedObject),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.expireat(
|
|
|
|
|
|
|
|
`extraInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
|
|
|
|
new Date().getTime() + 86400000,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return formattedObject;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export const getAnimeVideoPromo = async (mal_id: number) => {
|
|
|
|
export const getAnimeVideoPromo = async (mal_id: number) => {
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
data = await requestGot(`${urls.BASE_JIKAN}anime/${mal_id}/videos`, {
|
|
|
|
const resultQueryRedis: any = await redisClient.get(
|
|
|
|
parse: true,
|
|
|
|
`promoInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
scrapy: false,
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
if (resultQueryRedis) {
|
|
|
|
|
|
|
|
const resultRedis: any = JSON.parse(resultQueryRedis);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return resultRedis;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
data = await requestGot(`${urls.BASE_JIKAN}anime/${mal_id}/videos`, {
|
|
|
|
|
|
|
|
parse: true,
|
|
|
|
|
|
|
|
scrapy: false,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return err;
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const promo: Promo[] = data.promo.map((item: Promo) => item);
|
|
|
|
const promo: Promo[] = data.promo.map((item: Promo) => item);
|
|
|
|
|
|
|
|
|
|
|
|
return promo;
|
|
|
|
if (promo.length > 0) {
|
|
|
|
|
|
|
|
/* Set the key in the redis cache. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
|
|
|
|
`promoInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
|
|
|
|
JSON.stringify(promo),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.expireat(
|
|
|
|
|
|
|
|
`promoInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
|
|
|
|
new Date().getTime() + 86400000,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return promo;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export const getAnimeCharacters = async (mal_id: number) => {
|
|
|
|
export const getAnimeCharacters = async (mal_id: number) => {
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
data = await requestGot(
|
|
|
|
const resultQueryRedis: any = await redisClient.get(
|
|
|
|
`${urls.BASE_JIKAN}anime/${mal_id}/characters_staff`,
|
|
|
|
`charactersInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
{ parse: true, scrapy: false },
|
|
|
|
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (resultQueryRedis) {
|
|
|
|
|
|
|
|
const resultRedis: any = JSON.parse(resultQueryRedis);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return resultRedis;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
data = await requestGot(
|
|
|
|
|
|
|
|
`${urls.BASE_JIKAN}anime/${mal_id}/characters_staff`,
|
|
|
|
|
|
|
|
{ parse: true, scrapy: false },
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return err;
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -131,7 +197,25 @@ export const getAnimeCharacters = async (mal_id: number) => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
return characters;
|
|
|
|
if (characters.length > 0) {
|
|
|
|
|
|
|
|
/* Set the key in the redis cache. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
|
|
|
|
`charactersInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
|
|
|
|
JSON.stringify(characters),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.expireat(
|
|
|
|
|
|
|
|
`charactersInfo_${hashStringMd5(`${mal_id}`)}`,
|
|
|
|
|
|
|
|
new Date().getTime() + 86400000,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return characters;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const getPosterAndType = async (
|
|
|
|
const getPosterAndType = async (
|
|
|
@ -158,35 +242,63 @@ const getPosterAndType = async (
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export const getRelatedAnimesFLV = async (id: string) => {
|
|
|
|
export const getRelatedAnimesFLV = async (id: string) => {
|
|
|
|
const $: cheerio.Root = await requestGot(
|
|
|
|
let $: cheerio.Root;
|
|
|
|
`${urls.BASE_ANIMEFLV}/anime/${id}`,
|
|
|
|
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
parse: false,
|
|
|
|
const resultQueryRedis: any = await redisClient.get(
|
|
|
|
scrapy: true,
|
|
|
|
`relatedFLV_${hashStringMd5(id)}`,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
if (resultQueryRedis) {
|
|
|
|
|
|
|
|
const resultRedis: any = JSON.parse(resultQueryRedis);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return resultRedis;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
$ = await requestGot(`${urls.BASE_ANIMEFLV}/anime/${id}`, {
|
|
|
|
|
|
|
|
parse: false,
|
|
|
|
|
|
|
|
scrapy: true,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (err) {
|
|
|
|
|
|
|
|
return err;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let listRelated: any = {};
|
|
|
|
let listRelated: any = {};
|
|
|
|
let relatedAnimes: RelatedAnime[] = [];
|
|
|
|
let relatedAnimes: RelatedAnime[] = [];
|
|
|
|
|
|
|
|
|
|
|
|
if ($('ul.ListAnmRel').length) {
|
|
|
|
$('ul.ListAnmRel li a').each((index: number, element: any) => {
|
|
|
|
$('ul.ListAnmRel li a').each((index: number, element: any) => {
|
|
|
|
listRelated[$(element).text()] = $(element).attr('href');
|
|
|
|
listRelated[$(element).text()] = $(element).attr('href');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (const related in listRelated) {
|
|
|
|
for (const related in listRelated) {
|
|
|
|
let posterUrl: any = await getPosterAndType(
|
|
|
|
let posterUrl: any = await getPosterAndType(
|
|
|
|
listRelated[related].split('/')[2],
|
|
|
|
listRelated[related].split('/')[2],
|
|
|
|
undefined,
|
|
|
|
undefined,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
if (posterUrl !== '') {
|
|
|
|
if (posterUrl !== '') {
|
|
|
|
relatedAnimes.push({
|
|
|
|
relatedAnimes.push({
|
|
|
|
title: related,
|
|
|
|
title: related,
|
|
|
|
type: posterUrl[1],
|
|
|
|
type: posterUrl[1],
|
|
|
|
poster: posterUrl[0],
|
|
|
|
poster: posterUrl[0],
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (relatedAnimes.length > 0) {
|
|
|
|
|
|
|
|
/* Set the key in the redis cache. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
|
|
|
|
`relatedFLV_${hashStringMd5(id)}`,
|
|
|
|
|
|
|
|
JSON.stringify(relatedAnimes),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.expireat(
|
|
|
|
|
|
|
|
`relatedFLV_${hashStringMd5(id)}`,
|
|
|
|
|
|
|
|
new Date().getTime() + 86400000,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
return relatedAnimes;
|
|
|
|
return relatedAnimes;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|