finalizando estructura del proyecto

pull/1/head
carlos-burelo 4 years ago
parent c6cf67d513
commit fc71f89422

1
.gitignore vendored

@ -1 +1,2 @@
node_modules node_modules
dist

@ -5,6 +5,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://carlos-burelo.github.io/src/css/main.css">
<title>Document</title> <title>Document</title>
</head> </head>

@ -50,7 +50,7 @@ async function getLastest(req: any, res: any) {
success: false success: false
}) })
} }
} };
async function getEmision(req: any, res: any) { async function getEmision(req: any, res: any) {
try { try {
let { page } = req.query; let { page } = req.query;
@ -98,7 +98,7 @@ async function getEmision(req: any, res: any) {
success: false success: false
}) })
} }
} };
async function getAnime(req: any, res: any) { async function getAnime(req: any, res: any) {
try { try {
let { id } = req.params; let { id } = req.params;
@ -200,6 +200,58 @@ async function getAnime(req: any, res: any) {
}); });
}; };
}; };
async function getAnimes(req, res) {
try {
let {page} = req.params;
!page ? page = 1 : page = page
const bodyResponse = await axios.get(`${urls.main}/animes?page=${page}`);
const $ = cheerio.load(bodyResponse.data);
const animes = [];
$('.animes .container .row article').each((i, e) => {
let el = $(e);
let id = el.find('a').attr('href');
id = id.split('/')[4]
let title = el.find('.Title').text();
let img = el.find('.Image img').attr('src');
let category = el.find('.category').text();
category = category.substring(1, category.length)
let year = parseInt(el.find('.fecha').text());
const anime = {
id,
title,
img,
category,
year
}
animes.push(anime);
})
let totalPages:any = $('.pagination').children().length;
totalPages = $('.pagination').find('.page-item')[totalPages - 2];
let pages = parseInt($(totalPages).text());
let current = parseInt(page)
res.status(200)
.json({
current,
pages,
animes
})
} catch (err) {
res.status(500)
.json({
message: err.message,
success: false
})
}
};
async function searchAnime(req: any, res: any) { async function searchAnime(req: any, res: any) {
try { try {
let { id } = req.params; let { id } = req.params;
@ -345,7 +397,7 @@ async function getCategories(req, res) {
res.status(200) res.status(200)
.json( .json(
categories, categories,
) )
} catch (err) { } catch (err) {
res.status(500) res.status(500)
.json({ .json({
@ -390,6 +442,58 @@ async function getGenders(req, res) {
}) })
} }
}; };
async function getGender(req:any, res:any) {
try {
let { gender } = req.params;
let { page } = req.params;
!page ? page = 1 : page = page
const bodyResponse = await axios.get(`${urls.main}/genero/${gender}?page=${page}`);
const $ = cheerio.load(bodyResponse.data);
const animes = [];
$('.animes .container .row article').each((i, e) => {
let el = $(e);
let id = el.find('a').attr('href');
id = id.split('/')[4]
let title = el.find('.Title').text();
let img = el.find('.Image img').attr('src');
let category = el.find('.category').text();
category = category.substring(1, category.length)
let year = parseInt(el.find('.fecha').text());
const anime = {
id,
title,
img,
category,
year
}
animes.push(anime);
})
let totalPages: any = $('.pagination').children().length;
totalPages = $('.pagination').find('.page-item')[totalPages - 2];
let pages = parseInt($(totalPages).text());
let current = parseInt(page)
res.status(200)
.json({
current,
pages,
animes
})
} catch (err) {
res.status(500)
.json({
message: err.message,
success: false
})
}
}
async function getYears(req, res) { async function getYears(req, res) {
try { try {
const response = await axios.get(`${urls.main}/animes`); const response = await axios.get(`${urls.main}/animes`);
@ -426,15 +530,174 @@ async function getYears(req, res) {
}) })
} }
}; };
async function getYear(req: any, res: any) {
try {
let { year } = req.params;
let { page } = req.params;
!page ? page = 1 : page = page
const bodyResponse = await axios.get(`${urls.main}/year/${year}?page=${page}`);
const $ = cheerio.load(bodyResponse.data);
const animes = [];
$('.animes .container .row article').each((i, e) => {
let el = $(e);
let id = el.find('a').attr('href');
id = id.split('/')[4]
let title = el.find('.Title').text();
let img = el.find('.Image img').attr('src');
let category = el.find('.category').text();
category = category.substring(1, category.length)
let year = parseInt(el.find('.fecha').text());
const anime = {
id,
title,
img,
category,
year
}
animes.push(anime);
})
let totalPages: any = $('.pagination').children().length;
totalPages = $('.pagination').find('.page-item')[totalPages - 2];
let pages = parseInt($(totalPages).text());
let current = parseInt(page)
res.status(200)
.json({
current,
pages,
animes
})
} catch (err) {
res.status(500)
.json({
message: err.message,
success: false
})
}
};
async function getLetters(req, res) {
try {
const bodyResponse = await axios.get(`${urls.main}/animes`);
const $ = cheerio.load(bodyResponse.data);
const letters = []
let lettersContainer = $('.filter-container .clearfix .float-left')[3];
$(lettersContainer).find('.dropdown-menu .dropdown-item')
.each((i, e) => {
let el = $(e)
let title = el.text();
let id = el.attr('href');
id = id.split('/')[2];
let letter = {
title,
id
}
letters.push(letter)
})
res.status(200)
.json(
letters,
)
} catch (err) {
res.status(500)
.json({
message: err.message,
success: false
})
}
};
async function getBy(req, res, multiple?) {
try {
let {
gender,
letter,
category
} = req.params;
let {
page
} = req.query;
if (!page) {
page = 1
}
let bodyResponse;
if (multiple) {
bodyResponse = await axios.get(`${urls.main}/categoria/${category}/genero/${gender}?page=${page}`);
} else if (gender && !multiple) {
bodyResponse = await axios.get(`${urls.main}/genero/${gender}?page=${page}`);
} else if (letter && !multiple) {
bodyResponse = await axios.get(`${urls.main}/letra/${letter}?page=${page}`);
} else if (category && !multiple) {
bodyResponse = await axios.get(`${urls.main}/categoria/${category}?page=${page}`);
}
const $ = cheerio.load(bodyResponse.data);
const animes = [];
$('.animes .container .row article').each((i, e) => {
let el = $(e);
let id = el.find('.link-anime').attr('href');
id = id.split('/')[4];
let img = el.find('.link-anime .Image img').attr('src');
let title = el.find('.link-anime .Title').text();
let type = el.find('.link-anime .info .category').text();
let year = el.find('.link-anime .info .fecha').text();
let anime = {
id,
img,
title,
type,
year
}
animes.push(anime);
})
let totalPages:any = $('.pagination').children().length;
totalPages = $('.pagination').find('.page-item')[totalPages - 2];
let pages = parseInt($(totalPages).text());
res.status(200)
.json({
animes,
pages,
success: true
})
} catch (err) {
res.status(500)
.json({
message: err.message,
success: false
})
}
}
export { export {
getLastest, getLastest,
getEmision, getEmision,
getAnime, getAnime,
getAnimes,
searchAnime, searchAnime,
getEpisode, getEpisode,
getCategories, getCategories,
getGenders, getGenders,
getGender,
getYears, getYears,
getYear,
getLetters,
getBy
} }

@ -4,23 +4,31 @@ import {
getEmision, getEmision,
getLastest, getLastest,
getAnime, getAnime,
getAnimes,
searchAnime, searchAnime,
getEpisode, getEpisode,
getGenders, getGenders,
getGender,
getCategories, getCategories,
getYears getYears,
getYear,
getLetters,
getBy
} from '../controllers/controller' } from '../controllers/controller'
routes.get('/lastest', (req, res) => { routes.get('/lastest', (req, res) => {
getLastest(req, res); getLastest(req, res);
}) });
routes.get('/emision', (req, res) => { routes.get('/emision', (req, res) => {
getEmision(req, res); getEmision(req, res);
}); });
routes.get('/anime/:id', (req, res) => { routes.get('/anime/:id', (req, res) => {
getAnime(req, res); getAnime(req, res);
}); });
routes.get('/animes/:page', (req, res) => {
getAnimes(req, res);
});
routes.get('/ver/:id', (req, res) => { routes.get('/ver/:id', (req, res) => {
getEpisode(req, res); getEpisode(req, res);
}); });
@ -30,11 +38,33 @@ routes.get('/search/:id', (req, res) => {
routes.get('/genders', (req, res) => { routes.get('/genders', (req, res) => {
getGenders(req, res); getGenders(req, res);
}); });
routes.get('/gender/:gender/:page', (req, res) => {
getGender(req, res);
});
routes.get('/categories', (req, res) => { routes.get('/categories', (req, res) => {
getCategories(req, res); getCategories(req, res);
}); });
routes.get('/years', (req, res) => { routes.get('/years', (req, res) => {
getYears(req, res); getYears(req, res);
}); });
routes.get('/year/:year/:page', (req, res) => {
getYear(req, res);
});
routes.get('/letters', (req, res) => {
getLetters(req, res);
});
routes.get('/category/:category/gender/:gender', (req, res) => {
getBy(req, res, true)
})
routes.get('/gender/:gender', (req, res) => {
getBy(req, res);
})
routes.get('/letter/:letter', (req, res) => {
getBy(req, res);
})
routes.get('/category/:category', (req, res) => {
getBy(req, res);
})
export default routes export default routes
Loading…
Cancel
Save