hentaifox
Version:
a Unofficial HentaiFox API
81 lines (79 loc) • 2.16 kB
JavaScript
const fetch = require('node-fetch');
const ttc = require('try-to-catch');
const { Color } = require('custom-console-colors');
const {API} = require('./options.json');
const $ = {_get, _e, _tags} = {
_e: function(e) {
e?console.log(Color.red('Error:')+Color.magenta(`${e}`)):''
},
_get: async function(pathname) {
const [e, d] = await ttc(fetch, API + pathname);
_e(e);
return !e ? d.json() : e;
},
Homepage: async function(p) {
const [e, d] = await ttc(_get, p ? `${p==2 ? 'page/' : 'pag/'}${p}` : '/');
_e(e);
return !e ? d : {
status: 500,
message: e
};;
},
TagLists: async function(type, abjad, page) {
const typeList = ['tags','parodies','characters','artists','languanges','categories'];
if(typeList.includes(type)) {
const [e, d] = await ttc(_get, `${type?type:'tags'}/${abjad?abjad+'/':''}pag/${page?page:1}`);
_e(e);
return !e ? d : {
status: 500,
message: e
};
} else {
return {
status: 404,
message: `Tags Type ${type} Not found`
}
}
},
ByTags: async function(type, value, page, popular) {
const typeList = ['tag','parody','character','artist','languange','category'];
if(typeList.includes(type)) {
const [e, d] = await ttc(_get, `${type?type:'tag'}/${value?value+'/':''}${popular?'popular'+'/':''}pag/${page?page:1}`);
_e(e);
return !e ? d : {
status: 500,
message: e
};
} else {
return {
status: 404,
message: `Tags Type ${type} Not found`
}
}
},
Gallery: async function(id) {
if(id) {
const [e, d] = await ttc(_get, `gallery/${id?id:''}`);
_e(e);
return !e ? d : {
status: 500,
message: e
}
} else {
return {
status: 404,
message: `Gallery ID not Found`
}
}
},
Search: async function(query, page, sort) {
const url = `search/?q=${query}${sort?`&sort=${sort}`:''}&page=${page?page:1}`;
const [e, d] = await ttc(_get, url);
_e(e);
return !e ? d : {
status: 500,
message: e
}
}
}
module.exports = $;