|
|
@ -1,5 +1,5 @@
|
|
|
|
import { NextFunction, Request, Response } from 'express';
|
|
|
|
import {NextFunction, Request, Response} from 'express';
|
|
|
|
import { requestGot } from '../utils/requestCall';
|
|
|
|
import {requestGot} from '../utils/requestCall';
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
imageUrlToBase64,
|
|
|
|
imageUrlToBase64,
|
|
|
|
jkanimeInfo,
|
|
|
|
jkanimeInfo,
|
|
|
@ -9,10 +9,10 @@ import {
|
|
|
|
videoServersMonosChinos,
|
|
|
|
videoServersMonosChinos,
|
|
|
|
videoServersTioAnime,
|
|
|
|
videoServersTioAnime,
|
|
|
|
} from '../utils/util';
|
|
|
|
} from '../utils/util';
|
|
|
|
import { transformUrlServer } from '../utils/transformerUrl';
|
|
|
|
import {transformUrlServer} from '../utils/transformerUrl';
|
|
|
|
import AnimeModel, { Anime as ModelA } from '../database/models/anime.model';
|
|
|
|
import AnimeModel, {Anime as ModelA} from '../database/models/anime.model';
|
|
|
|
import util from 'util';
|
|
|
|
import util from 'util';
|
|
|
|
import { hashStringMd5 } from '../utils/util';
|
|
|
|
import {hashStringMd5} from '../utils/util';
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
animeExtraInfo,
|
|
|
|
animeExtraInfo,
|
|
|
|
getAnimeVideoPromo,
|
|
|
|
getAnimeVideoPromo,
|
|
|
@ -20,7 +20,7 @@ import {
|
|
|
|
getRelatedAnimesMAL,
|
|
|
|
getRelatedAnimesMAL,
|
|
|
|
} from '../utils/util';
|
|
|
|
} from '../utils/util';
|
|
|
|
import urls from '../utils/urls';
|
|
|
|
import urls from '../utils/urls';
|
|
|
|
import { redisClient } from '../database/connection';
|
|
|
|
import {redisClient} from '../database/connection';
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
// @ts-ignore
|
|
|
|
redisClient.get = util.promisify(redisClient.get);
|
|
|
|
redisClient.get = util.promisify(redisClient.get);
|
|
|
@ -80,7 +80,7 @@ interface Movie {
|
|
|
|
|
|
|
|
|
|
|
|
export default class AnimeController {
|
|
|
|
export default class AnimeController {
|
|
|
|
async schedule(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async schedule(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { day } = req.params;
|
|
|
|
const {day} = req.params;
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -116,7 +116,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`schedule_${hashStringMd5(day)}`,
|
|
|
|
`schedule_${hashStringMd5(day)}`,
|
|
|
|
JSON.stringify({ day: animeList }),
|
|
|
|
JSON.stringify({day: animeList}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -131,12 +131,12 @@ export default class AnimeController {
|
|
|
|
day: animeList,
|
|
|
|
day: animeList,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async top(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async top(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { type, subtype, page } = req.params;
|
|
|
|
const {type, subtype, page} = req.params;
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -163,7 +163,7 @@ export default class AnimeController {
|
|
|
|
if (subtype !== undefined) {
|
|
|
|
if (subtype !== undefined) {
|
|
|
|
data = await requestGot(
|
|
|
|
data = await requestGot(
|
|
|
|
`${urls.BASE_JIKAN}top/${type}/${page}/${subtype}`,
|
|
|
|
`${urls.BASE_JIKAN}top/${type}/${page}/${subtype}`,
|
|
|
|
{ parse: true, scrapy: false },
|
|
|
|
{parse: true, scrapy: false},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
data = await requestGot(`${urls.BASE_JIKAN}top/${type}/${page}`, {
|
|
|
|
data = await requestGot(`${urls.BASE_JIKAN}top/${type}/${page}`, {
|
|
|
@ -192,12 +192,12 @@ export default class AnimeController {
|
|
|
|
if (subtype) {
|
|
|
|
if (subtype) {
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`top_${hashStringMd5(`${type}:${subtype}:${page}`)}`,
|
|
|
|
`top_${hashStringMd5(`${type}:${subtype}:${page}`)}`,
|
|
|
|
JSON.stringify({ top }),
|
|
|
|
JSON.stringify({top}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`top_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
`top_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
JSON.stringify({ top }),
|
|
|
|
JSON.stringify({top}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -216,9 +216,9 @@ export default class AnimeController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return res.status(200).json({ top });
|
|
|
|
return res.status(200).json({top});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
return res.status(400).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
return res.status(400).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -243,15 +243,13 @@ export default class AnimeController {
|
|
|
|
}));
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
if (animes.length > 0) {
|
|
|
|
if (animes.length > 0) {
|
|
|
|
res.status(200).send({ animes });
|
|
|
|
res.status(200).send({animes});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getLastEpisodes(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getLastEpisodes(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const options = 'monoschinos';
|
|
|
|
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
let $: cheerio.Root;
|
|
|
|
let $: cheerio.Root;
|
|
|
|
let episodes: Episode[] = [];
|
|
|
|
let episodes: Episode[] = [];
|
|
|
|
let animeList: any[] = [];
|
|
|
|
let animeList: any[] = [];
|
|
|
@ -269,83 +267,54 @@ export default class AnimeController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (options) {
|
|
|
|
$ = await requestGot(`${urls.BASE_MONOSCHINOS}`, {
|
|
|
|
case 'monoschinos':
|
|
|
|
scrapy: true,
|
|
|
|
$ = await requestGot(`${urls.BASE_MONOSCHINOS}`, {
|
|
|
|
parse: false,
|
|
|
|
scrapy: true,
|
|
|
|
});
|
|
|
|
parse: false,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
data = await requestGot(
|
|
|
|
|
|
|
|
`${urls.BASE_ANIMEFLV_JELU}LatestEpisodesAdded`,
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
parse: true,
|
|
|
|
|
|
|
|
scrapy: false,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return next(err);
|
|
|
|
return next(err);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (options) {
|
|
|
|
let getLastest: any = $!('.container .caps .container')[0];
|
|
|
|
case 'monoschinos':
|
|
|
|
|
|
|
|
let getLastest: any = $!('.container .caps .container')[0];
|
|
|
|
$!(getLastest)
|
|
|
|
|
|
|
|
.find('.row article')
|
|
|
|
$!(getLastest)
|
|
|
|
.each((index: number, element: cheerio.Element) => {
|
|
|
|
.find('.row article')
|
|
|
|
let el: cheerio.Cheerio = $(element);
|
|
|
|
.each((index: number, element: cheerio.Element) => {
|
|
|
|
let title: string | undefined = el
|
|
|
|
let el: cheerio.Cheerio = $(element);
|
|
|
|
.find('.Title')
|
|
|
|
let title: string | undefined = el
|
|
|
|
.html()
|
|
|
|
.find('.Title')
|
|
|
|
?.split('\t')[0];
|
|
|
|
.html()
|
|
|
|
let img: any = el.find('.Image img').attr('src');
|
|
|
|
?.split('\t')[0];
|
|
|
|
let type: any = el.find('.Image figure span').text();
|
|
|
|
let img: any = el.find('.Image img').attr('src');
|
|
|
|
type = type.substring(1, type.length);
|
|
|
|
let type: any = el.find('.Image figure span').text();
|
|
|
|
let nEpisode: any = el.find('.dataEpi .episode').text();
|
|
|
|
type = type.substring(1, type.length);
|
|
|
|
nEpisode = parseInt(nEpisode.split('\n')[1]);
|
|
|
|
let nEpisode: any = el.find('.dataEpi .episode').text();
|
|
|
|
let id: any = el.find('a').attr('href');
|
|
|
|
nEpisode = parseInt(nEpisode.split('\n')[1]);
|
|
|
|
id = id.split('/')[4];
|
|
|
|
let id: any = el.find('a').attr('href');
|
|
|
|
id = id.split('-');
|
|
|
|
id = id.split('/')[4];
|
|
|
|
id.splice(id.length - 2, 2);
|
|
|
|
id = id.split('-');
|
|
|
|
id = `${id.join('-')}-episodio-${nEpisode}`;
|
|
|
|
id.splice(id.length - 2, 2);
|
|
|
|
|
|
|
|
id = `${id.join('-')}-episodio-${nEpisode}`;
|
|
|
|
let anime = {
|
|
|
|
|
|
|
|
id: `ver/${id}`,
|
|
|
|
let anime = {
|
|
|
|
title,
|
|
|
|
id: `ver/${id}`,
|
|
|
|
image: img,
|
|
|
|
title,
|
|
|
|
episode: nEpisode,
|
|
|
|
image: img,
|
|
|
|
};
|
|
|
|
episode: nEpisode,
|
|
|
|
|
|
|
|
};
|
|
|
|
animeList.push(anime);
|
|
|
|
|
|
|
|
});
|
|
|
|
animeList.push(anime);
|
|
|
|
|
|
|
|
});
|
|
|
|
for (const anime of animeList) {
|
|
|
|
|
|
|
|
episodes.push({
|
|
|
|
for (const anime of animeList) {
|
|
|
|
id: anime.id,
|
|
|
|
episodes.push({
|
|
|
|
title: anime.title,
|
|
|
|
id: anime.id,
|
|
|
|
image: await imageUrlToBase64(anime.image),
|
|
|
|
title: anime.title,
|
|
|
|
episode: anime.episode,
|
|
|
|
image: await imageUrlToBase64(anime.image),
|
|
|
|
servers: await videoServersMonosChinos(anime.id),
|
|
|
|
episode: anime.episode,
|
|
|
|
});
|
|
|
|
servers: await videoServersMonosChinos(anime.id),
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
for (const episode of data.episodes) {
|
|
|
|
|
|
|
|
const formattedEpisode: Episode = {
|
|
|
|
|
|
|
|
id: '12345/' + episode.id,
|
|
|
|
|
|
|
|
title: episode.title,
|
|
|
|
|
|
|
|
image: episode.poster,
|
|
|
|
|
|
|
|
episode: episode.episode,
|
|
|
|
|
|
|
|
servers: await transformUrlServer(episode.servers),
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
episodes.push(formattedEpisode);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (episodes.length > 0) {
|
|
|
|
if (episodes.length > 0) {
|
|
|
@ -354,7 +323,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`lastEpisodes_${hashStringMd5('lastEpisodes')}`,
|
|
|
|
`lastEpisodes_${hashStringMd5('lastEpisodes')}`,
|
|
|
|
JSON.stringify({ episodes }),
|
|
|
|
JSON.stringify({episodes}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -369,12 +338,12 @@ export default class AnimeController {
|
|
|
|
episodes,
|
|
|
|
episodes,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getContentTv(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getContentTv(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { type, page } = req.params;
|
|
|
|
const {type, page} = req.params;
|
|
|
|
const url = 'tv';
|
|
|
|
const url = 'tv';
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
@ -426,7 +395,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`contentTv_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
`contentTv_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
JSON.stringify({ animes }),
|
|
|
|
JSON.stringify({animes}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -441,12 +410,12 @@ export default class AnimeController {
|
|
|
|
animes,
|
|
|
|
animes,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getContentSpecial(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getContentSpecial(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { type, page } = req.params;
|
|
|
|
const {type, page} = req.params;
|
|
|
|
const url = 'special';
|
|
|
|
const url = 'special';
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
@ -498,7 +467,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`contentSpecial_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
`contentSpecial_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
JSON.stringify({ animes }),
|
|
|
|
JSON.stringify({animes}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -513,12 +482,12 @@ export default class AnimeController {
|
|
|
|
animes,
|
|
|
|
animes,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getContentOva(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getContentOva(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { type, page } = req.params;
|
|
|
|
const {type, page} = req.params;
|
|
|
|
const url = 'ova';
|
|
|
|
const url = 'ova';
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
@ -570,7 +539,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`contentOva_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
`contentOva_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
JSON.stringify({ animes }),
|
|
|
|
JSON.stringify({animes}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -585,12 +554,12 @@ export default class AnimeController {
|
|
|
|
animes,
|
|
|
|
animes,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getContentMovie(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getContentMovie(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { type, page } = req.params;
|
|
|
|
const {type, page} = req.params;
|
|
|
|
const url = 'movies';
|
|
|
|
const url = 'movies';
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
@ -642,7 +611,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`contentMovie_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
`contentMovie_${hashStringMd5(`${type}:${page}`)}`,
|
|
|
|
JSON.stringify({ animes }),
|
|
|
|
JSON.stringify({animes}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -657,12 +626,12 @@ export default class AnimeController {
|
|
|
|
animes,
|
|
|
|
animes,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getEpisodes(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getEpisodes(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { title } = req.params;
|
|
|
|
const {title} = req.params;
|
|
|
|
let searchAnime: ModelA | null;
|
|
|
|
let searchAnime: ModelA | null;
|
|
|
|
let episodes: any;
|
|
|
|
let episodes: any;
|
|
|
|
|
|
|
|
|
|
|
@ -680,7 +649,7 @@ export default class AnimeController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
searchAnime = await AnimeModel.findOne({
|
|
|
|
searchAnime = await AnimeModel.findOne({
|
|
|
|
$or: [{ title: { $eq: title } }, { title: { $eq: `${title} (TV)` } }],
|
|
|
|
$or: [{title: {$eq: title}}, {title: {$eq: `${title} (TV)`}}],
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return next(err);
|
|
|
|
return next(err);
|
|
|
@ -707,7 +676,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`episodes_${hashStringMd5(title)}`,
|
|
|
|
`episodes_${hashStringMd5(title)}`,
|
|
|
|
JSON.stringify({ episodes }),
|
|
|
|
JSON.stringify({episodes}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -718,14 +687,14 @@ export default class AnimeController {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
res.status(200).json({ episodes });
|
|
|
|
res.status(200).json({episodes});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async getServers(req: Request, res: Response, next: NextFunction) {
|
|
|
|
async getServers(req: Request, res: Response, next: NextFunction) {
|
|
|
|
const { id } = req.params;
|
|
|
|
const {id} = req.params;
|
|
|
|
let data: any;
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -758,7 +727,7 @@ export default class AnimeController {
|
|
|
|
|
|
|
|
|
|
|
|
redisClient.set(
|
|
|
|
redisClient.set(
|
|
|
|
`servers_${hashStringMd5(id)}`,
|
|
|
|
`servers_${hashStringMd5(id)}`,
|
|
|
|
JSON.stringify({ servers: data }),
|
|
|
|
JSON.stringify({servers: data}),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
|
/* After 24hrs expire the key. */
|
|
|
@ -769,9 +738,9 @@ export default class AnimeController {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
res.status(200).json({ servers: data });
|
|
|
|
res.status(200).json({servers: data});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return next(err);
|
|
|
|
return next(err);
|
|
|
@ -783,7 +752,7 @@ export default class AnimeController {
|
|
|
|
let animeResult: any;
|
|
|
|
let animeResult: any;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
animeQuery = await AnimeModel.aggregate([{ $sample: { size: 1 } }]);
|
|
|
|
animeQuery = await AnimeModel.aggregate([{$sample: {size: 1}}]);
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
return next(err);
|
|
|
|
return next(err);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -805,7 +774,7 @@ export default class AnimeController {
|
|
|
|
res.set('Cache-Control', 'no-store');
|
|
|
|
res.set('Cache-Control', 'no-store');
|
|
|
|
res.status(200).json(animeResult);
|
|
|
|
res.status(200).json(animeResult);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.status(500).json({ message: 'Aruppi lost in the shell' });
|
|
|
|
res.status(500).json({message: 'Aruppi lost in the shell'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|