Skip to content

Commit 6f61acc

Browse files
fix api v2 and add logger
1 parent 7fce36c commit 6f61acc

File tree

8 files changed

+240
-175
lines changed

8 files changed

+240
-175
lines changed

build/server.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ const animeindoRoute_1 = __importDefault(require("./src/routes/animeindoRoute"))
88
const cors_1 = __importDefault(require("cors"));
99
const rateLimit_1 = __importDefault(require("./src/middleware/rateLimit"));
1010
require("dotenv/config");
11+
const morgan_1 = __importDefault(require("morgan"));
1112
const app = (0, express_1.default)();
1213
const port = process.env.PORT || 8000;
1314
app.use(express_1.default.json());
1415
app.use(rateLimit_1.default);
16+
app.use((0, morgan_1.default)("combined"));
1517
app.use((0, cors_1.default)({
1618
origin: process.env.CORS_ORIGIN,
1719
credentials: true,

build/src/controllers/animeindoController.js

Lines changed: 72 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
2626
return (mod && mod.__esModule) ? mod : { "default": mod };
2727
};
2828
Object.defineProperty(exports, "__esModule", { value: true });
29-
exports.getAnimeByEpisode = exports.getAnimeBySchedule = exports.getAnimeByGenre = exports.getAnimePropertiesGenre = exports.getAnimeBySeasonList = exports.getAnimeByDetails = exports.getAnimeSeasonList = exports.getAnimeMovie = exports.getAnimeLatest = exports.getAnimeOnGoing = void 0;
29+
exports.getAnimeByEpisode = exports.getAnimeBySchedule = exports.getAnimeByGenre = exports.getAnimePropertiesGenre = exports.getAnimeByDetails = exports.getAnimeBySeasonList = exports.getAnimeSeasonList = exports.getAnimeMovie = exports.getAnimeLatest = exports.getAnimeOnGoing = void 0;
3030
const cheerio = __importStar(require("cheerio"));
3131
const request_1 = __importDefault(require("request"));
3232
const baseURL_1 = require("../lib/baseURL");
@@ -35,7 +35,7 @@ const getAnimeOnGoing = (req, res) => {
3535
return new Promise((resolve, reject) => {
3636
try {
3737
const options = {
38-
url: `${baseURL_1.baseURL}/quick/ongoing?order_by=${order_by || "ongoing"}&page=${page || 1}`,
38+
url: `${baseURL_1.baseURL}/quick/ongoing?order_by=${order_by || "updated"}&page=${page || 1}`,
3939
};
4040
let has_next_page = false;
4141
let has_prev_page = false;
@@ -301,7 +301,6 @@ const getAnimeMovie = (req, res) => {
301301
};
302302
exports.getAnimeMovie = getAnimeMovie;
303303
const getAnimeSeasonList = (req, res) => {
304-
const { page } = req.query;
305304
return new Promise((resolve, reject) => {
306305
try {
307306
const options = {
@@ -319,7 +318,7 @@ const getAnimeSeasonList = (req, res) => {
319318
$("#animeList > div > div > ul > li").each((index, el) => {
320319
var _a, _b, _c, _d, _e, _f, _g;
321320
const season_title = (_c = (_b = (_a = $(el)
322-
.find("a")
321+
.find("a > span")
323322
.text()) === null || _a === void 0 ? void 0 : _a.replace(/\n/g, "")) === null || _b === void 0 ? void 0 : _b.trim()) === null || _c === void 0 ? void 0 : _c.replace(/"/g, "");
324323
const season_slug = (_g = (_f = (_e = (_d = $(el)
325324
.find("a")
@@ -337,6 +336,7 @@ const getAnimeSeasonList = (req, res) => {
337336
});
338337
}
339338
catch (error) {
339+
console.log(error);
340340
res.status(500).json({
341341
status: "error",
342342
message: error.message,
@@ -346,6 +346,73 @@ const getAnimeSeasonList = (req, res) => {
346346
});
347347
};
348348
exports.getAnimeSeasonList = getAnimeSeasonList;
349+
const getAnimeBySeasonList = (req, res) => {
350+
const { order_by, page } = req.query;
351+
const { season_id } = req.params;
352+
return new Promise((resolve, reject) => {
353+
try {
354+
const options = {
355+
url: `${baseURL_1.baseURL}/properties/season/${season_id}?order_by=${order_by || "most_viewed"}&page=${page || 1}`,
356+
};
357+
const animeList = [];
358+
(0, request_1.default)(options, (error, response, body) => {
359+
if (error || response.statusCode !== 200) {
360+
return res.status(500).json({
361+
status: "error",
362+
message: "Failed to retrieve anime list",
363+
});
364+
}
365+
const $ = cheerio.load(body);
366+
$("#animeList > div > div").each((index, el) => {
367+
var _a, _b, _c, _d, _e, _f;
368+
const typeList = $(el)
369+
.find("div > ul > a")
370+
.map((i, index) => $(index).text())
371+
.get();
372+
const slug = (_a = $(el)
373+
.find("div > a")
374+
.attr("href")) === null || _a === void 0 ? void 0 : _a.replace(baseURL_1.baseURL, "");
375+
const title = (_d = (_c = (_b = $(el)
376+
.find("div > h5")
377+
.text()) === null || _b === void 0 ? void 0 : _b.replace(/\n/g, "")) === null || _c === void 0 ? void 0 : _c.trim()) === null || _d === void 0 ? void 0 : _d.replace(/"/g, "");
378+
const rating = (_f = (_e = $(el)
379+
.find("a > div > div.ep > span")
380+
.text()) === null || _e === void 0 ? void 0 : _e.replace(/\n/g, "")) === null || _f === void 0 ? void 0 : _f.trim();
381+
const image = $(el).find("a > div").attr("data-setbg");
382+
animeList.push({
383+
type: typeList,
384+
slug,
385+
title,
386+
rating,
387+
image,
388+
});
389+
});
390+
const filteredAnimeList = animeList.filter((anime) => {
391+
return anime.type.length > 0 || anime.title || anime.episode;
392+
});
393+
if (filteredAnimeList.length === 0) {
394+
return res.status(404).json({
395+
status: "error",
396+
message: "No anime found",
397+
});
398+
}
399+
res.status(200).json({
400+
status: "success",
401+
data: filteredAnimeList,
402+
});
403+
resolve();
404+
});
405+
}
406+
catch (error) {
407+
res.status(500).json({
408+
status: "error",
409+
message: error.message,
410+
});
411+
reject(error);
412+
}
413+
});
414+
};
415+
exports.getAnimeBySeasonList = getAnimeBySeasonList;
349416
const getAnimeByDetails = (req, res) => {
350417
const { page } = req.query;
351418
const { anime_code, anime_id } = req.params;
@@ -490,73 +557,6 @@ const getAnimeByDetails = (req, res) => {
490557
});
491558
};
492559
exports.getAnimeByDetails = getAnimeByDetails;
493-
const getAnimeBySeasonList = (req, res) => {
494-
const { order_by, page } = req.query;
495-
const { season_id } = req.params;
496-
return new Promise((resolve, reject) => {
497-
try {
498-
const options = {
499-
url: `${baseURL_1.baseURL}/properties/season/${season_id}?order_by=${order_by || "most_viewed"}&page=${page || 1}`,
500-
};
501-
const animeList = [];
502-
(0, request_1.default)(options, (error, response, body) => {
503-
if (error || response.statusCode !== 200) {
504-
return res.status(500).json({
505-
status: "error",
506-
message: "Failed to retrieve anime list",
507-
});
508-
}
509-
const $ = cheerio.load(body);
510-
$("#animeList > div > div").each((index, el) => {
511-
var _a, _b, _c, _d, _e, _f;
512-
const typeList = $(el)
513-
.find("div > ul > a")
514-
.map((i, index) => $(index).text())
515-
.get();
516-
const slug = (_a = $(el)
517-
.find("div > a")
518-
.attr("href")) === null || _a === void 0 ? void 0 : _a.replace(baseURL_1.baseURL, "");
519-
const title = (_d = (_c = (_b = $(el)
520-
.find("div > h5")
521-
.text()) === null || _b === void 0 ? void 0 : _b.replace(/\n/g, "")) === null || _c === void 0 ? void 0 : _c.trim()) === null || _d === void 0 ? void 0 : _d.replace(/"/g, "");
522-
const rating = (_f = (_e = $(el)
523-
.find("a > div > div.ep > span")
524-
.text()) === null || _e === void 0 ? void 0 : _e.replace(/\n/g, "")) === null || _f === void 0 ? void 0 : _f.trim();
525-
const image = $(el).find("a > div").attr("data-setbg");
526-
animeList.push({
527-
type: typeList,
528-
slug,
529-
title,
530-
rating,
531-
image,
532-
});
533-
});
534-
const filteredAnimeList = animeList.filter((anime) => {
535-
return anime.type.length > 0 || anime.title || anime.episode;
536-
});
537-
if (filteredAnimeList.length === 0) {
538-
return res.status(404).json({
539-
status: "error",
540-
message: "No anime found",
541-
});
542-
}
543-
res.status(200).json({
544-
status: "success",
545-
data: filteredAnimeList,
546-
});
547-
resolve();
548-
});
549-
}
550-
catch (error) {
551-
res.status(500).json({
552-
status: "error",
553-
message: error.message,
554-
});
555-
reject(error);
556-
}
557-
});
558-
};
559-
exports.getAnimeBySeasonList = getAnimeBySeasonList;
560560
const getAnimePropertiesGenre = (req, res) => {
561561
const { page } = req.query;
562562
return new Promise((resolve, reject) => {
@@ -750,7 +750,7 @@ const getAnimeByEpisode = (req, res) => {
750750
const { anime_code, anime_id, episode_id } = req.params;
751751
const { page } = req.query;
752752
const options = {
753-
url: `${baseURL_1.baseURL}/anime/${anime_code}/${anime_id}/episode/${episode_id}?YufB6E2rKx3pM0F=iV2Ymxtsfa&1cerLmDzYXioTFa=kuramadrive&page=${page || 1}`,
753+
url: `${baseURL_1.baseURL}/anime/${anime_code}/${anime_id}/episode/${episode_id}?QXCKFC2hpmVFvvv=8vIFROsi7w&PsAdpiUFrAc3n85=kuramadrive&page=${page || 1}`,
754754
};
755755
let has_next_page = false;
756756
let has_next_link = null;
@@ -821,7 +821,6 @@ const getAnimeByEpisode = (req, res) => {
821821
status: "error",
822822
message: error.message,
823823
});
824-
reject(error);
825824
}
826825
});
827826
};

build/src/routes/animeindoRoute.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ animeIndo.get("/ongoing", animeindoController_1.getAnimeOnGoing);
77
animeIndo.get("/completed", animeindoController_1.getAnimeLatest);
88
animeIndo.get("/movie", animeindoController_1.getAnimeMovie);
99
animeIndo.get("/:anime_code/:anime_id", animeindoController_1.getAnimeByDetails);
10-
animeIndo.get("/properties/season", animeindoController_1.getAnimeSeasonList);
10+
animeIndo.get("/properties/season/list", animeindoController_1.getAnimeSeasonList);
1111
animeIndo.get("/properties/season/:season_id", animeindoController_1.getAnimeBySeasonList);
12-
animeIndo.get("/properties/genre", animeindoController_1.getAnimePropertiesGenre);
12+
animeIndo.get("/properties/genre/list", animeindoController_1.getAnimePropertiesGenre);
1313
animeIndo.get("/properties/genre/:genre_id", animeindoController_1.getAnimeByGenre);
1414
animeIndo.get("/schedule", animeindoController_1.getAnimeBySchedule);
1515
animeIndo.get("/:anime_code/:anime_id/episode/:episode_id", animeindoController_1.getAnimeByEpisode);

package-lock.json

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@
1818
"dotenv": "^16.4.5",
1919
"express": "^4.19.2",
2020
"express-rate-limit": "^7.3.1",
21+
"morgan": "^1.10.0",
2122
"request": "^2.88.2"
2223
},
2324
"devDependencies": {
2425
"@types/cors": "^2.8.17",
2526
"@types/express": "^4.17.21",
27+
"@types/morgan": "^1.9.9",
2628
"@types/request": "^2.48.12",
2729
"nodemon": "^3.1.4",
2830
"ts-node": "^10.9.2",

server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import animeIndo from "./src/routes/animeindoRoute";
33
import cors from "cors";
44
import limiter from "./src/middleware/rateLimit";
55
import "dotenv/config";
6+
import morgan from "morgan";
67

78
const app: Application = express();
89
const port = process.env.PORT || 8000;
910

1011
app.use(express.json());
1112
app.use(limiter);
13+
app.use(morgan("combined"));
1214
app.use(
1315
cors({
1416
origin: process.env.CORS_ORIGIN,

0 commit comments

Comments
 (0)