@ -16,8 +16,6 @@ const {
transformUrlServer ,
transformUrlServer ,
obtainPreviewNews ,
obtainPreviewNews ,
structureThemes ,
structureThemes ,
getAnimes ,
getDirectory ,
helper ,
helper ,
videoServersJK ,
videoServersJK ,
getThemes
getThemes
@ -27,39 +25,39 @@ const ThemeParser = require('../utils/animetheme');
const parserThemes = new ThemeParser ( )
const parserThemes = new ThemeParser ( )
const {
const {
BASE _ANIMEFLV _JELU , BASE _JIKAN , BASE _IVOOX , BASE _QWANT , BASE _YOUTUBE , GENRES _URL , BASE _THEMEMOE
BASE _ANIMEFLV _JELU , BASE _JIKAN , BASE _IVOOX , BASE _QWANT , BASE _YOUTUBE , GENRES _URL , BASE _THEMEMOE , BASE _ANIMEFLV
} = require ( './urls' ) ;
} = require ( './urls' ) ;
const schedule = async ( day ) => {
const schedule = async ( day ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _JIKAN } schedule/ ${ day . current } ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _JIKAN } schedule/ ${ day . current } ` , options ) ;
const body = data [ day . current ] ;
const promises = [ ]
body . map ( doc => {
promises . push ( {
return data [ day . current ] . map ( doc => ( {
title : doc . title ,
title : doc . title ,
malid : doc . mal _id ,
malid : doc . mal _id ,
image : doc . image _url
image : doc . image _url
} ) ;
} ) ) ;
} ) ;
} ;
return promises ;
const top = async ( top ) => {
} ;
const data = await homgot ( ` ${ BASE _JIKAN } top/ ${ top . type } / ${ top . page } / ${ top . subtype } ` , { parse : true } ) ;
return data . top . map ( doc => ( {
rank : doc . rank ,
title : doc . title ,
image : doc . image _url ,
type : doc . type ,
startDate : doc . start _date ,
endDate : doc . end _date
} ) ) ;
const top = async ( type , subtype , page ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _JIKAN } top/ ${ type } / ${ page } / ${ subtype } ` , options ) ;
return data . top ;
} ;
} ;
const getAllAnimes = async ( ) => {
const getAllAnimes = async ( ) => {
let data = await getAnimes( )
let data = await homgot( ` ${ BASE _ANIMEFLV } api/animes/list ` , { parse : true } )
return data . map ( item => ( {
return data . map ( item => ( {
index : item [ 0 ] ,
index : item [ 0 ] ,
@ -71,7 +69,24 @@ const getAllAnimes = async () =>{
} ;
} ;
const getAllDirectory = async ( ) => { return await getDirectory ( ) ; } ;
const getAllDirectory = async ( ) => {
let data = JSON . parse ( JSON . stringify ( require ( '../assets/directory.json' ) ) ) ;
return data . map ( doc => ( {
id : doc . id ,
title : doc . title ,
mal _title : doc . mal _title ,
poster : doc . poster ,
type : doc . type ,
genres : doc . genres ,
state : doc . state ,
score : doc . score ,
jkanime : false ,
description : doc . description
} ) ) ;
} ;
const getAnitakume = async ( ) => {
const getAnitakume = async ( ) => {
@ -112,7 +127,7 @@ const getAnitakume = async () =>{
const getNews = async ( pageRss ) => {
const getNews = async ( pageRss ) => {
cons t promises = [ ]
le t promises = [ ]
for ( let i = 0 ; i <= pageRss . length - 1 ; i ++ ) {
for ( let i = 0 ; i <= pageRss . length - 1 ; i ++ ) {
@ -139,70 +154,43 @@ const getNews = async (pageRss) =>{
} ;
} ;
const season = async ( year, type ) => {
const season = async ( season ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _JIKAN } season/ ${ season . year } / ${ season . type } ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _JIKAN } season/ ${ year } / ${ type } ` , options ) ;
let body = data . anime ;
const promises = [ ]
body . map ( doc => {
promises . push ( {
return data . anime . map ( doc => ( {
title : doc . title ,
title : doc . title ,
malid : doc . mal _id ,
image : doc . image _url ,
image : doc . image _url ,
genres : doc . genres . map ( x => x . name )
genres : doc . genres . map ( x => x . name )
} ) ;
} ) ) ;
} ) ;
return promises ;
} ;
} ;
const allSeasons = async ( ) => {
const allSeasons = async ( ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _JIKAN } season/archive ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _JIKAN } season/archive ` , options ) ;
let body = data . archive ;
const promises = [ ]
body . map ( doc => {
promises . push ( {
return data . archive . map ( doc => ( {
year : doc . year ,
year : doc . year ,
seasons : doc . seasons ,
seasons : doc . seasons ,
} ) ;
} ) ) ;
} ) ;
return promises ;
} ;
} ;
const laterSeasons = async ( ) => {
const laterSeasons = async ( ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _JIKAN } season/later ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _JIKAN } season/later ` , options ) ;
let body = data . anime ;
const promises = [ ]
body . map ( doc => {
promises . push ( {
return data . anime . map ( doc => ( {
malid : doc . mal _id ,
title : doc . title ,
title : doc . title ,
image : doc . image _url
image : doc . image _url
} ) ;
} ) ) ;
} ) ;
return promises ;
} ;
} ;
const getLastEpisodes = async ( ) => {
const getLastEpisodes = async ( ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _ANIMEFLV _JELU } LatestEpisodesAdded ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _ANIMEFLV _JELU } LatestEpisodesAdded ` , options ) ;
let body = data . episodes ;
let body = data . episodes ;
const promises = [ ]
const promises = [ ]
@ -222,16 +210,11 @@ const getLastEpisodes = async () =>{
} ;
} ;
const getSpecials = async ( type , subType , page ) => {
const getSpecials = async ( data ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _ANIMEFLV _JELU } ${ type . url } / ${ subType } / ${ page } ` , options ) ;
let body = data [ type . prop ] ;
const promises = [ ]
body . map ( doc => {
const res = await homgot ( ` ${ BASE _ANIMEFLV _JELU } ${ data . url } / ${ data . type } / ${ data . page } ` , { parse : true } ) ;
promises . push ( {
return res [ data . prop ] . map ( doc => ( {
id : doc . id ,
id : doc . id ,
title : doc . title ,
title : doc . title ,
type : doc . type ,
type : doc . type ,
@ -242,163 +225,75 @@ const getSpecials = async (type, subType, page) =>{
rate : doc . rating ,
rate : doc . rating ,
genres : doc . genres . map ( x => x ) ,
genres : doc . genres . map ( x => x ) ,
episodes : doc . episodes . map ( x => x )
episodes : doc . episodes . map ( x => x )
} ) ;
} ) ) ;
} ) ;
return promises ;
} ;
} ;
const getMoreInfo = async ( title ) => {
const getMoreInfo = async ( title ) => {
const promises = [ ]
const promises = [ ]
let animeTitle = ''
let animeId = ''
let animeType = ''
let animeIndex = ''
let seriesTitle
let position
const jkAnimeTitles = [
{ title : 'The God of High School' , id : 'the-god-of-high-school' } ,
{ title : 'Kami no Tou' , id : 'kami-no-tou' } ,
{ title : 'BNA' , id : 'bna' } ,
{ title : 'Ansatsu Kyoushitsu (TV)' , id : 'ansatsu-kyoushitsu-tv' } ,
{ title : 'Ansatsu Kyoushitsu (TV) 2nd Season' , id : 'ansatsu-kyoushitsu-tv-2nd-season' }
] ;
const jkMyAnimetitles = [
{ jkanime : 'Ansatsu Kyoushitsu (TV)' , myanimelist : 'Ansatsu Kyoushitsu' } ,
{ jkanime : 'Ansatsu Kyoushitsu (TV) 2nd Season' , myanimelist : 'Ansatsu Kyoushitsu 2nd Season' }
] ;
let jkanime = false
let jkanimeID
let jkanimeName
for ( let name in jkAnimeTitles ) {
if ( title === jkAnimeTitles [ name ] . title ) {
jkanime = true
jkanimeID = jkAnimeTitles [ name ] . id
for ( let name in jkMyAnimetitles ) {
if ( title === jkMyAnimetitles [ name ] . jkanime || title === jkMyAnimetitles [ name ] . myanimelist ) {
jkanimeName = jkMyAnimetitles [ name ] . myanimelist
position = name
}
}
if ( jkanimeName === undefined ) {
let data = JSON . parse ( JSON . stringify ( require ( '../assets/directory.json' ) ) ) ;
jkanimeName = jkAnimeTitles [ name ] . title
const res = data . filter ( x => x . title === title || x . mal _title === title ) [ 0 ] ;
}
}
if ( ! res . jkanime ) {
}
if ( res . type === 'Anime' ) {
if ( jkanime === false ) {
const titles = [
{ animeflv : 'Kaguya-sama wa Kokurasetai: Tensai-tachi no Renai Zunousen 2nd Season' , myanimelist : 'Kaguya-sama wa Kokurasetai?: Tensai-tachi no Renai Zunousen' , alternative : 'Kaguya-sama wa Kokurasetai' } ,
{ animeflv : 'Naruto Shippuden' , myanimelist : 'Naruto: Shippuuden' } ,
{ animeflv : 'Rock Lee no Seishun Full-Power Ninden' , myanimelist : 'Naruto SD: Rock Lee no Seishun Full-Power Ninden' } ,
{ animeflv : 'BAKI: dai reitaisai-hen' , myanimelist : 'Baki 2nd Season' } ,
{ animeflv : 'Hitoribocchi no ○○ Seikatsu' , myanimelist : 'Hitoribocchi no Marumaru Seikatsu' } ,
{ animeflv : 'Nekopara (TV)' , myanimelist : 'Nekopara' } ,
{ animeflv : 'Black Clover (TV)' , myanimelist : 'Black Clover' }
] ;
for ( let name in titles ) {
if ( title === titles [ name ] . animeflv || title === titles [ name ] . myanimelist || title === titles [ name ] . alternative ) {
seriesTitle = titles [ name ] . animeflv
position = name
}
}
if ( seriesTitle === undefined ) {
seriesTitle = title
}
await getAllAnimes ( ) . then ( animes => {
promises . push ( {
title : res . title || null ,
for ( const i in animes ) {
poster : res . poster || null ,
if ( animes [ i ] . title . split ( '\t' ) [ 0 ] === seriesTitle . split ( '\t' ) [ 0 ] ||
synopsis : res . description || null ,
animes [ i ] . title === ` ${ seriesTitle } (TV) ` ||
status : res . state || null ,
animes [ i ] . title . includes ( seriesTitle . split ( '○' ) [ 0 ] )
type : res . type || null ,
) {
rating : res . score || null ,
if ( animes [ i ] . title . includes ( '(TV)' , 0 ) ) { animeTitle = animes [ i ] . title . split ( '\t' ) [ 0 ] . replace ( ' (TV)' , '' ) }
genres : res . genres || null ,
else { animeTitle = animes [ i ] . title . split ( '\t' ) [ 0 ] }
episodes : await animeflvInfo ( res . id ) . then ( episodes => episodes || null ) ,
animeId = animes [ i ] . id
moreInfo : await animeExtraInfo ( res . mal _title ) . then ( info => info || null ) ,
animeIndex = animes [ i ] . index
promo : await getAnimeVideoPromo ( res . mal _title ) . then ( promo => promo || null ) ,
animeType = animes [ i ] . type . toLowerCase ( )
characters : await getAnimeCharacters ( res . mal _title ) . then ( characters => characters || null )
} ) ;
if ( position !== undefined ) {
seriesTitle = titles [ position ] . myanimelist
}
break ;
}
}
}
else {
promises . push ( {
title : res . title || null ,
poster : res . poster || null ,
synopsis : res . description || null ,
status : res . state || null ,
type : res . type || null ,
rating : res . score || null ,
genres : res . genres || null ,
episodes : await animeflvInfo ( res . id ) . then ( episodes => episodes || null )
} ) ;
} ) ;
}
try {
if ( animeType === 'tv' ) {
promises . push ( await animeflvInfo ( animeId , animeIndex ) . then ( async extra => ( {
title : animeTitle || null ,
poster : await imageUrlToBase64 ( extra . animeExtraInfo [ 0 ] . poster ) || null ,
synopsis : extra . animeExtraInfo [ 0 ] . synopsis || null ,
status : extra . animeExtraInfo [ 0 ] . debut || null ,
type : extra . animeExtraInfo [ 0 ] . type || null ,
rating : extra . animeExtraInfo [ 0 ] . rating || null ,
genres : extra . genres || null ,
episodes : extra . listByEps || null ,
moreInfo : await animeExtraInfo ( seriesTitle ) . then ( info => {
return info || null
} ) ,
promo : await getAnimeVideoPromo ( seriesTitle ) . then ( promo => {
return promo || null
} ) ,
characters : await getAnimeCharacters ( seriesTitle ) . then ( characters => {
return characters || null
} )
} ) ) ) ;
} else {
} else {
promises . push ( await animeflvInfo ( animeId ) . then ( async extra => ( {
if ( res . type === 'Anime' ) {
title : animeTitle || null ,
promises . push ( {
poster : await imageUrlToBase64 ( extra . animeExtraInfo [ 0 ] . poster ) || null ,
title : res . title || null ,
synopsis : extra . animeExtraInfo [ 0 ] . synopsis || null ,
poster : res . poster || null ,
status : extra . animeExtraInfo [ 0 ] . debut || null ,
synopsis : res . description || null ,
type : extra . animeExtraInfo [ 0 ] . type || null ,
status : res . state || null ,
rating : extra . animeExtraInfo [ 0 ] . rating || null ,
type : res . type || null ,
genres : extra . genres || null ,
rating : res . score || null ,
episodes : extra . listByEps || null ,
genres : res . genres || null ,
} ) ) ) ;
episodes : await jkanimeInfo ( res . id ) . then ( episodes => episodes || null ) ,
moreInfo : await animeExtraInfo ( res . mal _title ) . then ( info => info || null ) ,
promo : await getAnimeVideoPromo ( res . mal _title ) . then ( promo => promo || null ) ,
characters : await getAnimeCharacters ( res . mal _title ) . then ( characters => characters || null )
} ) ;
}
}
else {
} catch ( err ) {
promises . push ( {
console . log ( err )
title : res . title || null ,
poster : res . poster || null ,
synopsis : res . description || null ,
status : res . state || null ,
type : res . type || null ,
rating : res . score || null ,
genres : res . genres || null ,
episodes : await jkanimeInfo ( res . id ) . then ( episodes => episodes || null )
} ) ;
}
}
} else {
promises . push ( await jkanimeInfo ( jkanimeID ) . then ( async extra => ( {
title : jkanimeName || null ,
poster : await imageUrlToBase64 ( extra . animeExtraInfo [ 0 ] . poster ) || null ,
synopsis : extra . animeExtraInfo [ 0 ] . synopsis || null ,
status : extra . animeExtraInfo [ 0 ] . debut || null ,
type : extra . animeExtraInfo [ 0 ] . type || null ,
rating : extra . animeExtraInfo [ 0 ] . rating || null ,
genres : extra . genres || null ,
episodes : extra . listByEps || null ,
moreInfo : await animeExtraInfo ( jkanimeName ) . then ( info => {
return info || null
} ) ,
promo : await getAnimeVideoPromo ( jkanimeName ) . then ( promo => {
return promo || null
} ) ,
characters : await getAnimeCharacters ( jkanimeName ) . then ( characters => {
return characters || null
} )
} ) ) ) ;
}
}
return promises ;
return promises ;
@ -407,33 +302,11 @@ const getMoreInfo = async (title) =>{
const getAnimeServers = async ( id ) => {
const getAnimeServers = async ( id ) => {
const jkAnimeIDs = [
if ( isNaN ( id . split ( '/' ) [ 0 ] ) ) {
{ id : 'the-god-of-high-school' } ,
return await videoServersJK ( id )
{ id : 'kami-no-tou' } ,
{ id : 'bna' } ,
{ id : 'ansatsu-kyoushitsu-tv' } ,
{ id : 'ansatsu-kyoushitsu-tv-2nd-season' }
] ;
let jkanime = false
let jkanimeID
for ( let name in jkAnimeIDs ) {
if ( id . includes ( jkAnimeIDs [ name ] . id ) ) {
jkanime = true
jkanimeID = id
}
}
if ( jkanime === false ) {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _ANIMEFLV _JELU } GetAnimeServers/ ${ id } ` , options ) ;
let body = data . servers ;
return await transformUrlServer ( body ) ;
} else {
} else {
return await videoServersJK ( jkanimeID )
const data = await homgot ( ` ${ BASE _ANIMEFLV _JELU } GetAnimeServers/ ${ id } ` , { parse : true } ) ;
return await transformUrlServer ( data . servers ) ;
}
}
} ;
} ;
@ -442,60 +315,37 @@ const search = async (title) =>{ return await searchAnime(title); };
const getImages = async ( query ) => {
const getImages = async ( query ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _QWANT } count= ${ query . count } &q= ${ query . title } &t= ${ query . type } &safesearch= ${ query . safesearch } &locale= ${ query . country } &uiv=4 ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _QWANT } count= ${ query . count } &q= ${ query . title } &t= ${ query . type } &safesearch= ${ query . safesearch } &locale= ${ query . country } &uiv=4 ` , options ) ;
const body = data . data . result . items ;
const promises = [ ]
body . map ( doc => {
promises . push ( {
return data . data . result . items . map ( doc => ( {
type : doc . thumb _type ,
type : doc . thumb _type ,
thumbnail : ` https: ${ doc . thumbnail } ` ,
thumbnail : ` https: ${ doc . thumbnail } ` ,
fullsize : ` https: ${ doc . media _fullsize } `
fullsize : ` https: ${ doc . media _fullsize } `
} ) ;
} ) ) ;
} ) ;
return promises ;
} ;
} ;
const getYoutubeVideos = async ( channelId ) => {
const getYoutubeVideos = async ( channelId ) => {
let options = { parse : true }
const data = await homgot ( ` ${ BASE _YOUTUBE } ${ channelId . id } &part= ${ channelId . part } &order= ${ channelId . order } &maxResults= ${ channelId . maxResults } ` , { parse : true } ) ;
const data = await homgot ( ` ${ BASE _YOUTUBE } ${ channelId . id } &part= ${ channelId . part } &order= ${ channelId . order } &maxResults= ${ channelId . maxResults } ` , options ) ;
const body = data [ channelId . prop ] ;
const promises = [ ]
body . map ( doc => {
promises . push ( {
return data [ channelId . prop ] . map ( doc => ( {
title : doc . snippet . title ,
title : doc . snippet . title ,
videoId : doc . id . videoId ,
videoId : doc . id . videoId ,
thumbDefault : doc . snippet . thumbnails . default . url ,
thumbDefault : doc . snippet . thumbnails . default . url ,
thumbMedium : doc . snippet . thumbnails . medium . url ,
thumbMedium : doc . snippet . thumbnails . medium . url ,
thumbHigh : doc . snippet . thumbnails . high . url
thumbHigh : doc . snippet . thumbnails . high . url
} ) ;
} ) ) ;
} ) ;
return promises ;
} ;
} ;
const getRadioStations = async ( ) => {
const getRadioStations = async ( ) => require ( '../assets/radiostations.json' ) ;
return require ( '../assets/radiostations.json' ) ;
}
const getOpAndEd = async ( title ) => {
const getOpAndEd = async ( title ) => await structureThemes ( await parserThemes . serie ( title ) , true ) ;
let data = await parserThemes . serie ( title )
return await structureThemes ( data , true )
} ;
const getThemesYear = async ( year ) => {
const getThemesYear = async ( year ) => {
let data = [ ]
let data = [ ]
if ( year === undefined ) {
if ( year === undefined ) {
return await parserThemes . allYears ( ) ;
return await parserThemes . allYears ( ) ;
} else {
} else {
@ -507,29 +357,23 @@ const getThemesYear = async (year) => {
const getRandomTheme = async ( ) => {
const getRandomTheme = async ( ) => {
let promise = [ ]
let data = await homgot ( ` ${ BASE _THEMEMOE } roulette ` , { parse : true } ) ;
let options = { parse : true }
const data = await homgot ( ` ${ BASE _THEMEMOE } roulette ` , options ) ;
let themes = await getThemes ( data . themes )
let themes = await getThemes ( data . themes )
promise . push ( {
return themes . map ( doc => ( {
name : data . name ,
name : data . name ,
title : themes[ 0 ] . name ,
title : doc . name ,
link : themes[ 0 ] . video
link : doc . video
} )
} ) ) ;
return promise ;
} ;
} ;
const getArtist = async ( id ) => {
const getArtist = async ( id ) => {
let data
if ( id === undefined ) {
if ( id === undefined ) {
return await parserThemes . artists ( ) ;
return await parserThemes . artists ( ) ;
} else {
} else {
data = await parserThemes . artist ( id )
return await structureThemes ( await parserThemes . artist ( id ) , false )
return await structureThemes ( data , false )
}
}
} ;
} ;
@ -538,15 +382,13 @@ const getAnimeGenres = async(genre, order, page) => {
let $
let $
let promises = [ ]
let promises = [ ]
let options = { scrapy : true }
if ( page !== undefined ) {
if ( page !== undefined ) {
$ = await homgot ( ` ${ GENRES _URL } genre%5B%5D= ${ genre } &order= ${ order } &page= ${ page } ` , options )
$ = await homgot ( ` ${ GENRES _URL } genre%5B%5D= ${ genre } &order= ${ order } &page= ${ page } ` , { scrapy : true } )
} else {
} else {
$ = await homgot ( ` ${ GENRES _URL } genre%5B%5D= ${ genre } &order= ${ order } ` , options )
$ = await homgot ( ` ${ GENRES _URL } genre%5B%5D= ${ genre } &order= ${ order } ` , { scrapy : true } )
}
}
$ ( 'div.Container ul.ListAnimes li article' ) . each ( ( index , element ) => {
$ ( 'div.Container ul.ListAnimes li article' ) . each ( ( index , element ) => {
const $element = $ ( element ) ;
const $element = $ ( element ) ;
const id = $element . find ( 'div.Description a.Button' ) . attr ( 'href' ) . slice ( 1 ) ;
const id = $element . find ( 'div.Description a.Button' ) . attr ( 'href' ) . slice ( 1 ) ;
@ -574,10 +416,7 @@ const getAnimeGenres = async(genre, order, page) => {
} ;
} ;
const getAllThemes = async ( ) => {
const getAllThemes = async ( ) => await structureThemes ( await parserThemes . all ( ) , false ) ;
let data = await parserThemes . all ( )
return await structureThemes ( data , false )
} ;
module . exports = {
module . exports = {
schedule ,
schedule ,