Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New update? #179

Open
wants to merge 83 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
2a1e4dd
add provider model
koikiss-dev Mar 2, 2024
a4af83c
Merge remote-tracking branch 'origin/dev' into performance
koikiss-dev Mar 2, 2024
4a4994a
add a base provider and format (automatic)
koikiss-dev Mar 2, 2024
3284ffe
edit
koikiss-dev Mar 2, 2024
9a3bd68
The getAnime function caused slowness when searching for an anime
Zukaritasu Mar 21, 2024
6d196d6
Merge pull request #160 from koikiss-dev/zuka
Mawfyy Mar 21, 2024
425a741
add "type" into imports
koikiss-dev Mar 22, 2024
b7d7587
pm2 option and bun.lock
koikiss-dev Mar 22, 2024
f2913c7
Merge branch 'dev' into performance
koikiss-dev Mar 28, 2024
cdcd627
Merge pull request #152 from koikiss-dev:performance
koikiss-dev Mar 28, 2024
f6203d1
Add Search Animevostfr and remove comments in AnimeLatinoHD
TokyoTF Apr 14, 2024
bc00df3
feat: add scraper models
barrientosvctor Apr 29, 2024
9b257a9
fix: import class
barrientosvctor Apr 30, 2024
ef2202e
fix: Comick (request data)
TokyoTF May 2, 2024
7361f6c
feat(types)!: base abstractions
barrientosvctor May 22, 2024
a7d277a
feat(types)!: add anime types inherited from base types
barrientosvctor May 22, 2024
d3712a7
feat(types)!: add manga types inherited from base types
barrientosvctor May 22, 2024
5756046
fix(properties)!: remove url from base interface
barrientosvctor May 25, 2024
bc20079
chore: remove doc of unused base types
barrientosvctor May 25, 2024
70a19ee
feat(base)!: add base interface and class for chapters
barrientosvctor May 26, 2024
241b015
feat(episode)!: add episode interface inherited from base
barrientosvctor May 26, 2024
6a7381c
feat(MangaChapter)!: add manga chapter interface inherited from base
barrientosvctor May 26, 2024
068b1b9
feat(BaseScraperModel): add generics extension
barrientosvctor May 26, 2024
319266a
feat(AnimeScraperModel): add extension to new anime interfaces
barrientosvctor May 26, 2024
b0c63c9
feat(MangaScraperModel): add extension to new manga interfaces
barrientosvctor May 26, 2024
6938cca
delete: mangaStructure file
barrientosvctor May 26, 2024
d60ba03
feat(manga-types)!: add base inherited interface to IMangaVolume
barrientosvctor Jun 13, 2024
f8c5e67
Fix AnimeLatinoHD
TokyoTF Jun 20, 2024
079c249
Merge pull request #162 from koikiss-dev/provider-models
koikiss-dev Jun 20, 2024
91b08a2
Test warpvideo in vercel deploy
TokyoTF Jun 20, 2024
2f68c0b
Test 2 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
578bad2
test 3 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
7c08037
test 4 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
a003405
test 5 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
b14b3e6
test 6 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
8c32d55
test 7 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
79d2ec7
test 8 warpvideo in vercel deploy
TokyoTF Jun 20, 2024
3f43770
Merge remote-tracking branch 'origin/dev' into TokyoTF
TokyoTF Jun 20, 2024
3883797
Update Providers to new class
TokyoTF Jun 20, 2024
c23786b
AnimeBlix to direct class
TokyoTF Jun 20, 2024
708cbbd
comick,Inmanga to direct class
TokyoTF Jun 20, 2024
e6f2c50
Animevostfr to direct class
TokyoTF Jun 20, 2024
0641cbf
Fix: unit tests(some providers)
TokyoTF Jun 22, 2024
094c01b
fix(manganelo): class implementation and tests
barrientosvctor Jun 22, 2024
e13f9e2
fix(mangareader): class implementation and tests
barrientosvctor Jun 22, 2024
a62b82d
The Monoschinos scraper was completely updated as there were internal…
Zukaritasu Jun 23, 2024
0db172b
Merge branch 'dev' of github.com:koikiss-dev/jimov_api into dev
Zukaritasu Jun 23, 2024
21ff836
The code was migrated to the new implementation of the API classes
Zukaritasu Jun 23, 2024
3da604b
The "letter" field was removed because Monoschinos no longer implemen…
Zukaritasu Jun 23, 2024
0413f2c
The code was migrated to the new implementation of the classes in the…
Zukaritasu Jun 23, 2024
5a1824d
Added the "last" option to request the latest anime and episodes publ…
Zukaritasu Jun 23, 2024
ca8639d
Merge pull request #167 from koikiss-dev/shawn-providers
koikiss-dev Jun 24, 2024
b0d6fb5
Merge pull request #164 from koikiss-dev/TokyoTF
koikiss-dev Jun 24, 2024
c777c57
Removed an unnecessary call to console.log()
Zukaritasu Jun 24, 2024
e5b318e
More checks have been added to the TioAnime test
Zukaritasu Jun 24, 2024
ca92fb3
Monoschinos test has been added!
Zukaritasu Jun 24, 2024
68df703
A filter test was removed
Zukaritasu Jun 24, 2024
a09c584
Some changes were included in the test and the Chronology test was el…
Zukaritasu Jun 24, 2024
5783322
Update Monoschinos.spec.ts
Zukaritasu Jun 24, 2024
dfdf43d
Update TioAnime.spec.ts
Zukaritasu Jun 24, 2024
9b7efb5
Merge pull request #168 from koikiss-dev/zuka
koikiss-dev Jul 2, 2024
2d9a445
Add animeflv with new models
koikiss-dev Jul 10, 2024
83df4bc
Add animeflv with news models
koikiss-dev Jul 10, 2024
4743bce
wait for update and delete zoro and nhentai test
koikiss-dev Jul 10, 2024
ff1ebdf
Merge branch 'main' into TokyoTF
TokyoTF Jul 19, 2024
027def5
Merge remote-tracking branch 'origin/dev' into TokyoTF
TokyoTF Jul 19, 2024
888f097
animeflv
koikiss-dev Jul 19, 2024
ae9059e
up
koikiss-dev Jul 19, 2024
dabfffe
Merge pull request #172 from koikiss-dev/yako
koikiss-dev Jul 19, 2024
6ffe701
Add: HentaiLa Provider
TokyoTF Jul 20, 2024
158314d
Fix: path Route HentaiLa
TokyoTF Jul 20, 2024
5c474cb
Merge branch 'TokyoTF' into tokyotf-hentaihaven
TokyoTF Jul 23, 2024
ba551e1
Add HentaiHeven
TokyoTF Jul 23, 2024
a3185d2
Merge pull request #173 from koikiss-dev/TokyoTF
koikiss-dev Jul 24, 2024
541252c
Merge pull request #175 from koikiss-dev/tokyotf-hentaihaven
koikiss-dev Jul 24, 2024
6b873e7
fix(providers): get info routes outdated
barrientosvctor Jul 28, 2024
20bf28f
fix(providers): outdated getinfo api url in migrated provider source …
barrientosvctor Jul 28, 2024
c895504
Merge pull request #176 from koikiss-dev/fix-routes
koikiss-dev Jul 31, 2024
bbcf118
Merge branch 'dev' of github.com:koikiss-dev/jimov_api into dev
koikiss-dev Aug 29, 2024
5173390
faltan cambios en el test
koikiss-dev Sep 24, 2024
ecb50bf
feature: all done
koikiss-dev Dec 31, 2024
c69166e
fix
koikiss-dev Dec 31, 2024
474c157
Merge pull request #178 from koikiss-dev/yako-fin
koikiss-dev Jan 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 14 additions & 20 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
{
"env": {
"browser": true,
"es2021": true
},
"parser": "@typescript-eslint/parser",
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": ["./tsconfig.json"]
},
"plugins": [
"@typescript-eslint"
],
"root": true,
"rules": {
}
"env": {
"browser": true,
"es2021": true
},
"parser": "@typescript-eslint/parser",
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": ["./tsconfig.json"]
},
"plugins": ["@typescript-eslint"],
"root": true,
"rules": {}
}
Binary file added bun.lockb
Binary file not shown.
8 changes: 3 additions & 5 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
module.exports = {
roots: [
"<rootDir>/src",
],
roots: ["<rootDir>/src"],
testMatch: [
"**/__tests__/**/*.+(ts|tsx|js)",
"**/?(*.)+(spec|test).+(ts|tsx|js)"
"**/?(*.)+(spec|test).+(ts|tsx|js)",
],
transform: {
"^.+\\.(ts|tsx)$": [
Expand All @@ -19,4 +17,4 @@ module.exports = {
"!**/*.d.ts",
"!**/node_modules/**",
],
}
};
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"main": "src/index.ts",
"scripts": {
"start": "node ./build/src/index.js",
"start:pm2": "pm2 start ./build/src/index.js",
"server": "nodemon src/index.ts",
"start:vercel": "node build/index.js",
"format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\"",
Expand Down Expand Up @@ -47,6 +48,7 @@
"axios": "^1.3.4",
"cheerio": "^1.0.0-rc.12",
"cors": "^2.8.5",
"crypto-js": "^4.2.0",
"express": "^4.18.2",
"helmet": "^6.0.1",
"morgan": "^1.10.0",
Expand Down
4 changes: 2 additions & 2 deletions puppeteer.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ const { Configuration } = require("puppeteer");

/** @type {Configuration} */
module.exports = {
cacheDirectory: join(os.homedir(), ".cache", "puppeteer")
}
cacheDirectory: join(os.homedir(), ".cache", "puppeteer"),
};
22 changes: 8 additions & 14 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@ import morgan from "morgan";
import index from "../src/routes/app";
import providersList from "../src/routes/providers";
import helmet from "helmet";
import cors from 'cors'
import cors from "cors";

/* Anime */
import flv from "../src/routes/v1/anime/animeflv/AnimeflvRoutes";
import latinhd from "../src/routes/v1/anime/animelatinohd/AnimeLatinoHDRoutes";
import gogoanime from "../src/routes/v1/anime/gogoanime/GogoAnimeRoute";
import zoro from "../src/routes/v1/anime/zoro/ZoroRoutes";
import monoschinos from "../src/routes/v1/anime/monoschinos/MonosChinosRoute";
import tioanime from '../src/routes/v1/anime/tioanime/TioAnimeRoute'
import tioanime from "../src/routes/v1/anime/tioanime/TioAnimeRoute";
import WcoStream from "../src/routes/v1/anime/wcostream/wcostreamRoutes";
import AnimeBlix from "../src/routes/v1/anime/animeblix/AnimeBlixRoutes";
import Animevostfr from "../src/routes/v1/anime/animevostfr/AnimevostfrRoutes";
import hentaila from "../src/routes/v1/anime/hentaila/HentaiLaRoutes";
import HentaiHaven from "../src/routes/v1/anime/hentaihaven/HentaiHavenRoutes";

/* Manga */
import comick from "../src/routes/v1/manga/comick/ComickRoutes";
import inmanga from "../src/routes/v1/manga/inmanga/InmangaRoutes";
import nhentai from "../src/routes/v1/manga/nhentai/NhentaiRoutes"
import mangareader from "../src/routes/v1/manga/mangareader/MangaReaderRoutes";
import manganelo from "../src/routes/v1/manga/manganelo/ManganeloRoutes";

Expand All @@ -33,34 +32,30 @@ app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(morgan("dev"));
app.use(helmet());
app.use(cors())
app.use(cors());

//routes

/*anime*/
app.use(flv);
app.use(latinhd);
app.use(gogoanime);
app.use(monoschinos);
app.use(zoro);
app.use(tioanime)
app.use(tioanime);
app.use(WcoStream);
app.use(AnimeBlix);
app.use(Animevostfr);
app.use(hentaila);
app.use(HentaiHaven);

/* anime */


/*Manga*/
app.use(comick);
app.use(inmanga);
app.use(nhentai)
app.use(mangareader);
app.use(manganelo);
/*Manga*/



/*error */

interface ErrorResponse {
Expand Down Expand Up @@ -102,7 +97,6 @@ app.use((err, res, _next) => {
res.status(response.error.status).send(response);
});


app.listen(port, () => {
console.log(`Servidor iniciado en el puerto ${port} listo para trabajar :)`);
});
Expand Down
8 changes: 8 additions & 0 deletions src/models/AnimeScraperModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { AnimeMedia } from "@animetypes/anime";
import type { Episode } from "@animetypes/episode";
import type { IAnimeResult } from "@animetypes/search";
import { BaseScraperModel } from "./BaseScraperModel";

export abstract class AnimeScraperModel extends BaseScraperModel<AnimeMedia, IAnimeResult> {
public abstract GetEpisodeServers(...args: unknown[]): Promise<Episode>;
}
9 changes: 9 additions & 0 deletions src/models/BaseScraperModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import type { BaseMedia, BaseResult } from "@animetypes/base";
import type { IResultSearch } from "@animetypes/search";

export abstract class BaseScraperModel<MediaInfoType extends BaseMedia, FilterResultType extends BaseResult> {
public abstract readonly url: string;

public abstract GetItemInfo(item: string): Promise<MediaInfoType>;
public abstract GetItemByFilter(...args: unknown[]): Promise<IResultSearch<FilterResultType>>;
}
6 changes: 6 additions & 0 deletions src/models/MangaScraperModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import type { MangaMedia, MangaChapter, MangaVolume, IMangaResult } from "@animetypes/manga";
import { BaseScraperModel } from "./BaseScraperModel";

export abstract class MangaScraperModel extends BaseScraperModel<MangaMedia, IMangaResult> {
public abstract GetMangaChapters(...args: unknown[]): Promise<MangaChapter | MangaVolume>
}
2 changes: 1 addition & 1 deletion src/routes/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ interface ProviderScraper {
status: number | string;
icon: string;
url: string;
apiID: string
apiID: string;
favicon: string | string[];
}

Expand Down
2 changes: 1 addition & 1 deletion src/routes/v1/anime/9anime/9animeRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ r.get("/anime/9anime/name/:name", (req, res) => {
});
});

export default r
export default r;
33 changes: 19 additions & 14 deletions src/routes/v1/anime/animeblix/AnimeBlixRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,32 @@ const router = Router();

// Filter
router.get("/anime/animeblix/filter", async (req, res) => {
const { search, type, page, year, genre } = req.query

const data = await Anime.GetAnimeByFilter(search as string, type as unknown as number, page as unknown as number, year as string, genre as string)
res.send(data)
const { search, type, page, year, genre } = req.query;

const data = await Anime.GetItemByFilter(
search as string,
type as unknown as number,
page as unknown as number,
year as string,
genre as string,
);
res.send(data);
});

// Anime Info +(Episodes list)
router.get("/anime/animeblix/name/:name", async (req, res) => {

const { name } = req.params
const data = await Anime.GetAnimeInfo(name.includes("ver-")? name.replace("ver-","") : name)
res.send(data)

const { name } = req.params;
const data = await Anime.GetItemInfo(
name.includes("ver-") ? name.replace("ver-", "") : name,
);
res.send(data);
});

// Episode Info +(Video Servers)
router.get("/anime/animeblix/episode/:episode", async (req, res) => {
const { episode } = req.params
const data = await Anime.GetEpisodeServers(episode)
res.send(data)

const { episode } = req.params;
const data = await Anime.GetEpisodeServers(episode);
res.send(data);
});

export default router
export default router;
33 changes: 22 additions & 11 deletions src/routes/v1/anime/animeflv/AnimeflvRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,20 @@ import {
StatusAnimeflv,
OrderAnimeflv,
} from "../../../../scraper/sites/anime/animeflv/animeflv_helper";
import { ScraperErrorResponse } from "utils/ScraperError";
const r = Router();


//anime info
r.get("/anime/flv/name/:name", async (req, res) => {
try {
const { name } = req.params;
const flv = new AnimeFlv();
const animeInfo = await flv.GetAnimeInfo(name);
const animeInfo = await flv.GetItemInfo(name);
res.send(animeInfo);
} catch (error) {
console.log(error);
res.status(500).send(error);
if (error instanceof ScraperErrorResponse) {
res.status(404).send(error);
}
}
});

Expand All @@ -30,28 +31,38 @@ r.get("/anime/flv/episode/:episode", async (req, res) => {
const animeInfo = await flv.GetEpisodeServers(episode);
res.send(animeInfo);
} catch (error) {
console.log(error);
res.status(500).send(error);
if (error instanceof ScraperErrorResponse) {
res.status(404).send(error);
}
}
});

//filter
r.get("/anime/flv/filter", async (req, res) => {
try {
const gen = req.query.gen as Genres;
const date = req.query.date as string;
const year = req.query.year as string;
const type = req.query.type as TypeAnimeflv;
const status = req.query.status as StatusAnimeflv;
const ord = req.query.ord as OrderAnimeflv;
const page = req.query.page as unknown as number;
const title = req.query.title as string;

const flv = new AnimeFlv();
const animeInfo = await flv.Filter(gen, date, type, status, ord, page, title);
const animeInfo = await flv.GetItemByFilter(
gen,
year,
type,
status,
ord,
page,
title
);
res.send(animeInfo);
} catch (error) {
console.log(error);
res.status(500).send(error);
if (error instanceof ScraperErrorResponse) {
res.status(404).send(error);
}
}
});

Expand Down
33 changes: 18 additions & 15 deletions src/routes/v1/anime/animelatinohd/AnimeLatinoHDRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,31 @@ const router = Router();

// Filter
router.get("/anime/animelatinohd/filter", async (req, res) => {
const { search, type, page, year, genre } = req.query

const data = await Anime.GetAnimeByFilter(search as string, type as unknown as number, page as unknown as number, year as string, genre as string)
res.send(data)
const { search, type, page, year, genre } = req.query;

const data = await Anime.GetItemByFilter(
search as string,
type as unknown as number,
page as unknown as number,
year as string,
genre as string,
);
res.send(data);
});

// Anime Info +(Episodes list)
router.get("/anime/animelatinohd/name/:name", async (req, res) => {

const { name } = req.params
const data = await Anime.GetAnimeInfo(name)
res.send(data)

const { name } = req.params;
const data = await Anime.GetItemInfo(name);
res.send(data);
});

// Episode Info +(Video Servers)
router.get("/anime/animelatinohd/episode/:episode", async (req, res) => {
const { lang } = req.query
const { episode } = req.params
const data = await Anime.GetEpisodeServers(episode, lang as string)
res.send(data)

const { lang } = req.query;
const { episode } = req.params;
const data = await Anime.GetEpisodeServers(episode, lang as string);
res.send(data);
});

export default router
export default router;
Loading