myreadingmanga-unofficial
Version:
MyReadingManga WebCrawler. Find By Languages, Genres and Tags.
38 lines (34 loc) • 1.4 kB
JavaScript
const state = require('./state.js')
const axios = require('axios')
const JSSoup = require('jssoup').default
const imageDownloader = require('image-downloader')
const fs = require('fs');
async function robot(manga) {
const content = state.load()
await getPages(manga, content)
async function getPages(manga, content) {
const { data } = await axios.get(manga.url)
const soup = new JSSoup(data)
soup.prettify()
const prePages = soup.findAll('img')
const pages = prePages
.filter(prePage => !prePage.attrs.src.endsWith("gif"))
.filter(prePage => !prePage.attrs.src.includes("wp-content"))
pages.map(page => console.log(page.attrs.src))
downloadAll(pages, manga.title)
}
async function downloadAll(pages, title) {
pages.map(async page => {
const pos = page.attrs.src.lastIndexOf('/')+1
const fileName = page.attrs.src.substr(pos)
const url = page.attrs.src
await downloadAndSave(title, fileName, url)
})
}
async function downloadAndSave(title, fileName, url) {
if(!fs.existsSync('./content')) fs.mkdirSync('./content')
if(!fs.existsSync(`./content/${title}`)) fs.mkdirSync(`./content/${title}`)
return imageDownloader.image({ url, dest: `./content/${title}/${fileName}` })
}
}
module.exports = robot