diff --git a/README.md b/README.md
index b33de99..37a746a 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
#
-
+
diff --git a/assets/img/logo.png b/assets/img/cover.png
similarity index 100%
rename from assets/img/logo.png
rename to assets/img/cover.png
diff --git a/src/controllers/AnimeController.ts b/src/controllers/AnimeController.ts
index 20657b5..243ac15 100644
--- a/src/controllers/AnimeController.ts
+++ b/src/controllers/AnimeController.ts
@@ -2,6 +2,7 @@ import { NextFunction, Request, Response } from 'express';
import { requestGot } from '../utils/requestCall';
import {
animeFlvInfo,
+ imageUrlToBase64,
jkanimeInfo,
monoschinosInfo,
videoServersJK,
@@ -241,8 +242,10 @@ export default class AnimeController {
}
async getLastEpisodes(req: Request, res: Response, next: NextFunction) {
- let data: any;
+ // let data: any;
+ let $: cheerio.Root;
let episodes: Episode[] = [];
+ let animeList: any[] = [];
try {
const resultQueryRedis: any = await redisClient.get(
@@ -254,28 +257,75 @@ export default class AnimeController {
return res.status(200).json(resultRedis);
} else {
- data = await requestGot(
- `${urls.BASE_ANIMEFLV_JELU}LatestEpisodesAdded`,
- {
- parse: true,
- scrapy: false,
- },
- );
+ // @ANIMEFLV
+ // data = await requestGot(
+ // `${urls.BASE_ANIMEFLV_JELU}LatestEpisodesAdded`,
+ // {
+ // parse: true,
+ // scrapy: false,
+ // },
+ // );
+
+ $ = await requestGot(`${urls.BASE_MONOSCHINOS}`, {
+ scrapy: true,
+ parse: false,
+ });
}
} catch (err) {
return next(err);
}
+ // @ANIMEFLV
+ // 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);
+ // }
+
+ let getLastest: any = $('.container .caps .container')[0];
+
+ $(getLastest)
+ .find('.row article')
+ .each((index: number, element: cheerio.Element) => {
+ let el: cheerio.Cheerio = $(element);
+ let title: string | undefined = el
+ .find('.Title')
+ .html()
+ ?.split('\t')[0];
+ let img: any = el.find('.Image img').attr('src');
+ let type: any = el.find('.Image figure span').text();
+ type = type.substring(1, type.length);
+ let nEpisode: any = el.find('.dataEpi .episode').text();
+ nEpisode = parseInt(nEpisode.split('\n')[1]);
+ let id: any = el.find('a').attr('href');
+ id = id.split('/')[4];
+ id = id.split('-');
+ id.splice(id.length - 2, 2);
+ id = `${id.join('-')}-episodio-${nEpisode}`;
+
+ let anime = {
+ id: `ver/${id}`,
+ title,
+ image: img,
+ episode: nEpisode,
+ };
- 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),
- };
+ animeList.push(anime);
+ });
- episodes.push(formattedEpisode);
+ for (const anime of animeList) {
+ episodes.push({
+ id: anime.id,
+ title: anime.title,
+ image: await imageUrlToBase64(anime.image),
+ episode: anime.episode,
+ servers: await videoServersMonosChinos(anime.id),
+ });
}
if (episodes.length > 0) {
diff --git a/src/controllers/UtilsController.ts b/src/controllers/UtilsController.ts
index fcea77d..c7d3808 100644
--- a/src/controllers/UtilsController.ts
+++ b/src/controllers/UtilsController.ts
@@ -140,11 +140,6 @@ export default class UtilsController {
const news: News[] = [];
const pagesRss: rssPage[] = [
{ url: urls.BASE_KUDASAI, author: 'Kudasai', content: 'content_encoded' },
- {
- url: urls.BASE_PALOMITRON,
- author: 'Palomitron',
- content: 'description',
- },
{
url: urls.BASE_RAMENPARADOS,
author: 'Ramen para dos',
diff --git a/src/utils/requestCall.ts b/src/utils/requestCall.ts
index 9f99336..1f005c4 100644
--- a/src/utils/requestCall.ts
+++ b/src/utils/requestCall.ts
@@ -11,7 +11,7 @@ interface Options {
export const requestGot = async (
url: string,
- options: Options,
+ options?: Options,
): Promise => {
if (options !== undefined) {
if (options.scrapy) {
diff --git a/src/utils/urls.ts b/src/utils/urls.ts
index 2322d22..99c6bcc 100644
--- a/src/utils/urls.ts
+++ b/src/utils/urls.ts
@@ -9,7 +9,6 @@ export default {
BASE_IVOOX:
'https://www.ivoox.com/podcast-anitakume_fg_f1660716_filtro_1.xml',
BASE_KUDASAI: 'https://somoskudasai.com/feed/',
- BASE_PALOMITRON: 'https://elpalomitron.com/category/animemanga/feed/',
BASE_RAMENPARADOS: 'https://ramenparados.com/category/noticias/anime/feed/',
BASE_CRUNCHYROLL: 'https://www.crunchyroll.com/newsrss?lang=esES',
JKANIME_SEARCH: 'https://jkanime.net/buscar/',
diff --git a/src/utils/util.ts b/src/utils/util.ts
index b04f991..0c4e74a 100644
--- a/src/utils/util.ts
+++ b/src/utils/util.ts
@@ -597,7 +597,6 @@ export const monoschinosInfo = async (id: string | undefined) => {
export const videoServersMonosChinos = async (id: string) => {
let $: cheerio.Root;
let videoServers: any[] = [];
- let nameServers: any[] = [];
try {
const resultQueryRedis: any = await redisClient.get(
@@ -872,6 +871,11 @@ export function getThemes(themes: any[]) {
}));
}
+export const imageUrlToBase64 = async (url: string) => {
+ let img: any = await requestGot(url);
+ return img.rawBody.toString('base64');
+};
+
export function hashStringMd5(string: string) {
return crypto.createHash('md5').update(string).digest('hex');
}