nhentai-api-tiffceet-patch
Version:
nHentai Node.JS API client.
312 lines (264 loc) • 17 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>Source: image.js | nhentai-api</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/bootstrap.min.css">
<link type="text/css" rel="stylesheet" href="styles/prettify-jsdoc.css">
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/tui-doc.css">
</head>
<body>
<nav class="lnb" id="lnb">
<div class="logo" style="width: 65px; height: 13px">
<a href="index.html" rel="noopener noreferrer" target="_blank">
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCA1Ij48dGV4dCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjEwMCUiIGZpbGw9IndoaXRlIiB0ZXh0TGVuZ3RoPSIzMCIgZm9udC1zaXplPSI1IiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgc3R5bGU9InRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+bmhlbnRhaS1hcGk8L3RleHQ+PC9zdmc+" width="100%" height="100%">
</a>
</div>
<div class="title">
<h1><a href="index.html" class="link">nhentai-api</a></h1>
<span class="version">v3.0.2</span>
</div>
<div class="search-container" id="search-container">
<input type="text" placeholder="Search">
<ul></ul>
</div>
<div class="lnb-api hidden"><h3>Modules</h3><ul><li><a href="module-API.html">API</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:API_sub"><div class="member-type">Typedef</div><ul class="inner"><li><a href="module-API.html#~APIArgs">APIArgs</a></li></ul></div></li><li><a href="module-Book.html">Book</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Book_sub"><div class="member-type">Typedef</div><ul class="inner"><li><a href="module-Book.html#~BookTitle">BookTitle</a></li></ul></div></li><li><a href="module-Image.html">Image</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Image_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Image.html#~known">known</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-Image.html#~get">get</a></li></ul><div class="member-type">Typedef</div><ul class="inner"><li><a href="module-Image.html#~ImageTypes">ImageTypes</a></li></ul></div></li><li><a href="module-Search.html">Search</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Search_sub"></div></li><li><a href="module-Tag.html">Tag</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Tag_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Tag.html#~known">known</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-Tag.html#~get">get</a></li></ul><div class="member-type">Typedef</div><ul class="inner"><li><a href="module-Tag.html#~TagTypes">TagTypes</a></li></ul></div></li></ul></div><div class="lnb-api hidden"><h3>Classes</h3><ul><li><a href="module-API-API.html">API</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:API~API_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-API-API.html#APIPath">APIPath</a></li><li><a href="module-API-API.html#net">net</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-API-API.html#getAPIArgs">getAPIArgs</a></li><li><a href="module-API-API.html#getBook">getBook</a></li><li><a href="module-API-API.html#getImageURL">getImageURL</a></li><li><a href="module-API-API.html#getThumbURL">getThumbURL</a></li><li><a href="module-API-API.html#request">request</a></li><li><a href="module-API-API.html#search">search</a></li><li><a href="module-API-API.html#searchAlike">searchAlike</a></li><li><a href="module-API-API.html#searchTagged">searchTagged</a></li></ul></div></li><li><a href="module-API-APIPath.html">APIPath</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:API~APIPath_sub"><div class="member-type">Methods</div><ul class="inner"><li><a href="module-API-APIPath.html#.book">book</a></li><li><a href="module-API-APIPath.html#.bookCover">bookCover</a></li><li><a href="module-API-APIPath.html#.bookPage">bookPage</a></li><li><a href="module-API-APIPath.html#.bookThumb">bookThumb</a></li><li><a href="module-API-APIPath.html#.search">search</a></li><li><a href="module-API-APIPath.html#.searchAlike">searchAlike</a></li><li><a href="module-API-APIPath.html#.searchTagged">searchTagged</a></li></ul></div></li><li><a href="module-Book-Book.html">Book</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Book~Book_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Book-Book.html#cover">cover</a></li><li><a href="module-Book-Book.html#favorites">favorites</a></li><li><a href="module-Book-Book.html#id">id</a></li><li><a href="module-Book-Book.html#isKnown">isKnown</a></li><li><a href="module-Book-Book.html#media">media</a></li><li><a href="module-Book-Book.html#pages">pages</a></li><li><a href="module-Book-Book.html#scanlator">scanlator</a></li><li><a href="module-Book-Book.html#tags">tags</a></li><li><a href="module-Book-Book.html#title">title</a></li><li><a href="module-Book-Book.html#Unknown">Unknown</a></li><li><a href="module-Book-Book.html#UnknownBook">UnknownBook</a></li><li><a href="module-Book-Book.html#uploaded">uploaded</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-Book-Book.html#.parse">parse</a></li><li><a href="module-Book-Book.html#hasTag">hasTag</a></li><li><a href="module-Book-Book.html#hasTagWith">hasTagWith</a></li><li><a href="module-Book-Book.html#pushPage">pushPage</a></li><li><a href="module-Book-Book.html#pushTag">pushTag</a></li><li><a href="module-Book-Book.html#setCover">setCover</a></li></ul></div></li><li><a href="module-Book-UnknownBook.html">UnknownBook</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Book~UnknownBook_sub"></div></li><li><a href="module-Image-Image.html">Image</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Image~Image_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Image-Image.html#book">book</a></li><li><a href="module-Image-Image.html#filename">filename</a></li><li><a href="module-Image-Image.html#height">height</a></li><li><a href="module-Image-Image.html#id">id</a></li><li><a href="module-Image-Image.html#isCover">isCover</a></li><li><a href="module-Image-Image.html#type">type</a></li><li><a href="module-Image-Image.html#types">types</a></li><li><a href="module-Image-Image.html#width">width</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-Image-Image.html#.parse">parse</a></li></ul></div></li><li><a href="module-Image-ImageType.html">ImageType</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Image~ImageType_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Image-ImageType.html#extension">extension</a></li><li><a href="module-Image-ImageType.html#isKnown">isKnown</a></li><li><a href="module-Image-ImageType.html#knownTypes">knownTypes</a></li><li><a href="module-Image-ImageType.html#type">type</a></li></ul></div></li><li><a href="module-Image-UnknownImageType.html">UnknownImageType</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Image~UnknownImageType_sub"></div></li><li><a href="module-Search-Search.html">Search</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Search~Search_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Search-Search.html#books">books</a></li><li><a href="module-Search-Search.html#page">page</a></li><li><a href="module-Search-Search.html#pages">pages</a></li><li><a href="module-Search-Search.html#perPage">perPage</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-Search-Search.html#.parse">parse</a></li><li><a href="module-Search-Search.html#pushBook">pushBook</a></li></ul></div></li><li><a href="module-Tag-Tag.html">Tag</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Tag~Tag_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Tag-Tag.html#types">types</a></li></ul><div class="member-type">Methods</div><ul class="inner"><li><a href="module-Tag-Tag.html#.get">get</a></li><li><a href="module-Tag-Tag.html#compare">compare</a></li></ul></div></li><li><a href="module-Tag-TagType.html">TagType</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Tag~TagType_sub"><div class="member-type">Members</div><ul class="inner"><li><a href="module-Tag-TagType.html#isKnown">isKnown</a></li><li><a href="module-Tag-TagType.html#knownTypes">knownTypes</a></li><li><a href="module-Tag-TagType.html#type">type</a></li></ul></div></li><li><a href="module-Tag-UnknownTagType.html">UnknownTagType</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="module:Tag~UnknownTagType_sub"></div></li></ul></div><div class="lnb-api hidden"><h3>Global</h3><ul><li class="hidden"><a href="global.html#APIBook">APIBook</a></li><li class="hidden"><a href="global.html#APIImage">APIImage</a></li><li class="hidden"><a href="global.html#APISearch">APISearch</a></li><li class="hidden"><a href="global.html#APITag">APITag</a></li><li class="hidden"><a href="global.html#httpAgent">httpAgent</a></li><li class="hidden"><a href="global.html#nHentaiHosts">nHentaiHosts</a></li><li class="hidden"><a href="global.html#nHentaiOptions">nHentaiOptions</a></li><li><a href="global.html#processOptions">processOptions</a></li></ul></div>
</nav>
<div id="resizer"></div>
<div class="main" id="main">
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* @module Image
*/
import Book from './book';
/**
* Image object from API.
* @global
* @typedef {object} APIImage
* @property {string} t Image type.
* @property {number|string} w Image width.
* @property {number|string} h Image height.
*/
/**
* @typedef {object} ImageTypes
* @property {TagType} JPEG JPEG image type.
* @property {TagType} PNG PNG image type.
*/
/**
* Class representing image type.
* @class
*/
class ImageType {
/**
* @type {ImageTypes}
* @static
*/
static knownTypes = {};
/**
* Image type name.
* @type {?string}
*/
type = null;
/**
* Image type extension.
* @type {?string}
*/
extension = null;
/**
* Create image type.
* @param {string} type Image type name.
* @param {string} extension Image type extension.
*/
constructor(type, extension) {
if (type) {
this.type = type;
this.constructor.knownTypes[type] = this;
}
this.extension = extension;
}
/**
* Whatever this tag type is unknown.
* @type {boolean}
*/
get isKnown() {
return !(this instanceof UnknownImageType);
}
}
/**
* Class representing unknown image type.
* @class
* @extends ImageType
*/
class UnknownImageType extends ImageType {
/**
* Create unknown image type.
* @param {string} type Unknown image type name.
* @param {string} extension Unknown image type extension.
*/
constructor(type, extension) {
super(null, extension);
this.type = type;
}
}
/**
* Class representing image.
* @class
*/
class Image {
/**
* Image types.
* @type {ImageTypes}
* @static
*/
static types = {
JPEG: new ImageType('jpeg', 'jpg'),
PNG : new ImageType('png', 'png'),
/**
* Known image types.
* @type {ImageType}
*/
known: ImageType.knownTypes,
/**
* Get image type class instance by name.
* @param {string} type Image type.
* @returns {ImageType|UnknownImageType} Image type class instance.
*/
get(type) {
let known;
if ('string' === typeof type) {
type = type.toLowerCase();
switch (type) {
case 'j':
case 'jpg':
case 'jpeg':
type = 'jpeg';
break;
case 'p':
case 'png':
type = 'png';
break;
}
}
return ((known = this.known[type])) ? known : new UnknownImageType(type);
},
};
/**
* Parse pure image object from API into class instance.
* @param {APIImage} image Image object
* @param {number} [id=0] Image id (a.k.a. page number).
* @returns {Image} Image instance.
* @static
*/
static parse(image, id = 0) {
let {
t: type,
w: width,
h: height,
} = image;
return new this({
type,
width : +width,
height: +height,
id,
});
}
/**
* Image ID.
* @type {number}
*/
id = 0;
/**
* Image width.
* @type {number}
*/
width = 0;
/**
* Image height.
* @type {number}
*/
height = 0;
/**
* Image type.
* @type {ImageType}
*/
type = this.constructor.types.JPEG;
/**
* Image parent book.
* @type {Book}
*/
book = Book.Unknown;
/**
* Create image.
* @param {object} [params] Image parameters.
* @param {number} [params.id=0] Image ID.
* @param {number} [params.width=0] Image width.
* @param {number} [params.height=0] Image height.
* @param {string|ImageType} [params.type=ImageTypes.JPEG] Image type.
* @param {Book} [params.book=Book.Unknown] Image's Book.
*/
constructor({
id = 0,
width = 0,
height = 0,
type = this.constructor.types.JPEG,
book = Book.Unknown,
} = {}) {
Object.assign(this, {
id: 'number' === typeof id
? id < 1 ? 0 : id
: 0,
width,
height,
type: type instanceof ImageType
? type
: this.constructor.types.get(type),
book: book instanceof Book
? book
: Book.Unknown,
});
}
/**
* Whatever this image is book cover.
* @type {boolean}
*/
get isCover() {
return this.id < 1;
}
/**
* Image filename.
* @type {string}
*/
get filename() {
return `${this.isCover ? 'cover' : this.id}.${this.type.extension}`;
}
}
export default Image;
</code></pre>
</article>
</section>
</div>
<footer>
<img class="logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCA1Ij48dGV4dCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjEwMCUiIGZpbGw9IndoaXRlIiB0ZXh0TGVuZ3RoPSIzMCIgZm9udC1zaXplPSI1IiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgc3R5bGU9InRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+bmhlbnRhaS1hcGk8L3RleHQ+PC9zdmc+" style="width: 65px; height: 13px">
<div class="footer-text">nhentai-api</div>
</footer>
<script>prettyPrint();</script>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/tui-doc.js"></script>
<script src="scripts/linenumber.js"></script>
<script>
var id = '_sub'.replace(/"/g, '_');
var selectedApi = document.getElementById(id); // do not use jquery selector
var $selectedApi = $(selectedApi);
$selectedApi.removeClass('hidden');
$selectedApi.parent().find('.glyphicon').removeClass('glyphicon-plus').addClass('glyphicon-minus');
showLnbApi();
</script>
</body>
</html>