@ -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,9 +243,9 @@ 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' } ) ;
}
}
}
}
@ -271,7 +271,6 @@ export default class AnimeController {
scrapy : true ,
scrapy : true ,
parse : false ,
parse : false ,
} ) ;
} ) ;
} catch ( err ) {
} catch ( err ) {
return next ( err ) ;
return next ( err ) ;
}
}
@ -323,7 +322,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. */
@ -338,12 +337,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 ;
@ -395,7 +394,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. */
@ -410,12 +409,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 ;
@ -467,7 +466,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. */
@ -482,12 +481,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 ;
@ -539,7 +538,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. */
@ -554,12 +553,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 ;
@ -611,7 +610,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. */
@ -626,12 +625,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 ;
@ -649,7 +648,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 ) ;
@ -676,7 +675,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. */
@ -687,14 +686,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 {
@ -710,15 +709,36 @@ export default class AnimeController {
}
}
}
}
if (
let indicator = false ;
id . split ( '/' ) [ 0 ] === 'ver' &&
id . split ( '-' ) . indexOf ( 'espanol' ) !== - 1
if ( id . split ( '/' ) [ 0 ] === 'ver' && ! indicator ) {
) {
data = await videoServersMonosChinos ( id ) ;
} else if ( id . split ( '/' ) [ 0 ] === 'ver' ) {
data = await videoServersTioAnime ( id ) ;
data = await videoServersTioAnime ( id ) ;
} else {
data = await videoServersJK ( id ) ;
if ( ! data . name ) {
indicator = true ;
}
}
if ( id . split ( '/' ) [ 0 ] === 'ver' && ! indicator ) {
data = await videoServersMonosChinos ( id ) ;
if ( ! data . name ) {
console . log ( data . name ) ;
indicator = true ;
}
}
if ( ! indicator ) {
data = undefined ;
indicator = true ;
/ *
This part is just for handling the error
if the two above doesn ' t complete the operation
does not make sense to have the getServers from
JKAnime .
* /
}
}
if ( data ) {
if ( data ) {
@ -727,7 +747,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. */
@ -738,9 +758,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 ) ;
@ -752,7 +772,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 ) ;
}
}
@ -774,7 +794,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' } ) ;
}
}
}
}
}
}