.dockerignore |
ci: dockerize jandapress |
2022-12-11T00:12:14+07:00 | |
.env.schema |
feat: simulating nhentai request on cloudflare enabled (#17) * fix apidocs definitions * add nhentaiStrategy method * add MaybeError types * add simulateCookie to janda class * test case * env example * push release |
2023-02-11T00:17:45+07:00 | |
.eslintignore |
style: add eslintignore for compiled files |
2022-06-07T19:25:44+07:00 | |
.eslintrc.json |
style: add eslint rule |
2022-06-03T09:32:39+07:00 | |
.github |
fix(pururin, modifier): remove sort consume & update elements (#30) * enable deepscan * doesn't accept sorting anymore tho * update element * outdated apidoc definitions * pururin update * pre release |
2023-08-04T19:29:21+07:00 | |
.gitignore |
ci: generate docs from apidoc definitions (#10) * add some complier files to gitignore * feat: add apidoc definitions in each controller * ci: generate docs from apidoc definitions * docs: update readme * ci: update playground workflows * bump marine template |
2022-12-23T10:04:22+07:00 | |
.vscode |
fix(pururin, modifier): remove sort consume & update elements (#30) * enable deepscan * doesn't accept sorting anymore tho * update element * outdated apidoc definitions * pururin update * pre release |
2023-08-04T19:29:21+07:00 | |
CLOSING_REMARKS.md |
docs(CLOSING_REMARKS): add nhentai.to credits (#27) * Update CLOSING_REMARKS.md * Update package.json * Update package.json Co-authored-by: Indrawan I. <bibsindra@gmail.com> --------- Co-authored-by: Indrawan I. <bibsindra@gmail.com> |
2023-05-16T16:16:41+07:00 | |
CODE_OF_CONDUCT.md |
docs: add code of conduct |
2022-06-03T09:36:22+07:00 | |
CONTRIBUTING.md |
docs: minor improvements |
2022-06-04T05:00:18+07:00 | |
Dockerfile |
chore: update docker build |
2022-12-14T02:50:31+07:00 | |
LICENSE |
deps: major dependencies update |
2022-12-11T03:32:01+07:00 | |
README.md |
fix(pururin, modifier): remove sort consume & update elements (#30) * enable deepscan * doesn't accept sorting anymore tho * update element * outdated apidoc definitions * pururin update * pre release |
2023-08-04T19:29:21+07:00 | |
SECURITY.md |
docs: add security policy |
2022-06-03T09:36:46+07:00 | |
package.json |
fix(pururin, modifier): remove sort consume & update elements (#30) * enable deepscan * doesn't accept sorting anymore tho * update element * outdated apidoc definitions * pururin update * pre release |
2023-08-04T19:29:21+07:00 | |
src |
fix(pururin, modifier): remove sort consume & update elements (#30) * enable deepscan * doesn't accept sorting anymore tho * update element * outdated apidoc definitions * pururin update * pre release |
2023-08-04T19:29:21+07:00 | |
test |
fix(pururin, modifier): remove sort consume & update elements (#30) * enable deepscan * doesn't accept sorting anymore tho * update element * outdated apidoc definitions * pururin update * pre release |
2023-08-04T19:29:21+07:00 | |
tsconfig.json |
feat: add nhentai.to support & improve tests (#24) * tdd * remove charset * adjust client * remake options * add reverse proxy * apply endpoint * update docs * add each controllers * add each scraper * pre release |
2023-05-16T15:04:12+07:00 |
Jandapress was named JCE (Janda Cheerio Express) and definitely depends on them.
The motivation of this project is to bring you an actionable data related doujin with gather in mind.
Playground •
Contributing •
Report Issues
You enjoy consume doujin sites to build web applications. There are a lot sites that have effort especially pururin, simply-hentai and etc, not official api available nor public resource that can be used for everyone. Instead making lot of abstraction and enumerating them manually, You can rely on jandapress to make less of pain. The current state is FREE to use, meant all anonymous usage is allowed no aunthentication required and CORS was enabled.
Features availability that Jandapress has
Site | Status | Get | Search | Random |
---|---|---|---|---|
nhentai |
✅ | ✅ | ✅ | |
pururin |
✅ | ✅ | ✅ | |
hentaifox |
✅ | ✅ | ✅ | |
hentai2read |
✅ | ✅ | ❌ | |
simply-hentai |
✅ | ❌ | ❌ | |
asmhentai |
✅ | ✅ | ✅ | |
3hentai |
✅ | ✅ | ✅ | |
nhentai.to |
✅ | ✅ | ✅ |
To handle several requests from each web, You will also need Redis for persistent caching, free tier is available on Redis Labs, You can also choose another provider as we using keyv Key-value storage with support for multiple backends. All data must be stored in <Buffer>
here.
Rename .env.schema
to .env
and fill the value with your own
# railway, fly.dev, heroku, vercel or any free service, NHENTAI_IP_ORIGIN should be true
RAILWAY = sinkaroid
# default port
PORT = 3000
# backend storage, default is redis, if not set it will consume memory storage
REDIS_URL = redis://default:somenicepassword@redis-666.c10.us-east-6-6.ec666.cloud.redislabs.com:1337
# ttl expire cache (in X hour)
EXPIRE_CACHE = 1
# nhentai strategy
# default is true which is assign to request on IP instead of nhentai.net with cloudflare
# if you have instance like vps you need chromium or firefox installed and set it to false
NHENTAI_IP_ORIGIN = true
# you must set COOKIE if NHENTAI_IP_ORIGIN is false, read the jandapress docs
COOKIE = "cf_clearance=l7RsUjiZ3LHAZZKcM7BcCylwD2agwPDU7l9zkg8MzPo-1676044652-0-250"
# you must set USER_AGENT if NHENTAI_IP_ORIGIN is false, read the jandapress docs
USER_AGENT = "jandapress/1.0.5 Node.js/16.9.1"
docker pull ghcr.io/sinkaroid/jandapress:latest
docker run -p 3000:3000 -d ghcr.io/sinkaroid/jandapress:latest
docker run -d \
--name=jandapress \
-p 3000:3000 \
-e REDIS_URL='redis://default:somenicepassword@redis-666.c10.us-east-6-6.ec666.cloud.redislabs.com:1337' \
-e EXPIRE_CACHE='1' \
-e NHENTAI_IP_ORIGIN='false' \
-e COOKIE='cf_clearance=AbcDefGhijY7RYSKv3YeJUjrI5xQ2Uc-666-0-250' \
-e USER_AGENT='jandapress/1.0.5 Node.js/16.9.1' \
ghcr.io/sinkaroid/jandapress:latest
git clone https://github.com/sinkaroid/jandapress.git
npm install / yarn install
npm run start:prod
npm run start:dev
https://nhentai.net was Clouflare protection enabled, for default jandapress use real IP address to bypass the protection, but sometimes even it's from IP address the /api
path return error that means admins or their maintainer don't allow us to request from the IP address.
You will need instance such as VPS and install Chrome or Chromium or Firefox, You have to set NHENTAI_IP_ORIGIN
to false
, set COOKIE
and USER_AGENT
. We'll simulate the request with tough-cookie and http-cookie-agent
NHENTAI_IP_ORIGIN
to false
in .env
filecf_clearance
value and set it to COOKIE
in .env
fileUSER_AGENT
in .env
filenpm run test:cf
The documentation said and correct me if I'm wrong:
This cookie expires after 30 minutes of continuous inactivity by the end user. The cookie contains information related to the calculation of Cloudflare’s proprietary bot score and, when Anomaly Detection is enabled on Bot Management, a session identifier.
└── https://developers.cloudflare.com/fundamentals
You will need to make your cookie is not expired otherwise manual update is required, it can be with set interval or cron job to automate your request.
Jandapress testing
npm run start:prod
npm run start:dev
npm run test
npm run test:cf
npm run build:apidoc
To running other tests, you can see object scripts in file
package.json
https://sinkaroid.github.io/jandapress
These parameter?
: means is optional
/
: index page
The missing piece of nhentai.net - https://sinkaroid.github.io/jandapress/#api-nhentai
/nhentai
: nhentai api
book
key
, ?page
, ?sort
book
The missing piece of pururin.to - https://sinkaroid.github.io/jandapress/#api-pururin
/pururin
: pururin api
book
key
, ?page
The missing piece of hentaifox.com - https://sinkaroid.github.io/jandapress/#api-hentaifox
/hentaifox
: hentaifox api
book
key
, ?page
, ?sort
The missing piece of asmhentai.com - https://sinkaroid.github.io/jandapress/#api-asmhentai
/asmhentai
: asmhentai api
book
key
, ?page
The missing piece of hentai2read.com - https://sinkaroid.github.io/jandapress/#api-hentai2read
/hentai2read
: hentai2read api
book
key
The missing piece of simply-hentai.com - https://sinkaroid.github.io/jandapress/#api-simply-hentai
/simply-hentai
: simply-hentai api
book
The missing piece of 3hentai.net - https://sinkaroid.github.io/jandapress/#api-3hentai
/3hentai
: 3hentai api
book
key
, ?page
, ?sort
The missing piece of nhentai.to - https://sinkaroid.github.io/jandapress/#api-nhentaito
/nhentaito
: nhentaito api
book
key
, ?page
book
"success": true,
or "success": false,
HTTP/1.1 200 OK
HTTP/1.1 400 Bad Request
HTTP/1.1 500 Fail to get data
Q: The website response is slow
That's unfortunate, This repository was opensource already, You can host and deploy Jandapress with your own instance. Any fixes and improvements will updating to this repo.
Q: I dont want to host my own instance
That's unfortunate, Hit the "Sponsor this project" button, any kind of donations will helps me to funding the development.
id_ID
• /jan·da/ — Dewasa dan mengikat; (?)
Seamlessly integrate with the languages you love, simplified the usage, and intelisense definitions on your IDEs
This tool can be freely copied, modified, altered, distributed without any attribution whatsoever. However, if you feel
like this tool deserves an attribution, mention it. It won't hurt anybody.
Licence: WTF.
MIT License Copyright (c) 2022 sinkaroid. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
RESTful and experimental API for nhentai and other doujinshi
1
1
0