|
|
|
@ -20,7 +20,7 @@ exports.searchBar = (req, res)=>
|
|
|
|
|
exports.search = async (req, res)=>
|
|
|
|
|
{
|
|
|
|
|
if(!req.body?.searchstring) return res.sendStatus(404)
|
|
|
|
|
var data = await new Search(req.body.searchstring).search();
|
|
|
|
|
var data = await new Search(req.body.searchstring).searchExtraInfo();
|
|
|
|
|
if(!Array.isArray(data)) return res.sendStatus(404);
|
|
|
|
|
const favorites = await FavoriteModel.find()
|
|
|
|
|
const favoriteScanlators = favorites.map(favorite => favorite.scanlator);
|
|
|
|
@ -109,13 +109,22 @@ exports.manga = async (req, res)=>
|
|
|
|
|
const scanlatorHasTitle = await new Modules(scanlator).titleExists(title);
|
|
|
|
|
if(!scanlatorHasTitle) return res.sendStatus(404);
|
|
|
|
|
let manga;
|
|
|
|
|
let chaptersRead;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
manga = await new Manga(scanlator,link, title).get()
|
|
|
|
|
manga = await new Manga(scanlator,link, title).get();
|
|
|
|
|
chaptersRead = await ChapterModel.find({scanlator,title});
|
|
|
|
|
for(let i = 0; i<manga.List.length; i++)
|
|
|
|
|
{
|
|
|
|
|
for(let j = 0; j<chaptersRead.length; j++)
|
|
|
|
|
{
|
|
|
|
|
if(manga.List[i].num==chaptersRead[j].chapterNum) manga.List[i]['Read'] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (error)
|
|
|
|
|
{
|
|
|
|
|
res.sendStatus(404);
|
|
|
|
|
console.log('There was an error:', error);
|
|
|
|
|
}
|
|
|
|
|
res.render('mangaPage.ejs', {data:{...manga, scanlator}});
|
|
|
|
|
|
|
|
|
@ -125,13 +134,14 @@ exports.chapter = async (req, res)=>
|
|
|
|
|
const {scanlator, title, chapter, link} = req.params;
|
|
|
|
|
//IF its already there even with wrong things its there just show it
|
|
|
|
|
const fileExists = fs.existsSync(`./public/Saved/${scanlator}/${title}/CH_${chapter}`);
|
|
|
|
|
|
|
|
|
|
if(fileExists)
|
|
|
|
|
{
|
|
|
|
|
const imgs =fs.readdirSync(`./public/Saved/${scanlator}/${title}/CH_${chapter}`);
|
|
|
|
|
const latestChap = fs.readdirSync(`./public/Saved/${scanlator}/${title}`).length
|
|
|
|
|
const List = imgs.map(filename => {return `./Saved/${scanlator}/${title}/CH_${chapter}/${filename}`});
|
|
|
|
|
const mangaLink = await new Chapter(scanlator, link, title, chapter).getMangaLink();
|
|
|
|
|
return res.render('display.ejs', {data:{title,latestChap,scanlator, chapterNum:parseInt(chapter), mangaLink, List}});
|
|
|
|
|
return res.render('chapterPage.ejs', {data:{title,latestChap,scanlator, chapterNum:parseInt(chapter), mangaLink, List}});
|
|
|
|
|
}
|
|
|
|
|
//If it isn't make sure there is no bad params being passed
|
|
|
|
|
const scanlatorExists = await new Modules(scanlator).exists();
|
|
|
|
@ -147,7 +157,7 @@ exports.chapter = async (req, res)=>
|
|
|
|
|
{
|
|
|
|
|
return res.sendStatus(404);
|
|
|
|
|
}
|
|
|
|
|
res.render('display.ejs', {data:{...manga, scanlator, chapterNum:parseInt(chapter)}});
|
|
|
|
|
res.render('chapterPage.ejs', {data:{...manga, scanlator, chapterNum:parseInt(chapter)}});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
exports.favorites = async (req, res)=>
|
|
|
|
@ -401,20 +411,73 @@ exports.chapterRead = async (req, res)=>
|
|
|
|
|
const scanlatorHasTitle = await new Modules(scanlator).titleExists(title);
|
|
|
|
|
if(!scanlatorHasTitle) return res.sendStatus(404);
|
|
|
|
|
const manga = await new Manga(scanlator, link, title).get();
|
|
|
|
|
const {latestChap} = manga;
|
|
|
|
|
const {latestChap, List} = manga;
|
|
|
|
|
if(chapter > latestChap || chapter < 0) return res.sendStatus(404);
|
|
|
|
|
const chap = new ChapterModel();
|
|
|
|
|
let chapterNum = chapter;
|
|
|
|
|
let chapterLink = List.filter(item=>item.num == chapterNum)[0].link;
|
|
|
|
|
if(!chapterLink) return res.sendStatus(404);
|
|
|
|
|
const _chapter = await new Chapter(scanlator, chapterLink,title, chapter).get();
|
|
|
|
|
let lastImageRead = _chapter.List[_chapter.List.length-1];
|
|
|
|
|
chap.lastImageRead = lastImageRead;
|
|
|
|
|
const chaps = await ChapterModel.find({scanlator, title, link, chapterNum});
|
|
|
|
|
if(chaps.length>0) return res.sendStatus(404);
|
|
|
|
|
if(chaps.length>0) return updateChapter(chaps[0],res, lastImageRead, true)
|
|
|
|
|
chap.scanlator = scanlator;
|
|
|
|
|
chap.title = title;
|
|
|
|
|
chap.link = link;
|
|
|
|
|
chap.chapterNum = chapter;
|
|
|
|
|
chap.lastImageRead = lastImageRead;
|
|
|
|
|
chap.completely = true;
|
|
|
|
|
chap.save()
|
|
|
|
|
res.sendStatus(200);
|
|
|
|
|
//Send to db;
|
|
|
|
|
}
|
|
|
|
|
async function updateChapter(chap, res, lastImageRead, completely=false)
|
|
|
|
|
{
|
|
|
|
|
await ChapterModel.findOneAndUpdate(chap._id,{completely, lastImageRead:lastImageRead}, {new:true});
|
|
|
|
|
res.sendStatus(200);
|
|
|
|
|
}
|
|
|
|
|
exports.chapterIncompleteRead = async (req,res)=>
|
|
|
|
|
{
|
|
|
|
|
const {scanlator, title, chapter, link, img} = req.params;
|
|
|
|
|
const scanlatorExists = await new Modules(scanlator).exists();
|
|
|
|
|
if(!scanlatorExists) return res.sendStatus(404);
|
|
|
|
|
const scanlatorHasTitle = await new Modules(scanlator).titleExists(title);
|
|
|
|
|
if(!scanlatorHasTitle) return res.sendStatus(404);
|
|
|
|
|
let chapterNum = chapter;
|
|
|
|
|
const manga = await new Manga(scanlator, link, title).get();
|
|
|
|
|
const {latestChap, List} = manga;
|
|
|
|
|
let chapterLink = List.filter(item=> item.num == chapterNum)[0].link;
|
|
|
|
|
if(chapter > latestChap || chapter < 0) return res.sendStatus(404);
|
|
|
|
|
const chap = new ChapterModel();
|
|
|
|
|
const _chapter = await new Chapter(scanlator, chapterLink,title, chapterNum).get();
|
|
|
|
|
let lastImageRead = _chapter.List.filter(item=>
|
|
|
|
|
{
|
|
|
|
|
let parsedImageURL = item.split('.')[item.split('.').length-2].split('/')[item.split('.')[item.split('.').length-2].split('/').length-1]
|
|
|
|
|
return(parsedImageURL==img)
|
|
|
|
|
})[0];
|
|
|
|
|
const chaps = await ChapterModel.find({scanlator, title, link, chapterNum});
|
|
|
|
|
if(chaps.length>0) return updateChapter(chaps[0],res, lastImageRead)
|
|
|
|
|
chap.scanlator = scanlator;
|
|
|
|
|
chap.title = title;
|
|
|
|
|
chap.link = link;
|
|
|
|
|
chap.chapterNum = chapter;
|
|
|
|
|
chap.lastImageRead = lastImageRead;
|
|
|
|
|
chap.completely = false;
|
|
|
|
|
chap.save()
|
|
|
|
|
res.sendStatus(200);
|
|
|
|
|
}
|
|
|
|
|
exports.chapterLastRead = async (req, res)=>
|
|
|
|
|
{
|
|
|
|
|
const {scanlator, title, chapter, link} = req.params;
|
|
|
|
|
const scanlatorExists = await new Modules(scanlator).exists();
|
|
|
|
|
if(!scanlatorExists) return res.sendStatus(404);
|
|
|
|
|
const scanlatorHasTitle = await new Modules(scanlator).titleExists(title);
|
|
|
|
|
if(!scanlatorHasTitle) return res.sendStatus(404);
|
|
|
|
|
let chapterNum = chapter;
|
|
|
|
|
const chaps = await ChapterModel.find({scanlator, title, link, chapterNum});
|
|
|
|
|
if(chaps.length == 0) return res.sendStatus(404);
|
|
|
|
|
let data = chaps[0].lastImageRead;
|
|
|
|
|
res.render('data.ejs', {data});
|
|
|
|
|
}
|
|
|
|
|
exports.dashboard = async (req, res)=>
|
|
|
|
|
{
|
|
|
|
|