animob 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +245 -0
- package/animb.png +0 -0
- package/dist/extractors/index.d.ts +11 -0
- package/dist/extractors/index.js +27 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/kwik.d.ts +18 -0
- package/dist/extractors/kwik.js +117 -0
- package/dist/extractors/kwik.js.map +1 -0
- package/dist/extractors/lplayer.d.ts +11 -0
- package/dist/extractors/lplayer.js +131 -0
- package/dist/extractors/lplayer.js.map +1 -0
- package/dist/extractors/megacloud.d.ts +10 -0
- package/dist/extractors/megacloud.js +44 -0
- package/dist/extractors/megacloud.js.map +1 -0
- package/dist/extractors/megaup.d.ts +31 -0
- package/dist/extractors/megaup.js +79 -0
- package/dist/extractors/megaup.js.map +1 -0
- package/dist/extractors/mixdrop.d.ts +7 -0
- package/dist/extractors/mixdrop.js +32 -0
- package/dist/extractors/mixdrop.js.map +1 -0
- package/dist/extractors/movearnpre.d.ts +9 -0
- package/dist/extractors/movearnpre.js +154 -0
- package/dist/extractors/movearnpre.js.map +1 -0
- package/dist/extractors/sendvid.d.ts +8 -0
- package/dist/extractors/sendvid.js +76 -0
- package/dist/extractors/sendvid.js.map +1 -0
- package/dist/extractors/sibnet.d.ts +8 -0
- package/dist/extractors/sibnet.js +44 -0
- package/dist/extractors/sibnet.js.map +1 -0
- package/dist/extractors/streamsb.d.ts +11 -0
- package/dist/extractors/streamsb.js +65 -0
- package/dist/extractors/streamsb.js.map +1 -0
- package/dist/extractors/streamtape.d.ts +7 -0
- package/dist/extractors/streamtape.js +32 -0
- package/dist/extractors/streamtape.js.map +1 -0
- package/dist/extractors/streamwish.d.ts +11 -0
- package/dist/extractors/streamwish.js +46 -0
- package/dist/extractors/streamwish.js.map +1 -0
- package/dist/extractors/vidcloud.d.ts +11 -0
- package/dist/extractors/vidcloud.js +109 -0
- package/dist/extractors/vidcloud.js.map +1 -0
- package/dist/extractors/videostr.d.ts +10 -0
- package/dist/extractors/videostr.js +44 -0
- package/dist/extractors/videostr.js.map +1 -0
- package/dist/extractors/vidmoly.d.ts +7 -0
- package/dist/extractors/vidmoly.js +75 -0
- package/dist/extractors/vidmoly.js.map +1 -0
- package/dist/extractors/voe.d.ts +10 -0
- package/dist/extractors/voe.js +44 -0
- package/dist/extractors/voe.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/models/anime-parser.d.ts +26 -0
- package/dist/models/anime-parser.js +14 -0
- package/dist/models/anime-parser.js.map +1 -0
- package/dist/models/base-parser.d.ts +10 -0
- package/dist/models/base-parser.js +7 -0
- package/dist/models/base-parser.js.map +1 -0
- package/dist/models/base-provider.d.ts +40 -0
- package/dist/models/base-provider.js +45 -0
- package/dist/models/base-provider.js.map +1 -0
- package/dist/models/base-types.d.ts +22 -0
- package/dist/models/base-types.js +3 -0
- package/dist/models/base-types.js.map +1 -0
- package/dist/models/book-parser.d.ts +4 -0
- package/dist/models/book-parser.js +7 -0
- package/dist/models/book-parser.js.map +1 -0
- package/dist/models/comic-parser.d.ts +4 -0
- package/dist/models/comic-parser.js +7 -0
- package/dist/models/comic-parser.js.map +1 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/index.js +39 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/lightnovel-parser.d.ts +16 -0
- package/dist/models/lightnovel-parser.js +7 -0
- package/dist/models/lightnovel-parser.js.map +1 -0
- package/dist/models/manga-parser.d.ts +17 -0
- package/dist/models/manga-parser.js +10 -0
- package/dist/models/manga-parser.js.map +1 -0
- package/dist/models/movie-parser.d.ts +26 -0
- package/dist/models/movie-parser.js +7 -0
- package/dist/models/movie-parser.js.map +1 -0
- package/dist/models/news-parser.d.ts +4 -0
- package/dist/models/news-parser.js +7 -0
- package/dist/models/news-parser.js.map +1 -0
- package/dist/models/proxy.d.ts +25 -0
- package/dist/models/proxy.js +83 -0
- package/dist/models/proxy.js.map +1 -0
- package/dist/models/type-objects.d.ts +48 -0
- package/dist/models/type-objects.js +57 -0
- package/dist/models/type-objects.js.map +1 -0
- package/dist/models/types.d.ts +515 -0
- package/dist/models/types.js +118 -0
- package/dist/models/types.js.map +1 -0
- package/dist/models/video-extractor.d.ts +19 -0
- package/dist/models/video-extractor.js +10 -0
- package/dist/models/video-extractor.js.map +1 -0
- package/dist/providers/anime/animekai.d.ts +94 -0
- package/dist/providers/anime/animekai.js +661 -0
- package/dist/providers/anime/animekai.js.map +1 -0
- package/dist/providers/anime/animepahe.d.ts +41 -0
- package/dist/providers/anime/animepahe.js +270 -0
- package/dist/providers/anime/animepahe.js.map +1 -0
- package/dist/providers/anime/animesama.d.ts +25 -0
- package/dist/providers/anime/animesama.js +504 -0
- package/dist/providers/anime/animesama.js.map +1 -0
- package/dist/providers/anime/animesaturn.d.ts +32 -0
- package/dist/providers/anime/animesaturn.js +298 -0
- package/dist/providers/anime/animesaturn.js.map +1 -0
- package/dist/providers/anime/animeunity.d.ts +27 -0
- package/dist/providers/anime/animeunity.js +157 -0
- package/dist/providers/anime/animeunity.js.map +1 -0
- package/dist/providers/anime/hianime.d.ts +150 -0
- package/dist/providers/anime/hianime.js +825 -0
- package/dist/providers/anime/hianime.js.map +1 -0
- package/dist/providers/anime/index.d.ts +17 -0
- package/dist/providers/anime/index.js +22 -0
- package/dist/providers/anime/index.js.map +1 -0
- package/dist/providers/anime/kickassanime.d.ts +65 -0
- package/dist/providers/anime/kickassanime.js +582 -0
- package/dist/providers/anime/kickassanime.js.map +1 -0
- package/dist/providers/books/index.d.ts +2 -0
- package/dist/providers/books/index.js +4 -0
- package/dist/providers/books/index.js.map +1 -0
- package/dist/providers/comics/getComics.d.ts +9 -0
- package/dist/providers/comics/getComics.js +54 -0
- package/dist/providers/comics/getComics.js.map +1 -0
- package/dist/providers/comics/index.d.ts +5 -0
- package/dist/providers/comics/index.js +8 -0
- package/dist/providers/comics/index.js.map +1 -0
- package/dist/providers/index.d.ts +9 -0
- package/dist/providers/index.js +23 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/light-novels/index.d.ts +5 -0
- package/dist/providers/light-novels/index.js +8 -0
- package/dist/providers/light-novels/index.js.map +1 -0
- package/dist/providers/light-novels/novelupdates.d.ts +26 -0
- package/dist/providers/light-novels/novelupdates.js +155 -0
- package/dist/providers/light-novels/novelupdates.js.map +1 -0
- package/dist/providers/manga/asurascans.d.ts +16 -0
- package/dist/providers/manga/asurascans.js +143 -0
- package/dist/providers/manga/asurascans.js.map +1 -0
- package/dist/providers/manga/comick.d.ts +36 -0
- package/dist/providers/manga/comick.js +141 -0
- package/dist/providers/manga/comick.js.map +1 -0
- package/dist/providers/manga/comix.d.ts +36 -0
- package/dist/providers/manga/comix.js +265 -0
- package/dist/providers/manga/comix.js.map +1 -0
- package/dist/providers/manga/index.d.ts +21 -0
- package/dist/providers/manga/index.js +26 -0
- package/dist/providers/manga/index.js.map +1 -0
- package/dist/providers/manga/mangadex.d.ts +26 -0
- package/dist/providers/manga/mangadex.js +301 -0
- package/dist/providers/manga/mangadex.js.map +1 -0
- package/dist/providers/manga/mangahere.d.ts +29 -0
- package/dist/providers/manga/mangahere.js +376 -0
- package/dist/providers/manga/mangahere.js.map +1 -0
- package/dist/providers/manga/mangakakalot.d.ts +56 -0
- package/dist/providers/manga/mangakakalot.js +461 -0
- package/dist/providers/manga/mangakakalot.js.map +1 -0
- package/dist/providers/manga/mangapill.d.ts +15 -0
- package/dist/providers/manga/mangapill.js +104 -0
- package/dist/providers/manga/mangapill.js.map +1 -0
- package/dist/providers/manga/mangareader.d.ts +15 -0
- package/dist/providers/manga/mangareader.js +110 -0
- package/dist/providers/manga/mangareader.js.map +1 -0
- package/dist/providers/manga/weebcentral.d.ts +12 -0
- package/dist/providers/manga/weebcentral.js +169 -0
- package/dist/providers/manga/weebcentral.js.map +1 -0
- package/dist/providers/meta/anilist.d.ts +206 -0
- package/dist/providers/meta/anilist.js +2025 -0
- package/dist/providers/meta/anilist.js.map +1 -0
- package/dist/providers/meta/index.d.ts +9 -0
- package/dist/providers/meta/index.js +10 -0
- package/dist/providers/meta/index.js.map +1 -0
- package/dist/providers/meta/mal.d.ts +39 -0
- package/dist/providers/meta/mal.js +529 -0
- package/dist/providers/meta/mal.js.map +1 -0
- package/dist/providers/meta/tmdb.d.ts +48 -0
- package/dist/providers/meta/tmdb.js +364 -0
- package/dist/providers/meta/tmdb.js.map +1 -0
- package/dist/providers/movies/dramacool.d.ts +98 -0
- package/dist/providers/movies/dramacool.js +367 -0
- package/dist/providers/movies/dramacool.js.map +1 -0
- package/dist/providers/movies/flixhq.d.ts +90 -0
- package/dist/providers/movies/flixhq.js +438 -0
- package/dist/providers/movies/flixhq.js.map +1 -0
- package/dist/providers/movies/goku.d.ts +80 -0
- package/dist/providers/movies/goku.js +369 -0
- package/dist/providers/movies/goku.js.map +1 -0
- package/dist/providers/movies/himovies.d.ts +102 -0
- package/dist/providers/movies/himovies.js +445 -0
- package/dist/providers/movies/himovies.js.map +1 -0
- package/dist/providers/movies/index.d.ts +17 -0
- package/dist/providers/movies/index.js +22 -0
- package/dist/providers/movies/index.js.map +1 -0
- package/dist/providers/movies/netmirror.d.ts +27 -0
- package/dist/providers/movies/netmirror.js +259 -0
- package/dist/providers/movies/netmirror.js.map +1 -0
- package/dist/providers/movies/sflix.d.ts +106 -0
- package/dist/providers/movies/sflix.js +490 -0
- package/dist/providers/movies/sflix.js.map +1 -0
- package/dist/providers/movies/turkish123.d.ts +32 -0
- package/dist/providers/movies/turkish123.js +141 -0
- package/dist/providers/movies/turkish123.js.map +1 -0
- package/dist/providers/news/animenewsnetwork.d.ts +30 -0
- package/dist/providers/news/animenewsnetwork.js +105 -0
- package/dist/providers/news/animenewsnetwork.js.map +1 -0
- package/dist/providers/news/index.d.ts +5 -0
- package/dist/providers/news/index.js +8 -0
- package/dist/providers/news/index.js.map +1 -0
- package/dist/providers/others/index.d.ts +0 -0
- package/dist/providers/others/index.js +2 -0
- package/dist/providers/others/index.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/providers-list.d.ts +11 -0
- package/dist/utils/providers-list.js +40 -0
- package/dist/utils/providers-list.js.map +1 -0
- package/dist/utils/queries.d.ts +13 -0
- package/dist/utils/queries.js +31 -0
- package/dist/utils/queries.js.map +1 -0
- package/dist/utils/utils.d.ts +32 -0
- package/dist/utils/utils.js +324 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cheerio_1 = require("cheerio");
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const extractors_1 = require("../../extractors");
|
|
6
|
+
class DramaCool extends models_1.MovieParser {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.name = 'DramaCool';
|
|
10
|
+
this.baseUrl = 'https://dramacool.bg';
|
|
11
|
+
this.logo = 'https://play-lh.googleusercontent.com/IaCb2JXII0OV611MQ-wSA8v_SAs9XF6E3TMDiuxGGXo4wp9bI60GtDASIqdERSTO5XU';
|
|
12
|
+
this.classPath = 'MOVIES.DramaCool';
|
|
13
|
+
this.supportedTypes = new Set([models_1.TvType.MOVIE, models_1.TvType.TVSERIES]);
|
|
14
|
+
/**
|
|
15
|
+
* Search for dramas by query
|
|
16
|
+
* @param query search query string
|
|
17
|
+
* @param page page number (default 1)
|
|
18
|
+
*/
|
|
19
|
+
this.search = async (query, page = 1) => {
|
|
20
|
+
try {
|
|
21
|
+
const sanitizedQuery = query.replace(/[\W_]+/g, '+');
|
|
22
|
+
const { data } = await this.client.get(`${this.baseUrl}/search?type=drama&keyword=${sanitizedQuery}&page=${page}`);
|
|
23
|
+
const $ = (0, cheerio_1.load)(data);
|
|
24
|
+
const searchResult = {
|
|
25
|
+
currentPage: page,
|
|
26
|
+
totalPages: page,
|
|
27
|
+
hasNextPage: false,
|
|
28
|
+
results: [],
|
|
29
|
+
};
|
|
30
|
+
this.setPaginationInfo($, searchResult, page);
|
|
31
|
+
$('div.block > div.tab-content > ul.list-episode-item > li').each((_, el) => {
|
|
32
|
+
const $el = $(el);
|
|
33
|
+
const href = $el.find('a').attr('href');
|
|
34
|
+
searchResult.results.push({
|
|
35
|
+
id: href === null || href === void 0 ? void 0 : href.split(`${this.baseUrl}/`)[1],
|
|
36
|
+
title: $el.find('a > h3').text(),
|
|
37
|
+
url: href,
|
|
38
|
+
image: $el.find('a > img').attr('data-original'),
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return searchResult;
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
throw new Error(err.message);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Fetch detailed media information
|
|
49
|
+
* @param mediaId media link or id
|
|
50
|
+
*/
|
|
51
|
+
this.fetchMediaInfo = async (mediaId) => {
|
|
52
|
+
var _a;
|
|
53
|
+
try {
|
|
54
|
+
const normalizedId = mediaId;
|
|
55
|
+
const url = mediaId.startsWith(this.baseUrl) ? mediaId : `${this.baseUrl}/${mediaId}`;
|
|
56
|
+
const { data } = await this.client.get(url);
|
|
57
|
+
const $ = (0, cheerio_1.load)(data);
|
|
58
|
+
const mediaInfo = {
|
|
59
|
+
id: normalizedId,
|
|
60
|
+
title: $('.info > h1:nth-child(1)').text(),
|
|
61
|
+
};
|
|
62
|
+
// Status
|
|
63
|
+
const status = $('div.details div.info p:contains("Status:")').find('a').first().text().trim();
|
|
64
|
+
switch (status) {
|
|
65
|
+
case 'Ongoing':
|
|
66
|
+
mediaInfo.status = models_1.MediaStatus.ONGOING;
|
|
67
|
+
break;
|
|
68
|
+
case 'Completed':
|
|
69
|
+
mediaInfo.status = models_1.MediaStatus.COMPLETED;
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
mediaInfo.status = models_1.MediaStatus.UNKNOWN;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
// Genres
|
|
76
|
+
mediaInfo.genres = [];
|
|
77
|
+
$('div.details div.info p:contains("Genre:")').each((_, element) => {
|
|
78
|
+
$(element)
|
|
79
|
+
.find('a')
|
|
80
|
+
.each((_, anchor) => {
|
|
81
|
+
var _a;
|
|
82
|
+
(_a = mediaInfo.genres) === null || _a === void 0 ? void 0 : _a.push($(anchor).text());
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
// Basic info
|
|
86
|
+
mediaInfo.otherNames = $('.other_name > a')
|
|
87
|
+
.map((_, el) => $(el).text().trim())
|
|
88
|
+
.get();
|
|
89
|
+
mediaInfo.image = $('div.details > div.img > img').attr('src');
|
|
90
|
+
mediaInfo.description = $('div.details div.info p:not(:has(*))')
|
|
91
|
+
.map((_, el) => $(el).text().trim())
|
|
92
|
+
.get()
|
|
93
|
+
.join('\n\n')
|
|
94
|
+
.trim();
|
|
95
|
+
// Extracted fields
|
|
96
|
+
mediaInfo.releaseDate = this.extractFieldValue($, 'Released');
|
|
97
|
+
mediaInfo.contentRating = this.extractFieldValue($, 'Content Rating');
|
|
98
|
+
mediaInfo.airsOn = this.extractFieldValue($, 'Airs On');
|
|
99
|
+
mediaInfo.director = this.extractFieldValue($, 'Director');
|
|
100
|
+
const network = this.extractFieldValue($, 'Original Network');
|
|
101
|
+
mediaInfo.originalNetwork = this.cleanUpText(network);
|
|
102
|
+
// Trailer
|
|
103
|
+
const trailerIframe = $('div.trailer').find('iframe').attr('src');
|
|
104
|
+
if (trailerIframe) {
|
|
105
|
+
mediaInfo.trailer = {
|
|
106
|
+
id: (_a = trailerIframe.split('embed/')[1]) === null || _a === void 0 ? void 0 : _a.split('?')[0],
|
|
107
|
+
url: trailerIframe,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Episodes
|
|
111
|
+
mediaInfo.episodes = [];
|
|
112
|
+
$('div.content-left > div.block-tab > div > div > ul > li').each((_, el) => {
|
|
113
|
+
var _a;
|
|
114
|
+
const $el = $(el);
|
|
115
|
+
const href = $el.find('a').attr('href');
|
|
116
|
+
(_a = mediaInfo.episodes) === null || _a === void 0 ? void 0 : _a.push({
|
|
117
|
+
id: href === null || href === void 0 ? void 0 : href.split(`${this.baseUrl}/`)[1],
|
|
118
|
+
title: $el.find('h3').text().replace(mediaInfo.title.toString(), '').trim(),
|
|
119
|
+
episode: parseFloat(href === null || href === void 0 ? void 0 : href.split('-episode-')[1]),
|
|
120
|
+
subType: $el.find('span.type').text(),
|
|
121
|
+
releaseDate: $el.find('span.time').text(),
|
|
122
|
+
url: href,
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
mediaInfo.episodes.reverse();
|
|
126
|
+
return mediaInfo;
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
throw new Error(err.message);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Fetch episode sources from a specific server
|
|
134
|
+
* @param episodeId episode id or URL
|
|
135
|
+
* @param server streaming server type
|
|
136
|
+
*/
|
|
137
|
+
this.fetchEpisodeSources = async (episodeId, server = models_1.StreamingServers.AsianLoad) => {
|
|
138
|
+
if (episodeId.startsWith('http')) {
|
|
139
|
+
return this.extractFromServer(episodeId, server);
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
const servers = await this.fetchEpisodeServers(episodeId);
|
|
143
|
+
const serverData = servers.find(s => s.name.toLowerCase() === server.toLowerCase());
|
|
144
|
+
if (!serverData) {
|
|
145
|
+
throw new Error(`Server ${server} not found`);
|
|
146
|
+
}
|
|
147
|
+
return await this.fetchEpisodeSources(serverData.url, server);
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
throw new Error(err.message);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Fetch recently added movies
|
|
155
|
+
* @param page page number (default 1)
|
|
156
|
+
*/
|
|
157
|
+
this.fetchRecentMovies = async (page = 1) => {
|
|
158
|
+
return this.fetchListContent(`${this.baseUrl}/recently-added/movie?page=${page}`, page);
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Fetch recently added TV shows
|
|
162
|
+
* @param page page number (default 1)
|
|
163
|
+
*/
|
|
164
|
+
this.fetchRecentTvShows = async (page = 1) => {
|
|
165
|
+
return this.fetchListContent(`${this.baseUrl}/recently-added/drama?page=${page}`, page, true);
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Fetch popular dramas
|
|
169
|
+
* @param page page number (default 1)
|
|
170
|
+
*/
|
|
171
|
+
this.fetchPopular = async (page = 1) => {
|
|
172
|
+
return this.fetchListContent(`${this.baseUrl}/popular-drama?page=${page}`, page);
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Fetch spotlight/featured content
|
|
176
|
+
*/
|
|
177
|
+
this.fetchSpotlight = async () => {
|
|
178
|
+
try {
|
|
179
|
+
const { data } = await this.client.get(this.baseUrl);
|
|
180
|
+
const $ = (0, cheerio_1.load)(data);
|
|
181
|
+
const results = { results: [] };
|
|
182
|
+
$('div.ls-slide').each((_, el) => {
|
|
183
|
+
const $el = $(el);
|
|
184
|
+
const href = $el.find('a').attr('href');
|
|
185
|
+
results.results.push({
|
|
186
|
+
id: href === null || href === void 0 ? void 0 : href.slice(1),
|
|
187
|
+
title: $el.find('img').attr('title'),
|
|
188
|
+
url: `${this.baseUrl}${href}`,
|
|
189
|
+
cover: $el.find('img').attr('src'),
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
return results;
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
throw new Error(err.message);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Fetch available episode servers
|
|
201
|
+
* @param episodeId episode link or id
|
|
202
|
+
*/
|
|
203
|
+
async fetchEpisodeServers(episodeId) {
|
|
204
|
+
try {
|
|
205
|
+
const url = `${this.baseUrl}/${episodeId}`;
|
|
206
|
+
const { data } = await this.client.get(url);
|
|
207
|
+
const $ = (0, cheerio_1.load)(data);
|
|
208
|
+
const standardServer = $('div.anime_muti_link > ul > li.standard').attr('data-video');
|
|
209
|
+
const serverUrl = this.normalizeUrl(standardServer);
|
|
210
|
+
const { data: serversData } = await this.client.get(serverUrl);
|
|
211
|
+
const $$ = (0, cheerio_1.load)(serversData);
|
|
212
|
+
const serverBaseUrl = new URL(serverUrl).origin;
|
|
213
|
+
const episodeServers = [];
|
|
214
|
+
$$('div#list-server-more ul.list-server-items li.linkserver').each((_, el) => {
|
|
215
|
+
const $el = $$(el);
|
|
216
|
+
let name = $el.attr('data-provider');
|
|
217
|
+
const server = $el.attr('data-video');
|
|
218
|
+
if (name.includes('serverwithtoken')) {
|
|
219
|
+
name = models_1.StreamingServers.AsianLoad;
|
|
220
|
+
}
|
|
221
|
+
if (server) {
|
|
222
|
+
episodeServers.push({
|
|
223
|
+
name: name,
|
|
224
|
+
url: server.startsWith('//')
|
|
225
|
+
? server.replace('//', 'https://')
|
|
226
|
+
: server.startsWith('/')
|
|
227
|
+
? `${serverBaseUrl}${server}`
|
|
228
|
+
: server,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
return episodeServers;
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
throw new Error(err.message);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Fetch list content with pagination
|
|
240
|
+
* @param url URL to fetch
|
|
241
|
+
* @param page current page number
|
|
242
|
+
* @param includeTvShowData whether to include TV show episode data
|
|
243
|
+
*/
|
|
244
|
+
async fetchListContent(url, page, includeTvShowData = false) {
|
|
245
|
+
try {
|
|
246
|
+
const { data } = await this.client.get(url);
|
|
247
|
+
const $ = (0, cheerio_1.load)(data);
|
|
248
|
+
const results = {
|
|
249
|
+
currentPage: page,
|
|
250
|
+
totalPages: page,
|
|
251
|
+
hasNextPage: false,
|
|
252
|
+
results: [],
|
|
253
|
+
};
|
|
254
|
+
$('ul.switch-block.list-episode-item li').each((_, el) => {
|
|
255
|
+
const $el = $(el);
|
|
256
|
+
const href = $el.find('a').attr('href');
|
|
257
|
+
const result = {
|
|
258
|
+
id: href === null || href === void 0 ? void 0 : href.split(`${this.baseUrl}/`)[1],
|
|
259
|
+
title: $el.find('h3.title').text().trim(),
|
|
260
|
+
url: href,
|
|
261
|
+
image: $el.find('img').attr('data-original'),
|
|
262
|
+
};
|
|
263
|
+
if (includeTvShowData) {
|
|
264
|
+
const episodeText = $el.find('span.ep').text().trim();
|
|
265
|
+
result.episodeNumber = parseFloat(episodeText.split(' ')[1]);
|
|
266
|
+
}
|
|
267
|
+
results.results.push(result);
|
|
268
|
+
});
|
|
269
|
+
this.setPaginationInfo($, results, page);
|
|
270
|
+
return results;
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
throw new Error(err.message);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Extract sources from a streaming server
|
|
278
|
+
* @param episodeUrl episode URL
|
|
279
|
+
* @param server streaming server type
|
|
280
|
+
*/
|
|
281
|
+
async extractFromServer(episodeUrl, server) {
|
|
282
|
+
const serverUrl = new URL(episodeUrl);
|
|
283
|
+
switch (server) {
|
|
284
|
+
case models_1.StreamingServers.MixDrop:
|
|
285
|
+
return {
|
|
286
|
+
headers: { Referer: serverUrl.origin },
|
|
287
|
+
sources: await new extractors_1.MixDrop(this.proxyConfig, this.adapter).extract(serverUrl),
|
|
288
|
+
};
|
|
289
|
+
case models_1.StreamingServers.StreamTape:
|
|
290
|
+
return {
|
|
291
|
+
headers: { Referer: serverUrl.origin },
|
|
292
|
+
sources: await new extractors_1.StreamTape(this.proxyConfig, this.adapter).extract(serverUrl),
|
|
293
|
+
};
|
|
294
|
+
case models_1.StreamingServers.StreamWish:
|
|
295
|
+
return {
|
|
296
|
+
headers: { Referer: serverUrl.origin },
|
|
297
|
+
...(await new extractors_1.StreamWish(this.proxyConfig, this.adapter).extract(serverUrl)),
|
|
298
|
+
};
|
|
299
|
+
default:
|
|
300
|
+
throw new Error('Server not supported');
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Set pagination information from navigation element
|
|
305
|
+
* @param $ cheerio instance
|
|
306
|
+
* @param results results object to update
|
|
307
|
+
* @param currentPage current page number
|
|
308
|
+
*/
|
|
309
|
+
setPaginationInfo($, results, currentPage) {
|
|
310
|
+
const navElement = $(DramaCool.NAV_SELECTOR);
|
|
311
|
+
results.hasNextPage = navElement.length > 0 && !navElement.children().last().hasClass('selected');
|
|
312
|
+
const lastPageHref = navElement.children().last().find('a').attr('href');
|
|
313
|
+
if (lastPageHref === null || lastPageHref === void 0 ? void 0 : lastPageHref.includes('page=')) {
|
|
314
|
+
const maxPage = new URLSearchParams(lastPageHref).get('page');
|
|
315
|
+
results.totalPages = maxPage && !isNaN(parseInt(maxPage)) ? parseInt(maxPage) : currentPage + 1;
|
|
316
|
+
}
|
|
317
|
+
else if (results.hasNextPage) {
|
|
318
|
+
results.totalPages = currentPage + 1;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Extract field value from media info page
|
|
323
|
+
* @param $ cheerio instance
|
|
324
|
+
* @param fieldName field name to extract
|
|
325
|
+
*/
|
|
326
|
+
extractFieldValue($, fieldName) {
|
|
327
|
+
const text = $(`div.details div.info p:contains("${fieldName}:")`).text();
|
|
328
|
+
return this.removeContainsFromString(text, fieldName);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Normalize URL by adding https:// prefix if needed
|
|
332
|
+
* @param url URL to normalize
|
|
333
|
+
*/
|
|
334
|
+
normalizeUrl(url) {
|
|
335
|
+
return url.startsWith('//') ? url.replace('//', 'https://') : url;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Generate download link from episode URL
|
|
339
|
+
* @param url episode URL
|
|
340
|
+
*/
|
|
341
|
+
generateDownloadLink(url) {
|
|
342
|
+
return url.replace(/^(https:\/\/[^\/]+)\/[^?]+(\?.+)$/, '$1/download$2');
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Remove field label from extracted text
|
|
346
|
+
* @param str text to clean
|
|
347
|
+
* @param contains field label to remove
|
|
348
|
+
*/
|
|
349
|
+
removeContainsFromString(str, contains) {
|
|
350
|
+
const lowerContains = contains.toLowerCase();
|
|
351
|
+
return str.toLowerCase().replace(/\n/g, '').replace(`${lowerContains}:`, '').trim();
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Clean up semicolon-separated text
|
|
355
|
+
* @param str text to clean
|
|
356
|
+
*/
|
|
357
|
+
cleanUpText(str) {
|
|
358
|
+
return str
|
|
359
|
+
.split(';')
|
|
360
|
+
.map(part => part.trim())
|
|
361
|
+
.filter(part => part.length > 0)
|
|
362
|
+
.join('; ');
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
DramaCool.NAV_SELECTOR = 'ul.pagination';
|
|
366
|
+
exports.default = DramaCool;
|
|
367
|
+
//# sourceMappingURL=dramacool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dramacool.js","sourceRoot":"","sources":["../../../src/providers/movies/dramacool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { MovieParser, TvType, IMovieInfo, IEpisodeServer, StreamingServers, ISource, IMovieResult, ISearch } from '../../models';
|
|
2
|
+
declare class FlixHQ extends MovieParser {
|
|
3
|
+
readonly name = "FlixHQ";
|
|
4
|
+
protected baseUrl: string;
|
|
5
|
+
protected logo: string;
|
|
6
|
+
protected classPath: string;
|
|
7
|
+
supportedTypes: Set<TvType>;
|
|
8
|
+
private static readonly NAV_SELECTOR;
|
|
9
|
+
/**
|
|
10
|
+
* Search for movies or TV shows
|
|
11
|
+
* @param query search query string
|
|
12
|
+
* @param page page number (default 1)
|
|
13
|
+
*/
|
|
14
|
+
search: (query: string, page?: number) => Promise<ISearch<IMovieResult>>;
|
|
15
|
+
/**
|
|
16
|
+
* Fetch detailed media information
|
|
17
|
+
* @param mediaId media link or id
|
|
18
|
+
*/
|
|
19
|
+
fetchMediaInfo: (mediaId: string) => Promise<IMovieInfo>;
|
|
20
|
+
/**
|
|
21
|
+
* Fetch available episode servers
|
|
22
|
+
* @param episodeId episode link or movie id
|
|
23
|
+
* @param mediaId movie link or id
|
|
24
|
+
*/
|
|
25
|
+
fetchEpisodeServers: (episodeId: string, mediaId: string) => Promise<IEpisodeServer[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Fetch episode sources from a specific server
|
|
28
|
+
* @param episodeId episode id or URL
|
|
29
|
+
* @param mediaId media id
|
|
30
|
+
* @param server streaming server type (default UpCloud)
|
|
31
|
+
*/
|
|
32
|
+
fetchEpisodeSources: (episodeId: string, mediaId: string, server?: StreamingServers) => Promise<ISource>;
|
|
33
|
+
/**
|
|
34
|
+
* Fetch recent movies
|
|
35
|
+
*/
|
|
36
|
+
fetchRecentMovies: () => Promise<IMovieResult[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch recent TV shows
|
|
39
|
+
*/
|
|
40
|
+
fetchRecentTvShows: () => Promise<IMovieResult[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Fetch trending movies
|
|
43
|
+
*/
|
|
44
|
+
fetchTrendingMovies: () => Promise<IMovieResult[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Fetch trending TV shows
|
|
47
|
+
*/
|
|
48
|
+
fetchTrendingTvShows: () => Promise<IMovieResult[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Fetch content by country
|
|
51
|
+
* @param country country name
|
|
52
|
+
* @param page page number (default 1)
|
|
53
|
+
*/
|
|
54
|
+
fetchByCountry: (country: string, page?: number) => Promise<ISearch<IMovieResult>>;
|
|
55
|
+
/**
|
|
56
|
+
* Fetch content by genre
|
|
57
|
+
* @param genre genre name
|
|
58
|
+
* @param page page number (default 1)
|
|
59
|
+
*/
|
|
60
|
+
fetchByGenre: (genre: string, page?: number) => Promise<ISearch<IMovieResult>>;
|
|
61
|
+
/**
|
|
62
|
+
* Fetch spotlight/featured content
|
|
63
|
+
*/
|
|
64
|
+
fetchSpotlight: () => Promise<ISearch<IMovieResult>>;
|
|
65
|
+
/**
|
|
66
|
+
* Fetch content from home page by section title
|
|
67
|
+
* @param sectionTitle section title to search for
|
|
68
|
+
* @param isTvShow whether content is TV shows
|
|
69
|
+
*/
|
|
70
|
+
private fetchHomeSection;
|
|
71
|
+
/**
|
|
72
|
+
* Fetch content from home page by div ID
|
|
73
|
+
* @param divId div ID to search for
|
|
74
|
+
* @param isTvShow whether content is TV shows
|
|
75
|
+
*/
|
|
76
|
+
private fetchHomeSectionById;
|
|
77
|
+
/**
|
|
78
|
+
* Fetch content by filter (genre or country)
|
|
79
|
+
* @param filterType filter type (genre or country)
|
|
80
|
+
* @param filterValue filter value
|
|
81
|
+
* @param page page number
|
|
82
|
+
*/
|
|
83
|
+
private fetchByFilter;
|
|
84
|
+
/**
|
|
85
|
+
* Parse media type from text
|
|
86
|
+
* @param typeText type text to parse
|
|
87
|
+
*/
|
|
88
|
+
private parseMediaType;
|
|
89
|
+
}
|
|
90
|
+
export default FlixHQ;
|