Skip to content

Commit

Permalink
Merge pull request #160 from reinhello/cf-bypass
Browse files Browse the repository at this point in the history
Bypass Cloudflare DDoS protection
  • Loading branch information
reinacchi authored Aug 13, 2023
2 parents 4c5029a + 23c25b1 commit 5cf02e5
Show file tree
Hide file tree
Showing 14 changed files with 844 additions and 657 deletions.
22 changes: 16 additions & 6 deletions framework/lib/Client.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { APIStats } from "./Utils/APIStats";
import { API } from "nhentai-api";
import { Client, ClientEvents } from "oceanic.js";
import { CookieJar } from "tough-cookie";
import { Collection } from "./Utils";
import { ICommand, IConfig, IEvent, IGuildSchemaSettings } from "./Interfaces";
import { TLocale, TranslationKey } from "./Types";
import { connect } from "mongoose";
import { GuildModel } from "./Models";
import { Logger } from "./Utils/Logger";
import { RequestHandler } from "./API";
import { StatsManager } from "./Modules/StatsManager";
import { join } from "path";
import { readdirSync } from "fs";
Expand All @@ -17,13 +18,9 @@ import localeID from "./Locales/id.json";
import localeJA from "./Locales/ja.json";
import localeZH from "./Locales/zh.json";
import localeEO from "./Locales/eo.json";
import { HttpsCookieAgent } from "http-cookie-agent/http";

export class NReaderClient extends Client {
/**
* NHentai API
*/
public api = new RequestHandler();

/**
* BotList API Stats
*/
Expand Down Expand Up @@ -54,6 +51,19 @@ export class NReaderClient extends Client {
*/
public stats = new StatsManager(this);

/**
* NHentai API
*/
public get api() {
const jar = new CookieJar();
const agent = new HttpsCookieAgent({ cookies: { jar } });

jar.setCookie(this.config.API.COOKIE, "https://nhentai.net");

/* @ts-ignore */
return new API({ agent });
}

/**
* Initialise every handler for NReader
*/
Expand Down
14 changes: 8 additions & 6 deletions framework/lib/Commands/Modules/BookmarkCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
TextChannel,
} from "oceanic.js";
import { ComponentBuilder, EmbedBuilder } from "@oceanicjs/builders";
import { Gallery } from "../../API";
import { Book } from "nhentai-api";
import { UserModel } from "../../Models";
import { createBookmarkPaginator } from "../../Modules/BookmarkPaginator";
import { setTimeout } from "node:timers/promises";
Expand Down Expand Up @@ -72,28 +72,30 @@ export async function bookmarkCommand(
await setTimeout(2000);

const bookmarkedTitle: string[] = [];
const galleries: Gallery[] = [];
const galleries: Book[] = [];

for (let i = 0; i < bookmarked.length; i++) {
let title: string;
let gallery: Gallery;
let gallery: Book;

try {
title = await client.api
.getGallery(bookmarked[i])
.getBook(parseInt(bookmarked[i]))
.then(
(gallery) =>
`\`⬛ ${
(i + 1).toString().length > 1
? `${i + 1}`
: `${i + 1} `
}\` - [\`${gallery.id}\`](${gallery.url}) - \`${
}\` - [\`${gallery.id}\`](https://nhentai.net/g/${
gallery.id
}) - \`${
gallery.title.pretty.length >= 30
? `${gallery.title.pretty.slice(0, 30)}...`
: gallery.title.pretty
}\``
);
gallery = await client.api.getGallery(bookmarked[i]);
gallery = await client.api.getBook(parseInt(bookmarked[i]));
} catch (err) {
const embed = new EmbedBuilder()
.setColor(client.config.BOT.COLOUR)
Expand Down
4 changes: 3 additions & 1 deletion framework/lib/Commands/Modules/ProfileCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ export async function profileCommand(
true
)
.setThumbnail(user.avatarURL())
.setTitle(client.translate("general.profile.title", { user: user.tag }))
.setTitle(
client.translate("general.profile.title", { user: user.username })
)
.toJSON();

return interaction.createMessage({
Expand Down
26 changes: 14 additions & 12 deletions framework/lib/Commands/Modules/ReadCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,33 @@ export async function readCommand(
await setTimeout(2000);

client.api
.getGallery(galleryID)
.getBook(parseInt(galleryID))
.then(async (gallery) => {
const artistTags: string[] = gallery.tags.artists.map(
const artistTags: string[] = gallery.artists.map((tag) => tag.name);
const characterTags: string[] = gallery.characters.map(
(tag) => tag.name
);
const characterTags: string[] = gallery.tags.characters.map(
(tag) => tag.name
);
const contentTags: string[] = gallery.tags.tags.map(
const contentTags: string[] = gallery.pureTags.map(
(tag) => `${tag.name} (${tag.count.toLocaleString()})`
);
const languageTags: string[] = gallery.tags.languages.map(
const languageTags: string[] = gallery.languages.map(
(tag) => tag.name.charAt(0).toUpperCase() + tag.name.slice(1)
);
const parodyTags: string[] = gallery.tags.parodies.map(
const parodyTags: string[] = gallery.parodies.map(
(tag) => tag.name
);
const uploadedAt = `<t:${gallery.uploadDate.getTime() / 1000}:F>`;
const uploadedAt = `<t:${gallery.uploaded.getTime() / 1000}:F>`;
const stringTag =
contentTags.join("`, `").length >= 1024
? `${contentTags.join("`, `").slice(0, 1010)}...`
: contentTags.join("`, `");

const embed = new EmbedBuilder()
.setAuthor(gallery.id, undefined, gallery.url)
.setAuthor(
gallery.id.toString(),
undefined,
`https://nhentai.net/g/${gallery.id}`
)
.setColor(client.config.BOT.COLOUR)
.addField(
client.translate("main.title"),
Expand Down Expand Up @@ -119,8 +121,8 @@ export async function readCommand(
: client.translate("main.none")
}\``
)
.setFooter(`⭐ ${gallery.favourites.toLocaleString()}`)
.setThumbnail(gallery.cover.url);
.setFooter(`⭐ ${gallery.favorites.toLocaleString()}`)
.setThumbnail(client.api.getImageURL(gallery.cover));

const components = new ComponentBuilder<MessageActionRow>()
.addInteractionButton(
Expand Down
12 changes: 7 additions & 5 deletions framework/lib/Commands/Modules/SearchCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ export async function searchCommand(
await setTimeout(2000);

client.api
.searchGalleries(encodeURIComponent(query), page || 1, sort || "")
.search(encodeURIComponent(query), page || 1, sort || "")
.then(async (search) => {
if (search.result.length === 0) {
if (search.books.length === 0) {
const embed = new EmbedBuilder()
.setColor(client.config.BOT.COLOUR)
.setDescription(
Expand All @@ -47,13 +47,15 @@ export async function searchCommand(
});
}

const title = search.result.map(
const title = search.books.map(
(gallery, index) =>
`\`⬛ ${
(index + 1).toString().length > 1
? `${index + 1}`
: `${index + 1} `
}\` - [\`${gallery.id}\`](${gallery.url}) - \`${
}\` - [\`${gallery.id}\`](https://nhentai.net/g/${
gallery.id
}) - \`${
gallery.title.pretty.length >= 30
? `${gallery.title.pretty.slice(0, 30)}...`
: gallery.title.pretty
Expand All @@ -66,7 +68,7 @@ export async function searchCommand(
.setTitle(
client.translate("main.page", {
firstIndex: search.page,
lastIndex: search.numPages.toLocaleString(),
lastIndex: search.pages.toLocaleString(),
})
);

Expand Down
12 changes: 7 additions & 5 deletions framework/lib/Commands/Modules/SearchSimilarCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ export async function searchSimilarCommand(
await setTimeout(2000);

client.api
.getGalleryRelated(galleryID)
.searchAlike(parseInt(galleryID))
.then(async (search) => {
if (search.result.length === 0) {
if (search.books.length === 0) {
const embed = new EmbedBuilder()
.setColor(client.config.BOT.COLOUR)
.setDescription(client.translate("main.search.empty"));
Expand All @@ -44,13 +44,15 @@ export async function searchSimilarCommand(
});
}

const title = search.result.map(
const title = search.books.map(
(gallery, index) =>
`\`⬛ ${
(index + 1).toString().length > 1
? `${index + 1}`
: `${index + 1} `
}\` - [\`${gallery.id}\`](${gallery.url}) - \`${
}\` - [\`${gallery.id}\`](https://nhentai.net/g/${
gallery.id
}) - \`${
gallery.title.pretty.length >= 30
? `${gallery.title.pretty.slice(0, 30)}...`
: gallery.title.pretty
Expand All @@ -63,7 +65,7 @@ export async function searchSimilarCommand(
.setTitle(
client.translate("main.page", {
firstIndex: search.page,
lastIndex: search.numPages.toLocaleString(),
lastIndex: search.pages.toLocaleString(),
})
);

Expand Down
1 change: 1 addition & 0 deletions framework/lib/Interfaces/IConfig.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export interface IConfigAPI {
COOKIE: string;
RESTRICTED_TAGS: string[];
TEMPORARY_PREMIUM: boolean;
}
Expand Down
Loading

0 comments on commit 5cf02e5

Please sign in to comment.