From 56573802f9d4e44dd41ae2f6c5465e7382ce07d1 Mon Sep 17 00:00:00 2001 From: Andrii Rodzyk Date: Tue, 13 Aug 2024 13:25:07 +0300 Subject: [PATCH 1/3] feat: Nhentai --- src/app/app-routing.module.ts | 5 +++ .../link-parser/link-parser.component.ts | 4 +- src/app/link-parser/utils/index.ts | 3 +- .../link-parser/utils/nhentai-link-parser.ts | 6 +++ .../list/list-shell/list-shell.component.ts | 3 +- .../nhentai/data-access/nhentai.service.ts | 41 +++++++++++++++++++ src/app/nhentai/nhentai-routing.module.ts | 17 ++++++++ .../nhentai-shell.component.html | 8 ++++ .../nhentai-shell.component.scss | 0 .../nhentai-shell/nhentai-shell.component.ts | 39 ++++++++++++++++++ src/app/nhentai/nhentai.module.ts | 19 +++++++++ .../shared/ui/viewer/viewer.component.html | 2 +- src/app/zenko/data-access/zenko.service.ts | 4 +- src/environments/environment.development.ts | 3 +- src/environments/environment.ts | 3 +- 15 files changed, 149 insertions(+), 8 deletions(-) create mode 100644 src/app/link-parser/utils/nhentai-link-parser.ts create mode 100644 src/app/nhentai/data-access/nhentai.service.ts create mode 100644 src/app/nhentai/nhentai-routing.module.ts create mode 100644 src/app/nhentai/nhentai-shell/nhentai-shell.component.html create mode 100644 src/app/nhentai/nhentai-shell/nhentai-shell.component.scss create mode 100644 src/app/nhentai/nhentai-shell/nhentai-shell.component.ts create mode 100644 src/app/nhentai/nhentai.module.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 26f8199..6c0878a 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -24,6 +24,7 @@ export const REDDIT_PATH = `reddit`; export const READ_PATH = `read`; export const LIST_PATH = `list`; export const ZENKO_PATH = `zenko`; +export const NHENTAI_PATH = `nhentai`; const routes: Routes = [ { @@ -58,6 +59,10 @@ const routes: Routes = [ path: ZENKO_PATH, loadChildren: () => import('./zenko/zenko.module').then(m => m.ZenkoModule) }, + { + path: NHENTAI_PATH, + loadChildren: () => import('./nhentai/nhentai.module').then(m => m.NhentaiModule) + }, { matcher: urlMatcher, loadChildren: () => import('./link-parser/link-parser.module').then(m => m.LinkParserModule) diff --git a/src/app/link-parser/link-parser/link-parser.component.ts b/src/app/link-parser/link-parser/link-parser.component.ts index 2d44e7e..6eb69ac 100644 --- a/src/app/link-parser/link-parser/link-parser.component.ts +++ b/src/app/link-parser/link-parser/link-parser.component.ts @@ -1,6 +1,6 @@ import { Component, Signal, ViewChild, WritableSignal, computed, effect, inject, signal } from '@angular/core'; import { LinkParserService } from '../data-access/link-parser.service'; -import {ZenkoLinkParser, ImgurLinkParser, JsonLinkParser, MangadexLinkParser, RedditLinkParser, TelegraphLinkParser } from '../utils'; +import {ZenkoLinkParser, ImgurLinkParser, JsonLinkParser, MangadexLinkParser, RedditLinkParser, TelegraphLinkParser, NhentaiLinkParser } from '../utils'; import { ActivatedRoute, Router } from '@angular/router'; import { LangService } from '../../shared/data-access/lang.service'; import { Base64 } from '../../shared/utils'; @@ -46,6 +46,7 @@ export class LinkParserComponent { this.parser.parsers.push(new TelegraphLinkParser) this.parser.parsers.push(new RedditLinkParser) this.parser.parsers.push(new ZenkoLinkParser) + this.parser.parsers.push(new NhentaiLinkParser) this.parser.parsers.push(new JsonLinkParser) } @@ -114,6 +115,7 @@ export class LinkParserComponent { imgur: '//imgur.com/favicon.ico', mangadex: '//mangadex.org/favicon.ico', telegraph: '//telegra.ph/favicon.ico', + nhentai: '//nhentai.net/favicon.ico', read: 'data:image/svg+xml,🗯️' } diff --git a/src/app/link-parser/utils/index.ts b/src/app/link-parser/utils/index.ts index 13d4f8a..fdafec3 100644 --- a/src/app/link-parser/utils/index.ts +++ b/src/app/link-parser/utils/index.ts @@ -4,4 +4,5 @@ export * from './mangadex-link-parser'; export * from './json-link-parser'; export * from './telegraph-link-parser'; export * from './reddit-link-parser'; -export * from './zenko-link-parser'; \ No newline at end of file +export * from './zenko-link-parser'; +export * from './nhentai-link-parser' \ No newline at end of file diff --git a/src/app/link-parser/utils/nhentai-link-parser.ts b/src/app/link-parser/utils/nhentai-link-parser.ts new file mode 100644 index 0000000..89f298d --- /dev/null +++ b/src/app/link-parser/utils/nhentai-link-parser.ts @@ -0,0 +1,6 @@ +import { LinkParser } from "./link-parser"; + +export class NhentaiLinkParser extends LinkParser { + override regex = /nhentai\.(?:net|to)\/g\/(\d+)/; + override site = 'nhentai'; +}; diff --git a/src/app/list/list-shell/list-shell.component.ts b/src/app/list/list-shell/list-shell.component.ts index 95dfebd..02b67b1 100644 --- a/src/app/list/list-shell/list-shell.component.ts +++ b/src/app/list/list-shell/list-shell.component.ts @@ -1,6 +1,6 @@ import { Component, EffectCleanupRegisterFn, WritableSignal, computed, effect, inject, signal } from '@angular/core'; import { LinkParserService } from '../../link-parser/data-access/link-parser.service'; -import { ImgurLinkParser, JsonLinkParser, LinkParser, MangadexLinkParser, RedditLinkParser, TelegraphLinkParser, ZenkoLinkParser } from '../../link-parser/utils'; +import { ImgurLinkParser, JsonLinkParser, LinkParser, MangadexLinkParser, NhentaiLinkParser, RedditLinkParser, TelegraphLinkParser, ZenkoLinkParser } from '../../link-parser/utils'; import { DomManipulationService } from '../../shared/data-access'; import { LangService } from '../../shared/data-access/lang.service'; @@ -86,6 +86,7 @@ export class ListShellComponent { this.parser.parsers.push(new TelegraphLinkParser) this.parser.parsers.push(new RedditLinkParser) this.parser.parsers.push(new ZenkoLinkParser) + this.parser.parsers.push(new NhentaiLinkParser) this.parser.parsers.push(new JsonLinkParser) } diff --git a/src/app/nhentai/data-access/nhentai.service.ts b/src/app/nhentai/data-access/nhentai.service.ts new file mode 100644 index 0000000..f26ab8b --- /dev/null +++ b/src/app/nhentai/data-access/nhentai.service.ts @@ -0,0 +1,41 @@ +import { HttpClient } from '@angular/common/http'; +import { inject, Injectable } from '@angular/core'; +import { Observable, map } from 'rxjs'; +import { environment } from '../../../environments/environment'; +import { CompositionEpisode } from '../../common/common-read'; +import { Base64 } from '../../shared/utils'; + +@Injectable({ + providedIn: 'root' +}) +export class NhentaiService { + http: HttpClient = inject(HttpClient) + + getComposition(id: string): Observable { + return this.http.get(environment.proxy + Base64.toBase64(environment.nhentaiHost + id)) + .pipe(map((data) => { return this.map(data) })) + } + + imageType = new Map().set('p', 'png').set('j', 'jpg').set('g', 'gif') + + map(data: any): CompositionEpisode { + const mediaId = data.media_id; + const mappedResponse = { + title: data.title.pretty, + nsfw: true, + images: (data.images.pages.map((item: any, index: number) => { + return { + src: `https://i7.nhentai.net/galleries/${mediaId}/${index + 1}.${this.imageType.get(item.t)}`, + height: item.h, + width: item.w + }; + })).filter((i: any) => i.src) + .map((img: any) => { + return { src: environment.proxy + Base64.toBase64(`${img.src}`) } + }) + + }; + + return mappedResponse; + } +} diff --git a/src/app/nhentai/nhentai-routing.module.ts b/src/app/nhentai/nhentai-routing.module.ts new file mode 100644 index 0000000..27a06e5 --- /dev/null +++ b/src/app/nhentai/nhentai-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { NhentaiShellComponent } from './nhentai-shell/nhentai-shell.component'; + +const routes: Routes = [ + { path: '', redirectTo: '/', pathMatch: 'full' }, + { + path: ':id', + component: NhentaiShellComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class NhentaiRoutingModule { } diff --git a/src/app/nhentai/nhentai-shell/nhentai-shell.component.html b/src/app/nhentai/nhentai-shell/nhentai-shell.component.html new file mode 100644 index 0000000..9df5e92 --- /dev/null +++ b/src/app/nhentai/nhentai-shell/nhentai-shell.component.html @@ -0,0 +1,8 @@ + + +

{{lang.ph().imagesVia}}Zenko + API. + {{lang.ph().thanks}}
{{lang.ph().detalisCopy}}

+ +
\ No newline at end of file diff --git a/src/app/nhentai/nhentai-shell/nhentai-shell.component.scss b/src/app/nhentai/nhentai-shell/nhentai-shell.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/nhentai/nhentai-shell/nhentai-shell.component.ts b/src/app/nhentai/nhentai-shell/nhentai-shell.component.ts new file mode 100644 index 0000000..f7c29b3 --- /dev/null +++ b/src/app/nhentai/nhentai-shell/nhentai-shell.component.ts @@ -0,0 +1,39 @@ +import { Component, inject, OnDestroy } from '@angular/core'; +import { NhentaiService } from '../data-access/nhentai.service'; +import { switchMap, of } from 'rxjs'; +import { NHENTAI_PATH } from '../../app-routing.module'; +import { Base64 } from '../../shared/utils'; +import { ReadBaseComponent } from '../../common/common-read'; + +@Component({ + selector: 'app-nhentai-shell', + templateUrl: './nhentai-shell.component.html', + styleUrl: './nhentai-shell.component.scss' +}) +export class NhentaiShellComponent extends ReadBaseComponent implements OnDestroy { + nhentai = inject(NhentaiService) + + override episode$ = this.combineParamMapAndRefresh() + .pipe(this.tapStartLoading(), + switchMap(([params]) => { + const pathParam = params?.get('id'); + + if (!pathParam) return of(null); + + const path = (Base64.isBase64(pathParam)) ? Base64.fromBase64(pathParam) : pathParam; + + return (this.nhentai.getComposition(path)).pipe(this.catchError(), this.tapSetTitle(), + this.tapSaveToHistory(NHENTAI_PATH, path), + this.tapSaveToCurrentPlaylistItem(NHENTAI_PATH, path), + this.finalizeLoading()); + }) + ); + + constructor() { + super() + } + + ngOnDestroy(): void { + this.plObserv?.unsubscribe(); + } +} diff --git a/src/app/nhentai/nhentai.module.ts b/src/app/nhentai/nhentai.module.ts new file mode 100644 index 0000000..d4c7d15 --- /dev/null +++ b/src/app/nhentai/nhentai.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { NhentaiRoutingModule } from './nhentai-routing.module'; +import { NhentaiShellComponent } from './nhentai-shell/nhentai-shell.component'; +import { CommonReadModule } from '../common/common-read'; + + +@NgModule({ + declarations: [ + NhentaiShellComponent + ], + imports: [ + CommonModule, + NhentaiRoutingModule, + CommonReadModule + ] +}) +export class NhentaiModule { } diff --git a/src/app/shared/ui/viewer/viewer.component.html b/src/app/shared/ui/viewer/viewer.component.html index 0793012..2842308 100644 --- a/src/app/shared/ui/viewer/viewer.component.html +++ b/src/app/shared/ui/viewer/viewer.component.html @@ -29,7 +29,7 @@ [labelDisagree]="lang.ph().nsfwLabelDisagree" /> }
-
diff --git a/src/app/zenko/data-access/zenko.service.ts b/src/app/zenko/data-access/zenko.service.ts index 5f0d3ea..0eae702 100644 --- a/src/app/zenko/data-access/zenko.service.ts +++ b/src/app/zenko/data-access/zenko.service.ts @@ -22,11 +22,11 @@ export class ZenkoService { publisher: { id: data.publisher.id as string, - site: data.publisher.id as string, + site: `https://zenko.online/teams/`+data.publisher.id as string, name: data.publisher.name as string, avatar: environment.proxy + Base64.toBase64(`https://zenko.b-cdn.net/${data.publisher.avatar}?optimizer=image&width=900&quality=90&height=auto`) as string, description: data.publisher.description as string, - links: data.publisher.links.map((l: any) => { return { link: l.link, title: l.title }; }) + links: data.publisher.links?.map((l: any) => { return { link: l.link, title: l.title }; }) } as unknown as CompositionPublisher, images: (data.pages.map((item: any) => { diff --git a/src/environments/environment.development.ts b/src/environments/environment.development.ts index e4a4581..c104b9a 100644 --- a/src/environments/environment.development.ts +++ b/src/environments/environment.development.ts @@ -8,5 +8,6 @@ export const environment = { mangadexManga: `${PROXY}https://api.mangadex.org/manga/`, telegraphHost: `https://api.telegra.ph/getPage/`, redditHost: `https://www.reddit.com/r/all/comments/`, - zenkoHost: `https://zenko-api.onrender.com/chapters/` + zenkoHost: `https://zenko-api.onrender.com/chapters/`, + nhentaiHost: `https://nhentai.net/api/gallery/` }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 109c975..f1bd205 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -7,5 +7,6 @@ export const environment = { mangadexManga: `${PROXY}https://api.mangadex.org/manga/`, telegraphHost: `https://api.telegra.ph/getPage/`, redditHost: `https://www.reddit.com/r/all/comments/`, - zenkoHost: `https://zenko-api.onrender.com/chapters/` + zenkoHost: `https://zenko-api.onrender.com/chapters/`, + nhentaiHost: `https://nhentai.net/api/gallery/` }; From 711146312243362bc0c2b5acfc9ef7d18420afca Mon Sep 17 00:00:00 2001 From: Andrii Rodzyk Date: Tue, 13 Aug 2024 15:07:43 +0300 Subject: [PATCH 2/3] feat: Comick --- src/app/app-routing.module.ts | 5 +++ src/app/comick/comick-routing.module.ts | 17 ++++++++ .../comick-shell/comick-shell.component.html | 8 ++++ .../comick-shell/comick-shell.component.scss | 0 .../comick-shell/comick-shell.component.ts | 39 +++++++++++++++++ src/app/comick/comick.module.ts | 19 +++++++++ src/app/comick/data-access/comick.service.ts | 42 +++++++++++++++++++ .../link-parser/link-parser.component.ts | 3 ++ .../link-parser/utils/comick-link-parser.ts | 6 +++ .../list/list-shell/list-shell.component.ts | 2 + .../nhentai-shell.component.html | 2 +- src/environments/environment.development.ts | 3 +- src/environments/environment.ts | 3 +- 13 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 src/app/comick/comick-routing.module.ts create mode 100644 src/app/comick/comick-shell/comick-shell.component.html create mode 100644 src/app/comick/comick-shell/comick-shell.component.scss create mode 100644 src/app/comick/comick-shell/comick-shell.component.ts create mode 100644 src/app/comick/comick.module.ts create mode 100644 src/app/comick/data-access/comick.service.ts create mode 100644 src/app/link-parser/utils/comick-link-parser.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 6c0878a..b5a5139 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -25,6 +25,7 @@ export const READ_PATH = `read`; export const LIST_PATH = `list`; export const ZENKO_PATH = `zenko`; export const NHENTAI_PATH = `nhentai`; +export const COMICK_PATH = `comick`; const routes: Routes = [ { @@ -63,6 +64,10 @@ const routes: Routes = [ path: NHENTAI_PATH, loadChildren: () => import('./nhentai/nhentai.module').then(m => m.NhentaiModule) }, + { + path: COMICK_PATH, + loadChildren: () => import('./comick/comick.module').then(m => m.ComickModule) + }, { matcher: urlMatcher, loadChildren: () => import('./link-parser/link-parser.module').then(m => m.LinkParserModule) diff --git a/src/app/comick/comick-routing.module.ts b/src/app/comick/comick-routing.module.ts new file mode 100644 index 0000000..60e9e5f --- /dev/null +++ b/src/app/comick/comick-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { ComickShellComponent } from './comick-shell/comick-shell.component'; + +const routes: Routes = [ + { path: '', redirectTo: '/', pathMatch: 'full' }, + { + path: ':id', + component: ComickShellComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class ComickRoutingModule { } diff --git a/src/app/comick/comick-shell/comick-shell.component.html b/src/app/comick/comick-shell/comick-shell.component.html new file mode 100644 index 0000000..6082506 --- /dev/null +++ b/src/app/comick/comick-shell/comick-shell.component.html @@ -0,0 +1,8 @@ + + +

{{lang.ph().imagesVia}}Nhentai + API. + {{lang.ph().thanks}}
{{lang.ph().detalisCopy}}

+ +
\ No newline at end of file diff --git a/src/app/comick/comick-shell/comick-shell.component.scss b/src/app/comick/comick-shell/comick-shell.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/comick/comick-shell/comick-shell.component.ts b/src/app/comick/comick-shell/comick-shell.component.ts new file mode 100644 index 0000000..f337ac5 --- /dev/null +++ b/src/app/comick/comick-shell/comick-shell.component.ts @@ -0,0 +1,39 @@ +import { Component, inject, OnDestroy } from '@angular/core'; +import { ComickService } from '../data-access/comick.service'; +import { switchMap, of } from 'rxjs'; +import { ReadBaseComponent } from '../../common/common-read'; +import { Base64 } from '../../shared/utils'; +import { COMICK_PATH } from '../../app-routing.module'; + +@Component({ + selector: 'app-comick-shell', + templateUrl: './comick-shell.component.html', + styleUrl: './comick-shell.component.scss' +}) +export class ComickShellComponent extends ReadBaseComponent implements OnDestroy { + comick = inject(ComickService) + + override episode$ = this.combineParamMapAndRefresh() + .pipe(this.tapStartLoading(), + switchMap(([params]) => { + const pathParam = params?.get('id'); + + if (!pathParam) return of(null); + + const path = (Base64.isBase64(pathParam)) ? Base64.fromBase64(pathParam) : pathParam; + + return (this.comick.getComposition(path)).pipe(this.catchError(), this.tapSetTitle(), + this.tapSaveToHistory(COMICK_PATH, path), + this.tapSaveToCurrentPlaylistItem(COMICK_PATH, path), + this.finalizeLoading()); + }) + ); + + constructor() { + super() + } + + ngOnDestroy(): void { + this.plObserv?.unsubscribe(); + } +} diff --git a/src/app/comick/comick.module.ts b/src/app/comick/comick.module.ts new file mode 100644 index 0000000..6b0d441 --- /dev/null +++ b/src/app/comick/comick.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { ComickRoutingModule } from './comick-routing.module'; +import { ComickShellComponent } from './comick-shell/comick-shell.component'; +import { CommonReadModule } from '../common/common-read'; + + +@NgModule({ + declarations: [ + ComickShellComponent + ], + imports: [ + CommonModule, + ComickRoutingModule, + CommonReadModule + ] +}) +export class ComickModule { } diff --git a/src/app/comick/data-access/comick.service.ts b/src/app/comick/data-access/comick.service.ts new file mode 100644 index 0000000..d80f249 --- /dev/null +++ b/src/app/comick/data-access/comick.service.ts @@ -0,0 +1,42 @@ +import { HttpClient } from '@angular/common/http'; +import { inject, Injectable } from '@angular/core'; +import { Observable, map } from 'rxjs'; +import { environment } from '../../../environments/environment'; +import { CompositionEpisode } from '../../common/common-read'; +import { Base64 } from '../../shared/utils'; + +@Injectable({ + providedIn: 'root' +}) +export class ComickService { + http: HttpClient = inject(HttpClient) + + getComposition(id: string): Observable { + // environment.proxy + Base64.toBase64 + return this.http.get((environment.comickHost + id)) + .pipe(map((data) => { return this.map(data) })) + } + + map(data: any): CompositionEpisode { + const nsfw = data.matureContent; + const mappedResponse = { + title: data.chapTitle, + nsfw: nsfw, //['erotica', 'suggestive'].includes(data.chapter.md_comics.content_rating), + images: (data.chapter.md_images.map((item: any, index: number) => { + return { + src: `https://meo3.comick.pictures/${item.b2key}`, + height: item.h, + width: item.w + }; + })).filter((i: any) => i.src) + // .map((img: any) => { + // return { + // src: environment.proxy + Base64.toBase64(`${img.src}`) + // } + // }) + + }; + + return mappedResponse; + } +} diff --git a/src/app/link-parser/link-parser/link-parser.component.ts b/src/app/link-parser/link-parser/link-parser.component.ts index 6eb69ac..5d7f1f6 100644 --- a/src/app/link-parser/link-parser/link-parser.component.ts +++ b/src/app/link-parser/link-parser/link-parser.component.ts @@ -6,6 +6,7 @@ import { LangService } from '../../shared/data-access/lang.service'; import { Base64 } from '../../shared/utils'; import { Title } from '@angular/platform-browser'; import { LinkParserSettingsService } from '../data-access/link-parser-settings.service'; +import { ComickLinkParser } from '../utils/comick-link-parser'; @Component({ selector: 'app-link-parser', @@ -47,6 +48,7 @@ export class LinkParserComponent { this.parser.parsers.push(new RedditLinkParser) this.parser.parsers.push(new ZenkoLinkParser) this.parser.parsers.push(new NhentaiLinkParser) + this.parser.parsers.push(new ComickLinkParser) this.parser.parsers.push(new JsonLinkParser) } @@ -116,6 +118,7 @@ export class LinkParserComponent { mangadex: '//mangadex.org/favicon.ico', telegraph: '//telegra.ph/favicon.ico', nhentai: '//nhentai.net/favicon.ico', + comick: '//comick.io/favicon.ico', read: 'data:image/svg+xml,🗯️' } diff --git a/src/app/link-parser/utils/comick-link-parser.ts b/src/app/link-parser/utils/comick-link-parser.ts new file mode 100644 index 0000000..e6201ea --- /dev/null +++ b/src/app/link-parser/utils/comick-link-parser.ts @@ -0,0 +1,6 @@ +import { LinkParser } from "./link-parser"; + +export class ComickLinkParser extends LinkParser { + override regex = /comick\.io\/comic\/(?:[\w-]+)\/(\w+)/; + override site = 'comick'; +}; diff --git a/src/app/list/list-shell/list-shell.component.ts b/src/app/list/list-shell/list-shell.component.ts index 02b67b1..aa5fa36 100644 --- a/src/app/list/list-shell/list-shell.component.ts +++ b/src/app/list/list-shell/list-shell.component.ts @@ -3,6 +3,7 @@ import { LinkParserService } from '../../link-parser/data-access/link-parser.ser import { ImgurLinkParser, JsonLinkParser, LinkParser, MangadexLinkParser, NhentaiLinkParser, RedditLinkParser, TelegraphLinkParser, ZenkoLinkParser } from '../../link-parser/utils'; import { DomManipulationService } from '../../shared/data-access'; import { LangService } from '../../shared/data-access/lang.service'; +import { ComickLinkParser } from '../../link-parser/utils/comick-link-parser'; @Component({ @@ -87,6 +88,7 @@ export class ListShellComponent { this.parser.parsers.push(new RedditLinkParser) this.parser.parsers.push(new ZenkoLinkParser) this.parser.parsers.push(new NhentaiLinkParser) + this.parser.parsers.push(new ComickLinkParser) this.parser.parsers.push(new JsonLinkParser) } diff --git a/src/app/nhentai/nhentai-shell/nhentai-shell.component.html b/src/app/nhentai/nhentai-shell/nhentai-shell.component.html index 9df5e92..6082506 100644 --- a/src/app/nhentai/nhentai-shell/nhentai-shell.component.html +++ b/src/app/nhentai/nhentai-shell/nhentai-shell.component.html @@ -1,7 +1,7 @@ -

{{lang.ph().imagesVia}}Zenko +

{{lang.ph().imagesVia}}Nhentai API. {{lang.ph().thanks}}
{{lang.ph().detalisCopy}}

diff --git a/src/environments/environment.development.ts b/src/environments/environment.development.ts index c104b9a..58c79eb 100644 --- a/src/environments/environment.development.ts +++ b/src/environments/environment.development.ts @@ -9,5 +9,6 @@ export const environment = { telegraphHost: `https://api.telegra.ph/getPage/`, redditHost: `https://www.reddit.com/r/all/comments/`, zenkoHost: `https://zenko-api.onrender.com/chapters/`, - nhentaiHost: `https://nhentai.net/api/gallery/` + nhentaiHost: `https://nhentai.net/api/gallery/`, + comickHost: `https://api.comick.fun/chapter/` }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index f1bd205..32cbc8e 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -8,5 +8,6 @@ export const environment = { telegraphHost: `https://api.telegra.ph/getPage/`, redditHost: `https://www.reddit.com/r/all/comments/`, zenkoHost: `https://zenko-api.onrender.com/chapters/`, - nhentaiHost: `https://nhentai.net/api/gallery/` + nhentaiHost: `https://nhentai.net/api/gallery/`, + comickHost: `https://api.comick.fun/chapter/` }; From 9e6afcfb5388a775372af141e30f96082033214a Mon Sep 17 00:00:00 2001 From: Andrii Rodzyk Date: Tue, 13 Aug 2024 15:09:09 +0300 Subject: [PATCH 3/3] v2024.8.13 --- src/app/link-parser/ui/footer/footer.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/link-parser/ui/footer/footer.component.ts b/src/app/link-parser/ui/footer/footer.component.ts index f1de1f8..f9fea8a 100644 --- a/src/app/link-parser/ui/footer/footer.component.ts +++ b/src/app/link-parser/ui/footer/footer.component.ts @@ -25,7 +25,7 @@ const SOCIAL_LINKS: any[] = [ styleUrl: './footer.component.scss' }) export class FooterComponent { - public readonly version: string = 'v2024.7.14' + public readonly version: string = 'v2024.8.13' public lang: LangService = inject(LangService); public social: any[] = SOCIAL_LINKS;