KawAnime/assets/scripts/init/horrible.js

104 lines
2.8 KiB
JavaScript
Raw Normal View History

2017-05-03 18:22:07 +00:00
/**
* Created by Kylart on 03/05/2017.
*
* Rip Nyaa.se May, 1st 2017
*
*/
const horribleApi = require('horrible-api')
const malScraper = require('mal-scraper')
const qs = require('querystring')
exports.getLatest = (url, res) => {
const query = qs.parse(url.query.replace('?', ''))
const quality = query.quality
let counter = 0
let toReturn = []
horribleApi.getLatest(quality.toString()).then((result) => {
for (let i = 0; i < result.length; ++i)
{
const realName = result[i].name
const name = realName.split(' ').slice(1).join(' ')
const rawName = realName.split(' ').slice(1, -2).join(' ')
const researchName = rawName.split(' ').join('').toLowerCase()
const ep = name.split(' ').slice(-1)[0]
const link = result[i].link
malScraper.getResultsFromSearch(name).then((items) => {
return malScraper.getInfoFromURI(malScraper.getBestMatch(researchName, items))
}).then((item) => {
const picture = item.picture
const fullSynopsis = item.synopsis
const synopsis = item.synopsis.length > 170
? item.synopsis.slice(0, 175) + '...'
: fullSynopsis
toReturn[i] = {
name: name,
researchName: researchName,
ep: ep,
magnetLink: link,
picture: picture,
synopsis: synopsis,
fullSynopsis: fullSynopsis
}
++counter
if (counter === 18)
{
console.log('[Horrible] (Releases): Sending Latest releases.')
res.writeHead(200, {'Content-type': 'application/json'})
res.write(JSON.stringify(toReturn))
res.end()
}
}).catch(err => {
console.log('[Horrible] (Releases): An error occurred...\n' + err)
res.writeHead(204, {})
res.end()
})
}
}).catch((err) => {
console.log('[Horrible] (Releases): An error occurred...\n' + err)
res.writeHead(204, {})
res.end()
})
}
exports.download = (req, res) => {
req.on('data', (chunk) => {
chunk = JSON.parse(chunk)
console.log('[Horrible] (Download): Received a download request.')
const searchData = {
quality: chunk.quality,
name: chunk.name,
fromEp: chunk.fromEp,
untilEp: chunk.untilEp
}
// Calling api
horribleApi.getMagnetsFromAnimeName(searchData).then((links) => {
console.log('[Horrible] (Download): Request fulfilled!')
res.writeHead(200, {'Content-type': 'application/json'})
res.write(JSON.stringify(links))
res.end()
}).catch((err) => {
console.log('[Horrible] (Download): An error occurred...\n' + err)
res.writeHead(204, {})
res.end()
})
})
}
exports.getShowsList = (res) => {
const list = horribleApi.getShowsOnly()
res.writeHead(200, {'Content-type': 'application/json'})
res.write(JSON.stringify(list))
res.end()
}