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,369 @@
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 Goku extends models_1.MovieParser {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.name = 'Goku';
10
+ this.baseUrl = 'https://goku.sx';
11
+ this.logo = 'https://img.goku.sx/xxrz/400x400/100/9c/e7/9ce7510639c4204bfe43904fad8f361f/9ce7510639c4204bfe43904fad8f361f.png';
12
+ this.classPath = 'MOVIES.Goku';
13
+ this.supportedTypes = new Set([models_1.TvType.MOVIE, models_1.TvType.TVSERIES]);
14
+ /**
15
+ * Search for movies or TV shows
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?keyword=${sanitizedQuery}&page=${page}`);
23
+ const $ = (0, cheerio_1.load)(data);
24
+ const searchResult = {
25
+ currentPage: page,
26
+ hasNextPage: $('.page-link').length > 0 && $('.page-link').last().attr('title') === 'Last',
27
+ results: [],
28
+ };
29
+ $('div.section-items > div.item').each((_, el) => {
30
+ var _a;
31
+ const $el = $(el);
32
+ const releaseDate = $el.find('div.movie-info div.info-split > div:nth-child(1)').text();
33
+ const rating = $el.find('div.movie-info div.info-split div.is-rated').text();
34
+ const href = $el.find('.is-watch > a').attr('href');
35
+ searchResult.results.push({
36
+ id: (_a = href === null || href === void 0 ? void 0 : href.replace('/', '')) !== null && _a !== void 0 ? _a : '',
37
+ title: $el.find('div.movie-info h3.movie-name').text(),
38
+ url: `${this.baseUrl}${href}`,
39
+ image: $el.find('div.movie-thumbnail > a > img').attr('src'),
40
+ releaseDate: isNaN(parseInt(releaseDate)) ? undefined : releaseDate,
41
+ rating: isNaN(parseFloat(rating)) ? undefined : parseFloat(rating),
42
+ type: (href === null || href === void 0 ? void 0 : href.includes('watch-series')) ? models_1.TvType.TVSERIES : models_1.TvType.MOVIE,
43
+ });
44
+ });
45
+ return searchResult;
46
+ }
47
+ catch (err) {
48
+ throw new Error(err.message);
49
+ }
50
+ };
51
+ /**
52
+ * Fetch detailed media information
53
+ * @param mediaId media link or id
54
+ */
55
+ this.fetchMediaInfo = async (mediaId) => {
56
+ const cleanId = mediaId.startsWith(this.baseUrl) ? mediaId.replace(this.baseUrl + '/', '') : mediaId;
57
+ try {
58
+ const { data } = await this.client.get(`${this.baseUrl}/${cleanId}`);
59
+ const $ = (0, cheerio_1.load)(data);
60
+ const mediaType = cleanId.includes('watch-series') ? models_1.TvType.TVSERIES : models_1.TvType.MOVIE;
61
+ const movieInfo = {
62
+ id: cleanId,
63
+ title: $('div.movie-detail > div.is-name > h3').text(),
64
+ url: `${this.baseUrl}/${cleanId}`,
65
+ image: $('.movie-thumbnail > img').attr('src'),
66
+ description: $('.is-description > .text-cut').text(),
67
+ type: mediaType,
68
+ genres: $("div.name:contains('Genres:')")
69
+ .siblings()
70
+ .find('a')
71
+ .map((_, el) => $(el).text())
72
+ .get(),
73
+ casts: $("div.name:contains('Cast:')")
74
+ .siblings()
75
+ .find('a')
76
+ .map((_, el) => $(el).text())
77
+ .get(),
78
+ production: $("div.name:contains('Production:')")
79
+ .siblings()
80
+ .find('a')
81
+ .map((_, el) => $(el).text())
82
+ .get()
83
+ .join(),
84
+ duration: $("div.name:contains('Duration:')").siblings().text().split('\n').join('').trim(),
85
+ };
86
+ // Fetch episodes
87
+ if (mediaType === models_1.TvType.TVSERIES) {
88
+ movieInfo.episodes = await this.fetchTvSeriesEpisodes(cleanId);
89
+ }
90
+ else {
91
+ movieInfo.episodes = [];
92
+ $('meta').each((_, el) => {
93
+ var _a, _b, _c;
94
+ const $el = $(el);
95
+ if ($el.attr('property') === 'og:url') {
96
+ (_a = movieInfo.episodes) === null || _a === void 0 ? void 0 : _a.push({
97
+ id: (_c = (_b = $el.attr('content')) === null || _b === void 0 ? void 0 : _b.split('/').pop()) !== null && _c !== void 0 ? _c : '',
98
+ title: movieInfo.title.toString(),
99
+ url: $el.attr('content'),
100
+ });
101
+ }
102
+ });
103
+ }
104
+ return movieInfo;
105
+ }
106
+ catch (err) {
107
+ throw new Error(err.message);
108
+ }
109
+ };
110
+ /**
111
+ * Fetch available episode servers
112
+ * @param episodeId episode link or movie id
113
+ * @param mediaId movie link or id
114
+ */
115
+ this.fetchEpisodeServers = async (episodeId, mediaId) => {
116
+ try {
117
+ const { data } = await this.client.get(`${this.baseUrl}/ajax/movie/episode/servers/${episodeId}`);
118
+ const $ = (0, cheerio_1.load)(data);
119
+ const servers = $('.dropdown-menu > a')
120
+ .map((_, el) => {
121
+ var _a;
122
+ const $el = $(el);
123
+ return {
124
+ name: $el.text(),
125
+ id: (_a = $el.attr('data-id')) !== null && _a !== void 0 ? _a : '',
126
+ };
127
+ })
128
+ .get();
129
+ const episodeServers = [];
130
+ for (const server of servers) {
131
+ const { data } = await this.client.get(`${this.baseUrl}/ajax/movie/episode/server/sources/${server.id}`);
132
+ episodeServers.push({
133
+ name: server.name,
134
+ url: data.data.link,
135
+ });
136
+ }
137
+ return episodeServers;
138
+ }
139
+ catch (err) {
140
+ throw new Error(err.message);
141
+ }
142
+ };
143
+ /**
144
+ * Fetch episode sources from a specific server
145
+ * @param episodeId episode id or URL
146
+ * @param mediaId media id
147
+ * @param server streaming server type (default UpCloud)
148
+ */
149
+ this.fetchEpisodeSources = async (episodeId, mediaId, server = models_1.StreamingServers.UpCloud) => {
150
+ if (episodeId.startsWith('http')) {
151
+ const serverUrl = new URL(episodeId);
152
+ switch (server) {
153
+ case models_1.StreamingServers.MixDrop:
154
+ return {
155
+ headers: { Referer: serverUrl.href },
156
+ sources: await new extractors_1.MixDrop(this.proxyConfig, this.adapter).extract(serverUrl),
157
+ };
158
+ case models_1.StreamingServers.VidCloud:
159
+ return {
160
+ headers: { Referer: serverUrl.href },
161
+ ...(await new extractors_1.VidCloud(this.proxyConfig, this.adapter).extract(serverUrl)),
162
+ };
163
+ case models_1.StreamingServers.UpCloud:
164
+ return {
165
+ headers: { Referer: serverUrl.href },
166
+ ...(await new extractors_1.VidCloud(this.proxyConfig, this.adapter).extract(serverUrl)),
167
+ };
168
+ default:
169
+ return {
170
+ headers: { Referer: serverUrl.href },
171
+ sources: await new extractors_1.MixDrop(this.proxyConfig, this.adapter).extract(serverUrl),
172
+ };
173
+ }
174
+ }
175
+ try {
176
+ const servers = await this.fetchEpisodeServers(episodeId, mediaId);
177
+ const selectedServer = servers.find(s => s.name.toLowerCase() === server.toLowerCase());
178
+ if (!selectedServer) {
179
+ throw new Error(`Server ${server} not found`);
180
+ }
181
+ return await this.fetchEpisodeSources(selectedServer.url, mediaId, server);
182
+ }
183
+ catch (err) {
184
+ throw new Error(err.message);
185
+ }
186
+ };
187
+ /**
188
+ * Fetch recent movies
189
+ */
190
+ this.fetchRecentMovies = async () => {
191
+ return this.fetchHomeSection('.section-last', true);
192
+ };
193
+ /**
194
+ * Fetch recent TV shows
195
+ */
196
+ this.fetchRecentTvShows = async () => {
197
+ return this.fetchHomeSection('.section-last', false, true);
198
+ };
199
+ /**
200
+ * Fetch trending movies
201
+ */
202
+ this.fetchTrendingMovies = async () => {
203
+ return this.fetchHomeSection('#trending-movies', true);
204
+ };
205
+ /**
206
+ * Fetch trending TV shows
207
+ */
208
+ this.fetchTrendingTvShows = async () => {
209
+ return this.fetchHomeSection('#trending-series', false, true);
210
+ };
211
+ /**
212
+ * Fetch content by country
213
+ * @param country country name
214
+ * @param page page number (default 1)
215
+ */
216
+ this.fetchByCountry = async (country, page = 1) => {
217
+ return this.fetchByFilter('country', country, page);
218
+ };
219
+ /**
220
+ * Fetch content by genre
221
+ * @param genre genre name
222
+ * @param page page number (default 1)
223
+ */
224
+ this.fetchByGenre = async (genre, page = 1) => {
225
+ return this.fetchByFilter('genre', genre, page);
226
+ };
227
+ }
228
+ /**
229
+ * Fetch TV series episodes for all seasons
230
+ * @param mediaId media unique identifier
231
+ */
232
+ async fetchTvSeriesEpisodes(mediaId) {
233
+ const { data } = await this.client.get(`${this.baseUrl}/ajax/movie/seasons/${mediaId.split('-').pop()}`);
234
+ const $ = (0, cheerio_1.load)(data);
235
+ const seasonIds = $('.dropdown-menu > a')
236
+ .map((_, el) => {
237
+ const $el = $(el);
238
+ const seasonText = $el.text().replace('Season', '').trim();
239
+ return {
240
+ id: $el.attr('data-id'),
241
+ season: isNaN(parseInt(seasonText)) ? undefined : parseInt(seasonText),
242
+ };
243
+ })
244
+ .get();
245
+ const episodes = [];
246
+ for (const season of seasonIds) {
247
+ const { data: seasonData } = await this.client.get(`${this.baseUrl}/ajax/movie/season/episodes/${season.id}`);
248
+ const $$ = (0, cheerio_1.load)(seasonData);
249
+ $$('.item').each((_, el) => {
250
+ var _a, _b, _c, _d;
251
+ const $$el = $$(el);
252
+ const episodeText = (_b = (_a = $$el.find('a').text()) === null || _a === void 0 ? void 0 : _a.split(':')[0].trim().substring(3)) !== null && _b !== void 0 ? _b : '';
253
+ episodes.push({
254
+ id: (_c = $$el.find('a').attr('data-id')) !== null && _c !== void 0 ? _c : '',
255
+ title: (_d = $$el.find('a').attr('title')) !== null && _d !== void 0 ? _d : '',
256
+ number: parseInt(episodeText),
257
+ season: season.season,
258
+ url: $$el.find('a').attr('href'),
259
+ });
260
+ });
261
+ }
262
+ return episodes;
263
+ }
264
+ /**
265
+ * Fetch content from home page by section
266
+ * @param selector CSS selector for section
267
+ * @param isMovie whether content is movies
268
+ * @param useLast whether to use last() selector
269
+ */
270
+ async fetchHomeSection(selector, isMovie = false, useLast = false) {
271
+ try {
272
+ const { data } = await this.client.get(`${this.baseUrl}/home`);
273
+ const $ = (0, cheerio_1.load)(data);
274
+ let section = $(selector);
275
+ if (useLast) {
276
+ section = section.last();
277
+ }
278
+ else if (selector === '.section-last' && isMovie) {
279
+ section = section.first();
280
+ }
281
+ return section
282
+ .find('.item')
283
+ .map((_, el) => {
284
+ var _a, _b;
285
+ const $el = $(el);
286
+ const href = $el.find('.is-watch > a').attr('href');
287
+ const result = {
288
+ id: href === null || href === void 0 ? void 0 : href.replace('/', ''),
289
+ title: $el.find('.movie-name').text(),
290
+ url: `${this.baseUrl}${href}`,
291
+ image: $el.find('.movie-thumbnail > a > img').attr('src'),
292
+ type: (href === null || href === void 0 ? void 0 : href.includes(isMovie ? 'watch-movie' : 'watch-series'))
293
+ ? isMovie
294
+ ? models_1.TvType.MOVIE
295
+ : models_1.TvType.TVSERIES
296
+ : isMovie
297
+ ? models_1.TvType.MOVIE
298
+ : models_1.TvType.TVSERIES,
299
+ };
300
+ if (isMovie) {
301
+ const releaseDate = $el.find('.info-split').children().first().text();
302
+ result.releaseDate = isNaN(parseInt(releaseDate)) ? undefined : releaseDate;
303
+ result.duration = $el.find('.info-split > div:nth-child(3)').text();
304
+ }
305
+ else {
306
+ const seasonEpisode = $el.find('.info-split > div:nth-child(2)').text();
307
+ const parts = seasonEpisode.split('/');
308
+ result.season = (_a = parts[0]) === null || _a === void 0 ? void 0 : _a.trim();
309
+ result.latestEpisode = (_b = parts[1]) === null || _b === void 0 ? void 0 : _b.trim();
310
+ }
311
+ return result;
312
+ })
313
+ .get();
314
+ }
315
+ catch (err) {
316
+ throw new Error(err.message);
317
+ }
318
+ }
319
+ /**
320
+ * Fetch content by filter (genre or country)
321
+ * @param filterType filter type (genre or country)
322
+ * @param filterValue filter value
323
+ * @param page page number
324
+ */
325
+ async fetchByFilter(filterType, filterValue, page) {
326
+ try {
327
+ const url = filterType === 'country'
328
+ ? `${this.baseUrl}/country/${filterValue}/?page=${page}`
329
+ : `${this.baseUrl}/genre/${filterValue}?page=${page}`;
330
+ const { data } = await this.client.get(url);
331
+ const $ = (0, cheerio_1.load)(data);
332
+ const result = {
333
+ currentPage: page,
334
+ hasNextPage: $('.page-link').length > 0 && $('.page-link').last().attr('title') === 'Last',
335
+ results: [],
336
+ };
337
+ $('div.section-items.section-items-default > div.item').each((_, el) => {
338
+ var _a, _b, _c, _d;
339
+ const $el = $(el);
340
+ const href = $el.find('div.movie-info > a').attr('href');
341
+ const mediaType = (href === null || href === void 0 ? void 0 : href.includes('movie/')) ? models_1.TvType.MOVIE : models_1.TvType.TVSERIES;
342
+ const resultItem = {
343
+ id: (_b = (_a = $el.find('div.movie-thumbnail > a').attr('href')) === null || _a === void 0 ? void 0 : _a.slice(1)) !== null && _b !== void 0 ? _b : '',
344
+ title: $el.find('div.movie-info > a > h3.movie-name').text().trim(),
345
+ url: `${this.baseUrl}${href}`,
346
+ image: $el.find('div.movie-thumbnail > a > img').attr('src'),
347
+ type: mediaType,
348
+ };
349
+ if (mediaType === models_1.TvType.TVSERIES) {
350
+ const seasonEpisode = $el.find('div.movie-info > div.info-split > div:nth-child(2)').text();
351
+ const parts = seasonEpisode.split('/');
352
+ resultItem.season = (_c = parts[0]) === null || _c === void 0 ? void 0 : _c.trim();
353
+ resultItem.latestEpisode = (_d = parts[1]) === null || _d === void 0 ? void 0 : _d.trim();
354
+ }
355
+ else {
356
+ resultItem.releaseDate = $el.find('div.movie-info > div.info-split > div:nth-child(1)').text();
357
+ resultItem.duration = $el.find('div.movie-info > div.info-split > div:nth-child(3)').text();
358
+ }
359
+ result.results.push(resultItem);
360
+ });
361
+ return result;
362
+ }
363
+ catch (err) {
364
+ throw new Error(err.message);
365
+ }
366
+ }
367
+ }
368
+ exports.default = Goku;
369
+ //# sourceMappingURL=goku.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goku.js","sourceRoot":"","sources":["../../../src/providers/movies/goku.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { MovieParser, TvType, IMovieInfo, IEpisodeServer, StreamingServers, ISource, IMovieResult, ISearch } from '../../models';
2
+ declare class HiMovies extends MovieParser {
3
+ readonly name = "HiMovies";
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 and 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 information about a movie or TV show
17
+ * @param mediaId media link or id
18
+ */
19
+ fetchMediaInfo: (mediaId: string) => Promise<IMovieInfo>;
20
+ /**
21
+ * Fetch available streaming servers for an episode
22
+ * @param episodeId episode link or id
23
+ * @param mediaId movie/tv show link or id
24
+ */
25
+ fetchEpisodeServers: (episodeId: string, mediaId: string) => Promise<IEpisodeServer[]>;
26
+ /**
27
+ * Fetch streaming sources for an episode
28
+ * @param episodeId episode id or full URL
29
+ * @param mediaId media id
30
+ * @param server streaming server type (default: MegaCloud)
31
+ */
32
+ fetchEpisodeSources: (episodeId: string, mediaId: string, server?: StreamingServers) => Promise<ISource>;
33
+ /**
34
+ * Fetch recent movies from home page
35
+ */
36
+ fetchRecentMovies: () => Promise<IMovieResult[]>;
37
+ /**
38
+ * Fetch recent TV shows from home page
39
+ */
40
+ fetchRecentTvShows: () => Promise<IMovieResult[]>;
41
+ /**
42
+ * Fetch trending movies from home page
43
+ */
44
+ fetchTrendingMovies: () => Promise<IMovieResult[]>;
45
+ /**
46
+ * Fetch trending TV shows from home page
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 TV series episodes for all seasons
63
+ * @param uid unique identifier
64
+ */
65
+ private fetchTvSeriesEpisodes;
66
+ /**
67
+ * Parse recommendations from media info page
68
+ * @param $ cheerio instance
69
+ */
70
+ private parseRecommendations;
71
+ /**
72
+ * Fetch content from home page by section title
73
+ * @param sectionTitle section title to search for
74
+ * @param isTvShow whether content is TV shows
75
+ */
76
+ private fetchHomeSection;
77
+ /**
78
+ * Fetch content from home page by div ID
79
+ * @param divId div ID to search for
80
+ * @param isTvShow whether content is TV shows
81
+ */
82
+ private fetchHomeSectionById;
83
+ /**
84
+ * Fetch content by filter (genre or country)
85
+ * @param filterType filter type (genre or country)
86
+ * @param filterValue filter value
87
+ * @param page page number
88
+ */
89
+ private fetchByFilter;
90
+ /**
91
+ * Extract sources from streaming server
92
+ * @param episodeUrl episode URL
93
+ * @param server streaming server type
94
+ */
95
+ private extractFromServer;
96
+ /**
97
+ * Parse media type from text
98
+ * @param typeText type text to parse
99
+ */
100
+ private parseMediaType;
101
+ }
102
+ export default HiMovies;