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.
Files changed (229) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +245 -0
  3. package/animb.png +0 -0
  4. package/dist/extractors/index.d.ts +11 -0
  5. package/dist/extractors/index.js +27 -0
  6. package/dist/extractors/index.js.map +1 -0
  7. package/dist/extractors/kwik.d.ts +18 -0
  8. package/dist/extractors/kwik.js +117 -0
  9. package/dist/extractors/kwik.js.map +1 -0
  10. package/dist/extractors/lplayer.d.ts +11 -0
  11. package/dist/extractors/lplayer.js +131 -0
  12. package/dist/extractors/lplayer.js.map +1 -0
  13. package/dist/extractors/megacloud.d.ts +10 -0
  14. package/dist/extractors/megacloud.js +44 -0
  15. package/dist/extractors/megacloud.js.map +1 -0
  16. package/dist/extractors/megaup.d.ts +31 -0
  17. package/dist/extractors/megaup.js +79 -0
  18. package/dist/extractors/megaup.js.map +1 -0
  19. package/dist/extractors/mixdrop.d.ts +7 -0
  20. package/dist/extractors/mixdrop.js +32 -0
  21. package/dist/extractors/mixdrop.js.map +1 -0
  22. package/dist/extractors/movearnpre.d.ts +9 -0
  23. package/dist/extractors/movearnpre.js +154 -0
  24. package/dist/extractors/movearnpre.js.map +1 -0
  25. package/dist/extractors/sendvid.d.ts +8 -0
  26. package/dist/extractors/sendvid.js +76 -0
  27. package/dist/extractors/sendvid.js.map +1 -0
  28. package/dist/extractors/sibnet.d.ts +8 -0
  29. package/dist/extractors/sibnet.js +44 -0
  30. package/dist/extractors/sibnet.js.map +1 -0
  31. package/dist/extractors/streamsb.d.ts +11 -0
  32. package/dist/extractors/streamsb.js +65 -0
  33. package/dist/extractors/streamsb.js.map +1 -0
  34. package/dist/extractors/streamtape.d.ts +7 -0
  35. package/dist/extractors/streamtape.js +32 -0
  36. package/dist/extractors/streamtape.js.map +1 -0
  37. package/dist/extractors/streamwish.d.ts +11 -0
  38. package/dist/extractors/streamwish.js +46 -0
  39. package/dist/extractors/streamwish.js.map +1 -0
  40. package/dist/extractors/vidcloud.d.ts +11 -0
  41. package/dist/extractors/vidcloud.js +109 -0
  42. package/dist/extractors/vidcloud.js.map +1 -0
  43. package/dist/extractors/videostr.d.ts +10 -0
  44. package/dist/extractors/videostr.js +44 -0
  45. package/dist/extractors/videostr.js.map +1 -0
  46. package/dist/extractors/vidmoly.d.ts +7 -0
  47. package/dist/extractors/vidmoly.js +75 -0
  48. package/dist/extractors/vidmoly.js.map +1 -0
  49. package/dist/extractors/voe.d.ts +10 -0
  50. package/dist/extractors/voe.js +44 -0
  51. package/dist/extractors/voe.js.map +1 -0
  52. package/dist/index.d.ts +6 -0
  53. package/dist/index.js +23 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/models/anime-parser.d.ts +26 -0
  56. package/dist/models/anime-parser.js +14 -0
  57. package/dist/models/anime-parser.js.map +1 -0
  58. package/dist/models/base-parser.d.ts +10 -0
  59. package/dist/models/base-parser.js +7 -0
  60. package/dist/models/base-parser.js.map +1 -0
  61. package/dist/models/base-provider.d.ts +40 -0
  62. package/dist/models/base-provider.js +45 -0
  63. package/dist/models/base-provider.js.map +1 -0
  64. package/dist/models/base-types.d.ts +22 -0
  65. package/dist/models/base-types.js +3 -0
  66. package/dist/models/base-types.js.map +1 -0
  67. package/dist/models/book-parser.d.ts +4 -0
  68. package/dist/models/book-parser.js +7 -0
  69. package/dist/models/book-parser.js.map +1 -0
  70. package/dist/models/comic-parser.d.ts +4 -0
  71. package/dist/models/comic-parser.js +7 -0
  72. package/dist/models/comic-parser.js.map +1 -0
  73. package/dist/models/index.d.ts +13 -0
  74. package/dist/models/index.js +39 -0
  75. package/dist/models/index.js.map +1 -0
  76. package/dist/models/lightnovel-parser.d.ts +16 -0
  77. package/dist/models/lightnovel-parser.js +7 -0
  78. package/dist/models/lightnovel-parser.js.map +1 -0
  79. package/dist/models/manga-parser.d.ts +17 -0
  80. package/dist/models/manga-parser.js +10 -0
  81. package/dist/models/manga-parser.js.map +1 -0
  82. package/dist/models/movie-parser.d.ts +26 -0
  83. package/dist/models/movie-parser.js +7 -0
  84. package/dist/models/movie-parser.js.map +1 -0
  85. package/dist/models/news-parser.d.ts +4 -0
  86. package/dist/models/news-parser.js +7 -0
  87. package/dist/models/news-parser.js.map +1 -0
  88. package/dist/models/proxy.d.ts +25 -0
  89. package/dist/models/proxy.js +83 -0
  90. package/dist/models/proxy.js.map +1 -0
  91. package/dist/models/type-objects.d.ts +48 -0
  92. package/dist/models/type-objects.js +57 -0
  93. package/dist/models/type-objects.js.map +1 -0
  94. package/dist/models/types.d.ts +515 -0
  95. package/dist/models/types.js +118 -0
  96. package/dist/models/types.js.map +1 -0
  97. package/dist/models/video-extractor.d.ts +19 -0
  98. package/dist/models/video-extractor.js +10 -0
  99. package/dist/models/video-extractor.js.map +1 -0
  100. package/dist/providers/anime/animekai.d.ts +94 -0
  101. package/dist/providers/anime/animekai.js +661 -0
  102. package/dist/providers/anime/animekai.js.map +1 -0
  103. package/dist/providers/anime/animepahe.d.ts +41 -0
  104. package/dist/providers/anime/animepahe.js +270 -0
  105. package/dist/providers/anime/animepahe.js.map +1 -0
  106. package/dist/providers/anime/animesama.d.ts +25 -0
  107. package/dist/providers/anime/animesama.js +504 -0
  108. package/dist/providers/anime/animesama.js.map +1 -0
  109. package/dist/providers/anime/animesaturn.d.ts +32 -0
  110. package/dist/providers/anime/animesaturn.js +298 -0
  111. package/dist/providers/anime/animesaturn.js.map +1 -0
  112. package/dist/providers/anime/animeunity.d.ts +27 -0
  113. package/dist/providers/anime/animeunity.js +157 -0
  114. package/dist/providers/anime/animeunity.js.map +1 -0
  115. package/dist/providers/anime/hianime.d.ts +150 -0
  116. package/dist/providers/anime/hianime.js +825 -0
  117. package/dist/providers/anime/hianime.js.map +1 -0
  118. package/dist/providers/anime/index.d.ts +17 -0
  119. package/dist/providers/anime/index.js +22 -0
  120. package/dist/providers/anime/index.js.map +1 -0
  121. package/dist/providers/anime/kickassanime.d.ts +65 -0
  122. package/dist/providers/anime/kickassanime.js +582 -0
  123. package/dist/providers/anime/kickassanime.js.map +1 -0
  124. package/dist/providers/books/index.d.ts +2 -0
  125. package/dist/providers/books/index.js +4 -0
  126. package/dist/providers/books/index.js.map +1 -0
  127. package/dist/providers/comics/getComics.d.ts +9 -0
  128. package/dist/providers/comics/getComics.js +54 -0
  129. package/dist/providers/comics/getComics.js.map +1 -0
  130. package/dist/providers/comics/index.d.ts +5 -0
  131. package/dist/providers/comics/index.js +8 -0
  132. package/dist/providers/comics/index.js.map +1 -0
  133. package/dist/providers/index.d.ts +9 -0
  134. package/dist/providers/index.js +23 -0
  135. package/dist/providers/index.js.map +1 -0
  136. package/dist/providers/light-novels/index.d.ts +5 -0
  137. package/dist/providers/light-novels/index.js +8 -0
  138. package/dist/providers/light-novels/index.js.map +1 -0
  139. package/dist/providers/light-novels/novelupdates.d.ts +26 -0
  140. package/dist/providers/light-novels/novelupdates.js +155 -0
  141. package/dist/providers/light-novels/novelupdates.js.map +1 -0
  142. package/dist/providers/manga/asurascans.d.ts +16 -0
  143. package/dist/providers/manga/asurascans.js +143 -0
  144. package/dist/providers/manga/asurascans.js.map +1 -0
  145. package/dist/providers/manga/comick.d.ts +36 -0
  146. package/dist/providers/manga/comick.js +141 -0
  147. package/dist/providers/manga/comick.js.map +1 -0
  148. package/dist/providers/manga/comix.d.ts +36 -0
  149. package/dist/providers/manga/comix.js +265 -0
  150. package/dist/providers/manga/comix.js.map +1 -0
  151. package/dist/providers/manga/index.d.ts +21 -0
  152. package/dist/providers/manga/index.js +26 -0
  153. package/dist/providers/manga/index.js.map +1 -0
  154. package/dist/providers/manga/mangadex.d.ts +26 -0
  155. package/dist/providers/manga/mangadex.js +301 -0
  156. package/dist/providers/manga/mangadex.js.map +1 -0
  157. package/dist/providers/manga/mangahere.d.ts +29 -0
  158. package/dist/providers/manga/mangahere.js +376 -0
  159. package/dist/providers/manga/mangahere.js.map +1 -0
  160. package/dist/providers/manga/mangakakalot.d.ts +56 -0
  161. package/dist/providers/manga/mangakakalot.js +461 -0
  162. package/dist/providers/manga/mangakakalot.js.map +1 -0
  163. package/dist/providers/manga/mangapill.d.ts +15 -0
  164. package/dist/providers/manga/mangapill.js +104 -0
  165. package/dist/providers/manga/mangapill.js.map +1 -0
  166. package/dist/providers/manga/mangareader.d.ts +15 -0
  167. package/dist/providers/manga/mangareader.js +110 -0
  168. package/dist/providers/manga/mangareader.js.map +1 -0
  169. package/dist/providers/manga/weebcentral.d.ts +12 -0
  170. package/dist/providers/manga/weebcentral.js +169 -0
  171. package/dist/providers/manga/weebcentral.js.map +1 -0
  172. package/dist/providers/meta/anilist.d.ts +206 -0
  173. package/dist/providers/meta/anilist.js +2025 -0
  174. package/dist/providers/meta/anilist.js.map +1 -0
  175. package/dist/providers/meta/index.d.ts +9 -0
  176. package/dist/providers/meta/index.js +10 -0
  177. package/dist/providers/meta/index.js.map +1 -0
  178. package/dist/providers/meta/mal.d.ts +39 -0
  179. package/dist/providers/meta/mal.js +529 -0
  180. package/dist/providers/meta/mal.js.map +1 -0
  181. package/dist/providers/meta/tmdb.d.ts +48 -0
  182. package/dist/providers/meta/tmdb.js +364 -0
  183. package/dist/providers/meta/tmdb.js.map +1 -0
  184. package/dist/providers/movies/dramacool.d.ts +98 -0
  185. package/dist/providers/movies/dramacool.js +367 -0
  186. package/dist/providers/movies/dramacool.js.map +1 -0
  187. package/dist/providers/movies/flixhq.d.ts +90 -0
  188. package/dist/providers/movies/flixhq.js +438 -0
  189. package/dist/providers/movies/flixhq.js.map +1 -0
  190. package/dist/providers/movies/goku.d.ts +80 -0
  191. package/dist/providers/movies/goku.js +369 -0
  192. package/dist/providers/movies/goku.js.map +1 -0
  193. package/dist/providers/movies/himovies.d.ts +102 -0
  194. package/dist/providers/movies/himovies.js +445 -0
  195. package/dist/providers/movies/himovies.js.map +1 -0
  196. package/dist/providers/movies/index.d.ts +17 -0
  197. package/dist/providers/movies/index.js +22 -0
  198. package/dist/providers/movies/index.js.map +1 -0
  199. package/dist/providers/movies/netmirror.d.ts +27 -0
  200. package/dist/providers/movies/netmirror.js +259 -0
  201. package/dist/providers/movies/netmirror.js.map +1 -0
  202. package/dist/providers/movies/sflix.d.ts +106 -0
  203. package/dist/providers/movies/sflix.js +490 -0
  204. package/dist/providers/movies/sflix.js.map +1 -0
  205. package/dist/providers/movies/turkish123.d.ts +32 -0
  206. package/dist/providers/movies/turkish123.js +141 -0
  207. package/dist/providers/movies/turkish123.js.map +1 -0
  208. package/dist/providers/news/animenewsnetwork.d.ts +30 -0
  209. package/dist/providers/news/animenewsnetwork.js +105 -0
  210. package/dist/providers/news/animenewsnetwork.js.map +1 -0
  211. package/dist/providers/news/index.d.ts +5 -0
  212. package/dist/providers/news/index.js +8 -0
  213. package/dist/providers/news/index.js.map +1 -0
  214. package/dist/providers/others/index.d.ts +0 -0
  215. package/dist/providers/others/index.js +2 -0
  216. package/dist/providers/others/index.js.map +1 -0
  217. package/dist/utils/index.d.ts +3 -0
  218. package/dist/utils/index.js +33 -0
  219. package/dist/utils/index.js.map +1 -0
  220. package/dist/utils/providers-list.d.ts +11 -0
  221. package/dist/utils/providers-list.js +40 -0
  222. package/dist/utils/providers-list.js.map +1 -0
  223. package/dist/utils/queries.d.ts +13 -0
  224. package/dist/utils/queries.js +31 -0
  225. package/dist/utils/queries.js.map +1 -0
  226. package/dist/utils/utils.d.ts +32 -0
  227. package/dist/utils/utils.js +324 -0
  228. package/dist/utils/utils.js.map +1 -0
  229. 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;